diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-10-04 10:52:57 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-10-04 10:52:57 +0200 |
commit | 227a8a8fc79f312a12974b8be4e51fcd76e7a943 (patch) | |
tree | 7d9c5b76e900a39676d282f00bd2a8daaf479c92 | |
parent | e83eaee21ce27beb3ed122aa2426b47d8324651a (diff) | |
download | salsa-lib-227a8a8fc79f312a12974b8be4e51fcd76e7a943.tar.gz |
Add the device path support to snd_card_get_index()
A device file name can be passed snd_card_get_index().
-rw-r--r-- | src/cards.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/cards.c b/src/cards.c index 5a90329..b91e80c 100644 --- a/src/cards.c +++ b/src/cards.c @@ -92,6 +92,23 @@ static int get_card_info(int card, snd_ctl_card_info_t *info) return err; } +static int snd_card_load2(const char *control) +{ + int open_dev; + snd_ctl_card_info_t info; + + open_dev = open(control, O_RDONLY); + if (open_dev < 0) + return -errno; + if (ioctl(open_dev, SNDRV_CTL_IOCTL_CARD_INFO, &info) < 0) { + int err = -errno; + close(open_dev); + return err; + } + close(open_dev); + return info.card; +} + int snd_card_get_index(const char *string) { int card; @@ -99,6 +116,8 @@ int snd_card_get_index(const char *string) if (!string || *string == '\0') return -EINVAL; + if (*string == '/') /* device name */ + return snd_card_load2(string); if (sscanf(string, "%i", &card) == 1) { if (card < 0 || card > 31) return -EINVAL; |