File 0021-control-Allow-cset-ing-specific-values-in-the-multi-.patch of Package alsa
From 2fd098b587e8e5137c05ea6248c2aa87294e13c2 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Wed, 10 Jun 2015 11:56:23 +0200
Subject: [PATCH] control: Allow cset'ing specific values in the multi-value
case
Improve the parser to allow empty elements followed by a comma.
Now amixer works like below for setting only the third element.
% amixer cset 'IIR1 Band1' ,,200
Reported-and-tested-by: Arun Raghavan <arun@accosted.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
src/control/ctlparse.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/control/ctlparse.c b/src/control/ctlparse.c
index 8d6c3859bec4..877a05e3a1f1 100644
--- a/src/control/ctlparse.c
+++ b/src/control/ctlparse.c
@@ -325,6 +325,8 @@ int snd_ctl_ascii_value_parse(snd_ctl_t *handle,
snd_ctl_elem_value_set_id(dst, myid);
for (idx = 0; idx < count && idx < 128 && ptr && *ptr; idx++) {
+ if (*ptr == ',')
+ goto skip;
switch (type) {
case SND_CTL_ELEM_TYPE_BOOLEAN:
tmp = 0;
@@ -375,6 +377,7 @@ int snd_ctl_ascii_value_parse(snd_ctl_t *handle,
default:
break;
}
+ skip:
if (!strchr(value, ','))
ptr = value;
else if (*ptr == ',')
--
2.4.3