Fix the return value of snd_card_load()

Fix the return value of snd_card_load() to follow the document,
0 = not present, 1 = preset.
The other parts calling snd_card_load() are fixed, too.
This commit is contained in:
Takashi Iwai 2005-06-28 09:58:48 +00:00
parent a12f75afb9
commit 0350a615b7

View file

@ -61,9 +61,9 @@ int snd_card_load(int card)
#endif #endif
if (open_dev >= 0) { if (open_dev >= 0) {
close (open_dev); close (open_dev);
return 0; return 1;
} }
return open_dev ? 1 : 0; return 0;
} }
/** /**
@ -85,7 +85,7 @@ int snd_card_next(int *rcard)
card = *rcard; card = *rcard;
card = card < 0 ? 0 : card + 1; card = card < 0 ? 0 : card + 1;
for (; card < 32; card++) { for (; card < 32; card++) {
if (!snd_card_load(card)) { if (snd_card_load(card)) {
*rcard = card; *rcard = card;
return 0; return 0;
} }
@ -112,15 +112,16 @@ int snd_card_get_index(const char *string)
return -EINVAL; return -EINVAL;
if ((isdigit(*string) && *(string + 1) == 0) || if ((isdigit(*string) && *(string + 1) == 0) ||
(isdigit(*string) && isdigit(*(string + 1)) && *(string + 2) == 0)) { (isdigit(*string) && isdigit(*(string + 1)) && *(string + 2) == 0)) {
sscanf(string, "%i", &card); if (sscanf(string, "%i", &card) != 1)
return -EINVAL;
if (card < 0 || card > 31) if (card < 0 || card > 31)
return -EINVAL; return -EINVAL;
if (snd_card_load(card) >= 0) if (snd_card_load(card))
return card; return card;
return -EINVAL; return -ENODEV;
} }
for (card = 0; card < 32; card++) { for (card = 0; card < 32; card++) {
if (snd_card_load(card) < 0) if (! snd_card_load(card))
continue; continue;
if (snd_ctl_hw_open(&handle, NULL, card, 0) < 0) if (snd_ctl_hw_open(&handle, NULL, card, 0) < 0)
continue; continue;