summaryrefslogtreecommitdiff
path: root/alsactl/state.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-11-13 09:28:43 +0100
committerTakashi Iwai <tiwai@suse.de>2008-11-13 09:28:43 +0100
commit1797b2c2907630b0b8d5374fb382edf40d02387c (patch)
tree4e0cf2befb7d210c6246bce7c059b35966ecc4e2 /alsactl/state.c
parentbbd71560bc93c5dd0012a4764522c0dd982ff3c2 (diff)
downloadalsa-utils-1797b2c2907630b0b8d5374fb382edf40d02387c.tar.gz
Add -I option to alsactl
Add -I option to alsactl to take back the old restore behavior without initialization. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'alsactl/state.c')
-rw-r--r--alsactl/state.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/alsactl/state.c b/alsactl/state.c
index 576721a..86b64f4 100644
--- a/alsactl/state.c
+++ b/alsactl/state.c
@@ -1548,7 +1548,8 @@ int save_state(const char *file, const char *cardname)
return 0;
}
-int load_state(const char *file, const char *initfile, const char *cardname)
+int load_state(const char *file, const char *initfile, const char *cardname,
+ int do_init)
{
int err, finalerr = 0;
snd_config_t *config;
@@ -1586,6 +1587,8 @@ int load_state(const char *file, const char *initfile, const char *cardname)
if (card < 0)
break;
first = 0;
+ if (!do_init)
+ break;
sprintf(cardname1, "%i", card);
err = init(initfile, cardname1);
if (err < 0) {
@@ -1594,7 +1597,7 @@ int load_state(const char *file, const char *initfile, const char *cardname)
}
initfailed(card, "restore");
}
- if (!first)
+ if (first)
finalerr = 0; /* no cards, no error code */
return finalerr;
}
@@ -1621,7 +1624,7 @@ int load_state(const char *file, const char *initfile, const char *cardname)
}
first = 0;
/* do a check if controls matches state file */
- if (set_controls(card, config, 0)) {
+ if (do_init && set_controls(card, config, 0)) {
sprintf(cardname1, "%i", card);
err = init(initfile, cardname1);
if (err < 0) {
@@ -1644,7 +1647,7 @@ int load_state(const char *file, const char *initfile, const char *cardname)
return -ENODEV;
}
/* do a check if controls matches state file */
- if (set_controls(cardno, config, 0)) {
+ if (do_init && set_controls(cardno, config, 0)) {
err = init(initfile, cardname);
if (err < 0) {
initfailed(cardno, "init");