]> git.alsa-project.org Git - alsa-utils.git/commitdiff
alsactl: Allow card specification by device name (support for udev)
authorJaroslav Kysela <perex@perex.cz>
Mon, 18 Aug 2008 14:57:18 +0000 (16:57 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 18 Aug 2008 14:57:18 +0000 (16:57 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
alsactl/alsactl.c

index 552cfce354edf9dc4dd3e3c03b9dfe1f974f19aa..6c62ffc660e61da9c495c56fbd49c6ad2551341d 100644 (file)
@@ -82,9 +82,16 @@ int main(int argc, char *argv[])
                {"version", 0, NULL, 'v'},
                {NULL, 0, NULL, 0},
        };
+       char *devfiles[] = {
+               "/dev/snd/controlC",
+               "/dev/snd/pcmC",
+               "/dev/snd/midiC",
+               "/dev/snd/hwC",
+               NULL
+       };
        char *cfgfile = SYS_ASOUNDRC;
        char *initfile = DATADIR "/init/00main";
-       char *cardname;
+       char *cardname, **tmp, ncardname[16];
        int removestate = 0;
        int res;
 
@@ -143,6 +150,16 @@ int main(int argc, char *argv[])
        }
 
        cardname = argc - optind > 1 ? argv[optind + 1] : NULL;
+       for (tmp = devfiles; cardname != NULL && tmp != NULL; tmp++) {
+               int len = strlen(*tmp);
+               if (!strncmp(cardname, *tmp, len)) {
+                       long l = strtol(cardname + len, NULL, 0);
+                       sprintf(ncardname, "%li", l);
+                       cardname = ncardname;
+                       break;
+               }
+       }
+
        if (!strcmp(argv[optind], "init")) {
                res = init(initfile, cardname);
        } else if (!strcmp(argv[optind], "store")) {