From 7876ddd70e8da87bf5195e1ec7c58b1a57daa8e8 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 22 Sep 2005 12:39:26 +0000 Subject: [PATCH] Added more better error fault handling for sset toggle --- amixer/amixer.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/amixer/amixer.c b/amixer/amixer.c index cf71426..4c3038e 100644 --- a/amixer/amixer.c +++ b/amixer/amixer.c @@ -1168,7 +1168,7 @@ static int sset(unsigned int argc, char *argv[], int roflag) unsigned int idx; snd_mixer_selem_channel_id_t chn; unsigned int channels = ~0U; - unsigned int dir = 3; + unsigned int dir = 3, okflag = 3; long pmin, pmax, cmin, cmax; snd_mixer_t *handle; snd_mixer_elem_t *elem; @@ -1278,9 +1278,6 @@ static int sset(unsigned int argc, char *argv[], int roflag) simple_skip_word(&ptr, "nocap") || simple_skip_word(&ptr, "norec")) { /* nothing */ } else { - error("Unknown playback setup '%s'..\n", ptr); - snd_mixer_close(handle); - return err; } } if ((dir & 2) && snd_mixer_selem_has_capture_channel(elem, chn)) { @@ -1317,10 +1314,19 @@ static int sset(unsigned int argc, char *argv[], int roflag) /* nothing */ } else { error("Unknown capture setup '%s'..\n", ptr); + okflag &= ~2; snd_mixer_close(handle); return err; } } + if (okflag == 0) { + if (dir & 1) + error("Unknown playback setup '%s'..\n", ptr); + if (dir & 2) + error("Unknown capture setup '%s'..\n", ptr); + snd_mixer_close(handle); + return err; + } if (!multi) ptr = optr; firstchn = 0;