summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2019-11-27 14:59:17 +0100
committerJaroslav Kysela <perex@perex.cz>2019-11-28 15:02:04 +0100
commitaaf3a081bff1cc85635f7a3c3d4287c4addbbd84 (patch)
treee0dcd85358e278ec33e31403c503d354d2189325
parent659ecf6ff01fe4e8a0118d0ea69135b1cadf62d9 (diff)
downloadalsa-lib-aaf3a081bff1cc85635f7a3c3d4287c4addbbd84.tar.gz
control: ctlparse - accept enum values in '' or ""
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--src/control/ctlparse.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/control/ctlparse.c b/src/control/ctlparse.c
index 900af0c7..b0bb5ee3 100644
--- a/src/control/ctlparse.c
+++ b/src/control/ctlparse.c
@@ -273,6 +273,7 @@ static int get_ctl_enum_item_index(snd_ctl_t *handle,
char *ptr = (char *)*ptrp;
int items, i, len;
const char *name;
+ char end;
items = snd_ctl_elem_info_get_items(info);
if (items <= 0)
@@ -283,9 +284,14 @@ static int get_ctl_enum_item_index(snd_ctl_t *handle,
if (snd_ctl_elem_info(handle, info) < 0)
return -1;
name = snd_ctl_elem_info_get_item_name(info);
+ end = *ptr;
+ if (end == '\'' || end == '"')
+ ptr++;
+ else
+ end = '\0';
len = strlen(name);
- if (! strncmp(name, ptr, len)) {
- if (! ptr[len] || ptr[len] == ',' || ptr[len] == '\n') {
+ if (strncmp(name, ptr, len) == 0) {
+ if (ptr[len] == end || ptr[len] == ',' || ptr[len] == '\n') {
ptr += len;
*ptrp = ptr;
return i;