ip addr: unify parsing args
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Tue, 25 May 2010 15:42:01 +0000 (17:42 +0200)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Tue, 25 May 2010 16:48:33 +0000 (18:48 +0200)
function                                             old     new   delta
do_ipaddr                                             87      84      -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3)               Total: -3 bytes

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
networking/libiproute/ipaddress.c

index 3f360f4559f056f7932172273663a96b3acdfa7a..8a5edb9680673cd020ddc3c12d1537f30e160191 100644 (file)
@@ -773,21 +773,15 @@ int do_ipaddr(char **argv)
 {
        static const char commands[] ALIGN1 =
                "add\0""delete\0""list\0""show\0""lst\0""flush\0";
-
-       int command_num = 2; /* default command is list */
-
+       smalluint cmd = 2;
        if (*argv) {
-               command_num = index_in_substrings(commands, *argv);
-               if (command_num < 0 || command_num > 5)
-                       bb_error_msg_and_die("unknown command %s", *argv);
+               cmd = index_in_substrings(commands, *argv);
+               if (cmd > 5)
+                       bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
                argv++;
+               if (cmd <= 1)
+                       return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv);
        }
-       if (command_num == 0) /* add */
-               return ipaddr_modify(RTM_NEWADDR, argv);
-       if (command_num == 1) /* delete */
-               return ipaddr_modify(RTM_DELADDR, argv);
-       if (command_num == 5) /* flush */
-               return ipaddr_list_or_flush(argv, 1);
        /* 2 == list, 3 == show, 4 == lst */
-       return ipaddr_list_or_flush(argv, 0);
+       return ipaddr_list_or_flush(argv, cmd == 5);
 }