summaryrefslogtreecommitdiff
path: root/src/modules/alsa/alsa-mixer.c
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2019-11-26 10:35:14 +0100
committerArun Raghavan <arun@arunraghavan.net>2019-12-06 10:05:44 +0000
commit1c240b7a12e9e2f7c2266d18cbb74130bb81277e (patch)
treeb5e2afd6d39c008a7ecdbf5d72162411a005ea57 /src/modules/alsa/alsa-mixer.c
parent7f4b8e1a7c2c6a873ddb0207d9b407605bd3e7d6 (diff)
alsa-mixer: improve alsa_id_decode() function
Accept those identifiers: Speaker,1 'Speaker',1 "Speaker",1 Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'src/modules/alsa/alsa-mixer.c')
-rw-r--r--src/modules/alsa/alsa-mixer.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index 38ace783a..f57aabe5d 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -117,11 +117,24 @@ static char *alsa_id_str(char *dst, size_t dst_len, pa_alsa_mixer_id *id) {
}
static int alsa_id_decode(const char *src, char *name, int *index) {
- char *idx;
+ char *idx, c;
+ int i;
*index = 0;
- strcpy(name, src);
- idx = strchr(name, ',');
+ c = src[0];
+ /* Strip quotes in entries such as 'Speaker',1 or "Speaker",1 */
+ if (c == '\'' || c == '"') {
+ strcpy(name, src + 1);
+ for (i = 0; name[i] != '\0' && name[i] != c; i++);
+ idx = NULL;
+ if (name[i]) {
+ name[i] = '\0';
+ idx = strchr(name + i + 1, ',');
+ }
+ } else {
+ strcpy(name, src);
+ idx = strchr(name, ',');
+ }
if (idx == NULL)
return 0;
*idx = '\0';