From 0f0ce095098ec345329527fa9c3af197dc134baf Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sat, 11 Dec 1999 10:50:39 +0000 Subject: [PATCH] Added 'snd_card_get_name' & 'snd_card_get_longname'. --- include/control.h | 2 ++ src/control/cards.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) 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; +} -- 2.47.1