summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--audio_hw.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/audio_hw.c b/audio_hw.c
index 7c2406f..b7f8887 100644
--- a/audio_hw.c
+++ b/audio_hw.c
@@ -183,6 +183,7 @@ struct snd_pcm_info *select_card(unsigned int device, unsigned int flags)
static struct snd_pcm_info *cached_info[4];
struct snd_pcm_info *info;
int d = !!(flags & PCM_IN);
+ char e = d ? 'c' : 'p';
if (!cached_info[d] && !cached_info[d + 2]) {
struct dirent **namelist;
char path[PATH_MAX] = "/dev/snd/";
@@ -191,7 +192,7 @@ struct snd_pcm_info *select_card(unsigned int device, unsigned int flags)
int i, fd;
for (i = 0; i < n; i++) {
struct dirent *de = namelist[i];
- if (!strncmp(de->d_name, "pcmC", 4)) {
+ if (!strncmp(de->d_name, "pcmC", 4) && de->d_name[strlen(de->d_name) - 1] == e) {
strcpy(path + 9, de->d_name);
if ((fd = open(path, O_RDWR)) >= 0) {
info = malloc(sizeof(*info));