]> git.ipfire.org Git - thirdparty/iw.git/commitdiff
allow more command aliasing, dev/phy commands
authorJohannes Berg <johannes@sipsolutions.net>
Sun, 19 Apr 2009 13:05:38 +0000 (15:05 +0200)
committerJohannes Berg <johannes@sipsolutions.net>
Sun, 19 Apr 2009 13:05:38 +0000 (15:05 +0200)
iw.c
iw.h

diff --git a/iw.c b/iw.c
index a811d54c38b350519ecaa9aa4436cfb00e091178..a9da7a7359d97ecced5902165eb1cb905fe0e39f 100644 (file)
--- a/iw.c
+++ b/iw.c
@@ -94,8 +94,8 @@ static void nl80211_cleanup(struct nl80211_state *state)
        nl_socket_free(state->nl_sock);
 }
 
-__COMMAND(NULL, NULL, NULL, 0, 0, 0, CIB_NONE, NULL);
-__COMMAND(NULL, NULL, NULL, 1, 0, 0, CIB_NONE, NULL);
+__COMMAND(NULL, NULL, "", NULL, 0, 0, 0, CIB_NONE, NULL);
+__COMMAND(NULL, NULL, "", NULL, 1, 0, 0, CIB_NONE, NULL);
 
 static int cmd_size;
 
@@ -485,8 +485,8 @@ int main(int argc, char **argv)
        const char *argv0;
 
        /* calculate command size including padding */
-       cmd_size = abs((long)&__cmd_NULL_1_CIB_NONE_0
-                    - (long)&__cmd_NULL_0_CIB_NONE_0);
+       cmd_size = abs((long)&__cmd_NULL_NULL_1_CIB_NONE_0
+                    - (long)&__cmd_NULL_NULL_0_CIB_NONE_0);
        /* strip off self */
        argc--;
        argv0 = *argv++;
@@ -516,11 +516,11 @@ int main(int argc, char **argv)
                        err = 1;
                else
                        err = listen_events(&nlstate, 0, NULL);
-       } else if (strcmp(*argv, "dev") == 0) {
+       } else if (strcmp(*argv, "dev") == 0 && argc > 1) {
                argc--;
                argv++;
                err = handle_cmd(&nlstate, II_NETDEV, argc, argv);
-       } else if (strncmp(*argv, "phy", 3) == 0) {
+       } else if (strncmp(*argv, "phy", 3) == 0 && argc > 1) {
                if (strlen(*argv) == 3) {
                        argc--;
                        argv++;
diff --git a/iw.h b/iw.h
index 7ae65b7069ef7945cb88f9422d15ce8319fc401a..76848fec32523e4d5b088765e11cec93b739661e 100644 (file)
--- a/iw.h
+++ b/iw.h
@@ -54,17 +54,17 @@ struct cmd {
 
 #define ARRAY_SIZE(ar) (sizeof(ar)/sizeof(ar[0]))
 
-#define __COMMAND(sect, name, args, nlcmd, flags, hidden, idby, handler)\
+#define __COMMAND(sect, symname, name, args, nlcmd, flags, hidden, idby, handler)\
        static const struct cmd                                         \
-       __cmd_ ## handler ## _ ## nlcmd ## _ ## idby ## _ ## hidden     \
+       __cmd ## _ ## symname ## _ ## handler ## _ ## nlcmd ## _ ## idby ## _ ## hidden\
        __attribute__((used)) __attribute__((section("__cmd")))         \
        = { sect, name, args, nlcmd, flags, hidden, idby, handler }
 #define COMMAND(section, name, args, cmd, flags, idby, handler)        \
-       __COMMAND(#section, #name, args, cmd, flags, 0, idby, handler)
+       __COMMAND(#section, name, #name, args, cmd, flags, 0, idby, handler)
 #define HIDDEN(section, name, args, cmd, flags, idby, handler) \
-       __COMMAND(#section, #name, args, cmd, flags, 1, idby, handler)
+       __COMMAND(#section, name, #name, args, cmd, flags, 1, idby, handler)
 #define TOPLEVEL(name, args, cmd, flags, idby, handler)                \
-       __COMMAND(NULL, #name, args, cmd, flags, 0, idby, handler)
+       __COMMAND(NULL, name, #name, args, cmd, flags, 0, idby, handler)
 extern struct cmd __start___cmd;
 extern struct cmd __stop___cmd;