9 Aug
2012
9 Aug
'12
2:07 p.m.
At Thu, 9 Aug 2012 16:43:31 +0300, Tanu Kaskinen wrote:
An example: cset "name='Input Select' Digital Mic"
The old parsing code interpreted "name='Input Select' Digital" as the element id, which of course didn't work.
Signed-off-by: Tanu Kaskinen tanu.kaskinen@digia.com
src/ucm/main.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/ucm/main.c b/src/ucm/main.c index 4b37776..05a7b0a 100644 --- a/src/ucm/main.c +++ b/src/ucm/main.c @@ -170,8 +170,23 @@ static int execute_cset(snd_ctl_t *ctl, char *cset) snd_ctl_elem_value_malloc(&value); snd_ctl_elem_info_malloc(&info);
- pos = strrchr(cset, ' ');
- if (pos == NULL) {
- /* Find the space after the element id, taking quoting with
single-quotes into account. */
- for (pos = cset; *pos != '\0'; pos += strcspn(pos, "' ")) {
if (*pos == ' ')
break;
if (*pos == '\'') {
A double-quote can be supported easily here...
Takashi
pos++;
pos += strcspn(pos, "'");
if (*pos == '\0') {
uc_error("invalid element id (closing single-quote not found): %s", cset);
err = -EINVAL;
goto __fail;
}
pos++;
}
- }
- if (*pos == '\0') { uc_error("undefined value for cset >%s<", cset); err = -EINVAL; goto __fail;
-- 1.7.9.5