]> git.ipfire.org Git - thirdparty/iw.git/commitdiff
allow multiple command variants
authorJohannes Berg <johannes.berg@intel.com>
Tue, 20 Nov 2012 12:47:49 +0000 (13:47 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 20 Nov 2012 12:47:49 +0000 (13:47 +0100)
iw.c

diff --git a/iw.c b/iw.c
index af55a9bfae493bfd90161798eeca22a53694d771..63f1a610d0baab074950134c5ae0141efac4cf06 100644 (file)
--- a/iw.c
+++ b/iw.c
@@ -105,9 +105,40 @@ static void __usage_cmd(const struct cmd *cmd, char *indent, bool full)
        if (cmd->parent && cmd->parent->name)
                printf("%s ", cmd->parent->name);
        printf("%s", cmd->name);
-       if (cmd->args)
-               printf(" %s", cmd->args);
-       printf("\n");
+
+       if (cmd->args) {
+               /* print line by line */
+               start = cmd->args;
+               end = strchr(start, '\0');
+               printf(" ");
+               do {
+                       lend = strchr(start, '\n');
+                       if (!lend)
+                               lend = end;
+                       if (start != cmd->args) {
+                               printf("\t");
+                               switch (cmd->idby) {
+                               case CIB_NONE:
+                                       break;
+                               case CIB_PHY:
+                                       printf("phy <phyname> ");
+                                       break;
+                               case CIB_NETDEV:
+                                       printf("dev <devname> ");
+                                       break;
+                               case CIB_WDEV:
+                                       printf("wdev <idx> ");
+                                       break;
+                               }
+                               if (cmd->parent && cmd->parent->name)
+                                       printf("%s ", cmd->parent->name);
+                               printf("%s ", cmd->name);
+                       }
+                       printf("%.*s\n", (int)(lend - start), start);
+                       start = lend + 1;
+               } while (end != lend);
+       } else
+               printf("\n");
 
        if (!full || !cmd->help)
                return;