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

openSUSE Build Service is sponsored by