[alsa-devel] Salsa-lib : doesn't handle multiple device

Takashi Iwai tiwai at suse.de
Tue Sep 30 14:55:45 CEST 2008


At Tue, 30 Sep 2008 14:11:30 +0200,
Matthieu CASTET wrote:
> 
> Hi,
> 
> it seems there is a bug in card parsing (snd_card_get_index).
> 
> If the device name is "hw:0,1", then in _snd_dev_get_device,
> snd_card_get_index will be called with "0,1".
> 
> But snd_card_get_index expect to be called with only the card string
> number or name : it first check that the string is a number [1], and
> then try for each card to compare with the card name [2]

Indeed.

> I don't know what suppose to do snd_card_get_index, but I thing a easy
> way to fix it is to pass to snd_card_get_index only the string before
> the first comma.

I think the patch below is much simpler.
Could you check whether this works?


thanks,

Takashi

diff -r 7ca6ae3d3edb src/cards.c
--- a/src/cards.c	Tue Sep 30 14:46:16 2008 +0200
+++ b/src/cards.c	Tue Sep 30 14:51:10 2008 +0200
@@ -99,10 +99,7 @@
 
 	if (!string || *string == '\0')
 		return -EINVAL;
-	if ((isdigit(*string) && *(string + 1) == 0) ||
-	    (isdigit(*string) && isdigit(*(string + 1)) && *(string + 2) == 0)) {
-		if (sscanf(string, "%i", &card) != 1)
-			return -EINVAL;
+	if (sscanf(string, "%i", &card) == 1) {
 		if (card < 0 || card > 31)
 			return -EINVAL;
 		if (snd_card_load(card))


More information about the Alsa-devel mailing list