mirror of
https://github.com/alsa-project/alsa-utils
synced 2024-11-08 23:15:41 +01:00
alsactl: Add -g,--ignore option to ignore 'No soundcards found' error
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
0a8e8d581e
commit
f63ff476f3
4 changed files with 26 additions and 6 deletions
|
@ -50,6 +50,11 @@ Select the configuration file to use. The default is /etc/asound.state.
|
|||
Used with restore command. Try to restore the matching control elements
|
||||
as much as possible. This option is set as default now.
|
||||
|
||||
.TP
|
||||
\fI\-g, \-\-ignore\fP
|
||||
Used with store and restore commands. Do not show 'No soundcards found'
|
||||
and do not set an error exit code when soundcards are not installed.
|
||||
|
||||
.TP
|
||||
\fI\-P, \-\-pedantic\fP
|
||||
Used with restore command. Don't restore mismatching control elements.
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
|
||||
int debugflag = 0;
|
||||
int force_restore = 1;
|
||||
int ignore_nocards = 0;
|
||||
char *command;
|
||||
char *statefile = NULL;
|
||||
|
||||
|
@ -48,7 +49,8 @@ static void help(void)
|
|||
printf(" -f,--file # configuration file (default " SYS_ASOUNDRC ")\n");
|
||||
printf(" -F,--force try to restore the matching controls as much as possible\n");
|
||||
printf(" (default mode)\n");
|
||||
printf(" -P,--pedantic don't restore mismatching controls (old default)\n");
|
||||
printf(" -g,--ignore ignore 'No soundcards found' error\n");
|
||||
printf(" -P,--pedantic do not restore mismatching controls (old default)\n");
|
||||
printf(" -r,--runstate # save restore and init state to this file (only errors)\n");
|
||||
printf(" default settings is 'no file set'\n");
|
||||
printf(" -R,--remove remove runstate file at first, otherwise append errors\n");
|
||||
|
@ -75,6 +77,7 @@ int main(int argc, char *argv[])
|
|||
{"env", 1, NULL, 'E'},
|
||||
{"initfile", 1, NULL, 'i'},
|
||||
{"force", 0, NULL, 'F'},
|
||||
{"ignore", 0, NULL, 'g'},
|
||||
{"pedantic", 0, NULL, 'P'},
|
||||
{"runstate", 0, NULL, 'r'},
|
||||
{"remove", 0, NULL, 'R'},
|
||||
|
@ -99,7 +102,7 @@ int main(int argc, char *argv[])
|
|||
while (1) {
|
||||
int c;
|
||||
|
||||
if ((c = getopt_long(argc, argv, "hdvf:FE:i:Pr:R", long_option, NULL)) < 0)
|
||||
if ((c = getopt_long(argc, argv, "hdvf:FgE:i:Pr:R", long_option, NULL)) < 0)
|
||||
break;
|
||||
switch (c) {
|
||||
case 'h':
|
||||
|
@ -111,6 +114,9 @@ int main(int argc, char *argv[])
|
|||
case 'F':
|
||||
force_restore = 1;
|
||||
break;
|
||||
case 'g':
|
||||
ignore_nocards = 1;
|
||||
break;
|
||||
case 'E':
|
||||
if (putenv(optarg)) {
|
||||
fprintf(stderr, "environment string '%s' is wrong\n", optarg);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
extern int debugflag;
|
||||
extern int force_restore;
|
||||
extern int ignore_nocards;
|
||||
extern char *command;
|
||||
extern char *statefile;
|
||||
|
||||
|
|
|
@ -1507,9 +1507,13 @@ int save_state(const char *file, const char *cardname)
|
|||
break;
|
||||
if (card < 0) {
|
||||
if (first) {
|
||||
if (ignore_nocards) {
|
||||
return 0;
|
||||
} else {
|
||||
error("No soundcards found...");
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
first = 0;
|
||||
|
@ -1606,9 +1610,13 @@ int load_state(const char *file, const char *initfile, const char *cardname)
|
|||
break;
|
||||
if (card < 0) {
|
||||
if (first) {
|
||||
if (ignore_nocards) {
|
||||
return 0;
|
||||
} else {
|
||||
error("No soundcards found...");
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
first = 0;
|
||||
|
|
Loading…
Reference in a new issue