OSDN Git Service

Added 'snd_card_get_name' & 'snd_card_get_longname'.
authorJaroslav Kysela <perex@perex.cz>
Sat, 11 Dec 1999 10:50:39 +0000 (10:50 +0000)
committerJaroslav Kysela <perex@perex.cz>
Sat, 11 Dec 1999 10:50:39 +0000 (10:50 +0000)
include/control.h
src/control/cards.c

index 719b455..e89fc7f 100644 (file)
@@ -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);
index 94d9676..da6b93f 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <string.h>
 #include <errno.h>
 #include <ctype.h>
 #include <fcntl.h>
@@ -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;
+}