From: Jaroslav Kysela Date: Sat, 11 Dec 1999 10:50:39 +0000 (+0000) Subject: Added 'snd_card_get_name' & 'snd_card_get_longname'. X-Git-Tag: v1.0.3~1387 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=0f0ce095098ec345329527fa9c3af197dc134baf;p=alsa-lib.git Added 'snd_card_get_name' & 'snd_card_get_longname'. --- diff --git a/include/control.h b/include/control.h index 719b455b..e89fc7f7 100644 --- a/include/control.h +++ b/include/control.h @@ -22,6 +22,8 @@ int snd_card_load(int card); int snd_cards(void); unsigned int snd_cards_mask(void); int snd_card_name(const char *name); +int snd_card_get_name(int card, char **name); +int snd_card_get_longname(int card, char **name); int snd_defaults_card(void); int snd_defaults_mixer_card(void); diff --git a/src/control/cards.c b/src/control/cards.c index 94d96767..da6b93f3 100644 --- a/src/control/cards.c +++ b/src/control/cards.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -126,3 +127,45 @@ int snd_card_name(const char *string) } return -ENODEV; } + +int snd_card_get_name(int card, char **name) +{ + snd_ctl_t *handle; + struct snd_ctl_hw_info info; + int err; + + if (name == NULL) + return -EINVAL; + if ((err = snd_ctl_open(&handle, card)) < 0) + return err; + if ((err = snd_ctl_hw_info(handle, &info)) < 0) { + snd_ctl_close(handle); + return err; + } + snd_ctl_close(handle); + *name = strdup(info.name); + if (*name == NULL) + return -ENOMEM; + return 0; +} + +int snd_card_get_longname(int card, char **name) +{ + snd_ctl_t *handle; + struct snd_ctl_hw_info info; + int err; + + if (name == NULL) + return -EINVAL; + if ((err = snd_ctl_open(&handle, card)) < 0) + return err; + if ((err = snd_ctl_hw_info(handle, &info)) < 0) { + snd_ctl_close(handle); + return err; + } + snd_ctl_close(handle); + *name = strdup(info.longname); + if (*name == NULL) + return -ENOMEM; + return 0; +}