[alsa-devel] [PATCH] ucm: Allow cset commands to have values with spaces.

Kaskinen Tanu tanu.kaskinen at digia.com
Thu Aug 9 17:23:29 CEST 2012


On Thu, 2012-08-09 at 17:12 +0200, Takashi Iwai wrote:
> At Thu, 9 Aug 2012 17:44:12 +0300,
> Kaskinen Tanu wrote:
> > 
> > On Thu, 2012-08-09 at 16:07 +0200, Takashi Iwai wrote:
> > > At Thu, 9 Aug 2012 16:43:31 +0300,
> > > Tanu Kaskinen wrote:
> > > > @@ -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...
> > 
> > True, I'll post v2 soon.
> 
> On the second thought, parsing the string intensively at that point
> doesn't make sense.  The string will be parsed anyway in
> snd_ctl_ascii_elem_id_parse(), then why not just let it give the next
> pointer from there?
> 
> Below is a quick hack (untested at all!).  Could you check whether it
> works?

It does :)

-- 
Tanu



More information about the Alsa-devel mailing list