]> git.alsa-project.org Git - alsa-utils.git/commitdiff
alsaucm: Add list1 command for non-tuple lists
authorStephen Warren <swarren@nvidia.com>
Thu, 2 Jun 2011 22:45:12 +0000 (16:45 -0600)
committerJaroslav Kysela <perex@perex.cz>
Fri, 3 Jun 2011 09:47:36 +0000 (11:47 +0200)
snd_use_case_get_list returns lists of strings that are either:
a) A sequence of single strings
b) A sequence of pairs of strings all flattened into a single list

The current list command assumes layout (b) above, and hence prints
nothing when printing a single-entry list that's actually in layout (a).
Add a new command "list1" to dump lists in layout (a).

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
alsaucm/usecase.c

index 83781d0fd7db895623b6d54f382964a9c68384de..f24e63eadba35c5b021d7e1139a96a424e181bdf 100644 (file)
@@ -63,7 +63,8 @@ enum uc_cmd {
        OM_RESET,
        OM_RELOAD,
        OM_LISTCARDS,
-       OM_LIST,
+       OM_LIST2,
+       OM_LIST1,
 
        /* set/get */
        OM_SET,
@@ -87,7 +88,8 @@ static struct cmd cmds[] = {
        { OM_RESET, 0, 1, "reset" },
        { OM_RELOAD, 0, 1, "reload" },
        { OM_LISTCARDS, 0, 0, "listcards" },
-       { OM_LIST, 1, 1, "list" },
+       { OM_LIST1, 1, 1, "list1" },
+       { OM_LIST2, 1, 1, "list" },
        { OM_SET, 2, 1, "set" },
        { OM_GET, 1, 1, "get" },
        { OM_GETI, 1, 1, "geti" },
@@ -172,7 +174,7 @@ static int do_one(struct context *context, struct cmd *cmd, char **argv)
 {
        const char **list, *str;
        long lval;
-       int err, i;
+       int err, i, j, entries;
 
        if (cmd->opencard && context->uc_mgr == NULL) {
                fprintf(stderr, "%s: command '%s' requires an open card\n",
@@ -233,7 +235,17 @@ static int do_one(struct context *context, struct cmd *cmd, char **argv)
                }
                snd_use_case_free_list(list, err);
                break;
-       case OM_LIST:
+       case OM_LIST1:
+       case OM_LIST2:
+               switch (cmd->code) {
+               case OM_LIST1:
+                   entries = 1;
+                   break;
+               case OM_LIST2:
+                   entries = 2;
+                   break;
+               }
+
                err = snd_use_case_get_list(context->uc_mgr,
                                            argv[0],
                                            &list);
@@ -246,10 +258,11 @@ static int do_one(struct context *context, struct cmd *cmd, char **argv)
                }
                if (err == 0)
                        printf("  list is empty\n");
-               for (i = 0; i < err / 2; i++) {
-                       printf("  %i: %s\n", i, list[i*2]);
-                       if (list[i*2+1])
-                               printf("    %s\n", list[i*2+1]);
+               for (i = 0; i < err / entries; i++) {
+                       printf("  %i: %s\n", i, list[i*entries]);
+                       for (j = 0; j < entries - 1; j++)
+                               if (list[i*entries+j+1])
+                                       printf("    %s\n", list[i*entries+j+1]);
                }
                snd_use_case_free_list(list, err);
                break;