[PATCH alsa-utils] alsactl: Add --quiet option to suppress alsa-lib error messages

Takashi Iwai tiwai at suse.de
Wed Oct 27 16:40:08 CEST 2021


alsactl prints error messages from alsa-lib as is, and it's rather
annoying to see the error messages like

  alsactl[xxx]: alsa-lib parser.c:242:(error_node) UCM is not supported for this HDA model (HDA Intel PCH...)
  alsactl[xxx]: alsa-lib main.c:1405:(snd_use_case_mgr_open) error: failed to import hw:0 use case configuration -6

that are recorded in the syslog at each boot.

This patch adds --quiet (or -q) option to suppress those error
messages from alsa-lib, and applies to the systemd services as
default.

Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 alsactl/alsa-restore.service.in | 4 ++--
 alsactl/alsa-state.service.in   | 4 ++--
 alsactl/alsactl.1               | 4 ++++
 alsactl/alsactl.c               | 5 +++++
 alsactl/alsactl.h               | 2 ++
 alsactl/utils.c                 | 2 ++
 6 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in
index 80fd5fd48203..06bc21c355de 100644
--- a/alsactl/alsa-restore.service.in
+++ b/alsactl/alsa-restore.service.in
@@ -11,5 +11,5 @@ ConditionPathExistsGlob=/dev/snd/control*
 [Service]
 Type=oneshot
 RemainAfterExit=true
-ExecStart=- at sbindir@/alsactl restore
-ExecStop=- at sbindir@/alsactl store
+ExecStart=- at sbindir@/alsactl -q restore
+ExecStop=- at sbindir@/alsactl -q store
diff --git a/alsactl/alsa-state.service.in b/alsactl/alsa-state.service.in
index 5a8fe5eeed7e..6b6e704ad8e5 100644
--- a/alsactl/alsa-state.service.in
+++ b/alsactl/alsa-state.service.in
@@ -9,5 +9,5 @@ ConditionPathExists=@daemonswitch@
 
 [Service]
 Type=simple
-ExecStart=- at sbindir@/alsactl -s -n 19 -c rdaemon
-ExecStop=- at sbindir@/alsactl -s kill save_and_quit
+ExecStart=- at sbindir@/alsactl -q -s -n 19 -c rdaemon
+ExecStop=- at sbindir@/alsactl -q -s kill save_and_quit
diff --git a/alsactl/alsactl.1 b/alsactl/alsactl.1
index 8296663a7c2d..0a0b4597a137 100644
--- a/alsactl/alsactl.1
+++ b/alsactl/alsactl.1
@@ -94,6 +94,10 @@ Use debug mode: a bit more verbose.
 \fI\-v, \-\-version\fP
 Print alsactl version number.
 
+.TP
+\fI\-q, \-\-quiet\fP
+Suppress error messages from alsa-lib.
+
 .TP
 \fI\-f, \-\-file\fP
 Select the configuration file to use. The default is /var/lib/alsa/asound.state.
diff --git a/alsactl/alsactl.c b/alsactl/alsactl.c
index 05738fb6b35f..e3bef2c69558 100644
--- a/alsactl/alsactl.c
+++ b/alsactl/alsactl.c
@@ -52,6 +52,7 @@ int use_syslog = 0;
 char *command;
 char *statefile = NULL;
 char *lockfile = SYS_LOCKFILE;
+int verbose_error = 1;
 
 #define TITLE	0x0100
 #define HEADER	0x0200
@@ -74,6 +75,7 @@ static struct arg args[] = {
 { 'h', "help", "this help" },
 { 'd', "debug", "debug mode" },
 { 'v', "version", "print version of this program" },
+{ 'q', "quiet", "suppress errors from alsa-lib" },
 { HEADER, NULL, "Available state options:" },
 { FILEARG | 'f', "file", "configuration file (default " SYS_ASOUNDRC ")" },
 { FILEARG | 'a', "config-dir", "boot / hotplug configuration directory (default " SYS_ASOUND_DIR ")" },
@@ -370,6 +372,9 @@ int main(int argc, char *argv[])
 			printf("alsactl version " SND_UTIL_VERSION_STR "\n");
 			res = EXIT_SUCCESS;
 			goto out;
+		case 'q':
+			verbose_error = 0;
+			break;
 		case '?':		// error msg already printed
 			help();
 			res = EXIT_FAILURE;
diff --git a/alsactl/alsactl.h b/alsactl/alsactl.h
index bbdf6c88baeb..f9c25931c924 100644
--- a/alsactl/alsactl.h
+++ b/alsactl/alsactl.h
@@ -83,3 +83,5 @@ static inline int hextodigit(int c)
 }
 
 #define ARRAY_SIZE(a) (sizeof (a) / sizeof (a)[0])
+
+extern int verbose_error;
diff --git a/alsactl/utils.c b/alsactl/utils.c
index a50797259f21..dfb06e1a4a15 100644
--- a/alsactl/utils.c
+++ b/alsactl/utils.c
@@ -182,6 +182,8 @@ void error_handler(const char *file, int line, const char *function, int err, co
 	char buf[2048];
 	va_list arg;
 
+	if (!verbose_error)
+		return;
 	va_start(arg, fmt);
 	vsnprintf(buf, sizeof(buf), fmt, arg);
 	va_end(arg);
-- 
2.31.1



More information about the Alsa-devel mailing list