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;
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)) {
/* 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;