- remove another user of the deprecated matches() func by moving it to use index_in_s...
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 20 Jun 2007 12:42:03 +0000 (12:42 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 20 Jun 2007 12:42:03 +0000 (12:42 -0000)
   text    data     bss     dec     hex filename
    445       0       4     449     1c1 ip_parse_common_args.o.oorig
    391       0       4     395     18b ip_parse_common_args.o

networking/libiproute/ip_parse_common_args.c

index cea5b47539d55cb4ce9ed027cae1de5f80006512..3606d3877b99326f0b3476ddf3e39e0e880f770d 100644 (file)
@@ -26,6 +26,20 @@ void ip_parse_common_args(int *argcp, char ***argvp)
 {
        int argc = *argcp;
        char **argv = *argvp;
+       static const char * const ip_common_commands[] =
+               {"-family", "inet", "inet6", "link",
+                "-4", "-6", "-0", "-oneline", 0};
+       enum {
+               ARG_family,
+               ARG_inet,
+               ARG_inet6,
+               ARG_link,
+               ARG_IPv4,
+               ARG_IPv6,
+               ARG_packet,
+               ARG_oneline
+       };
+       smalluint arg;
 
        while (argc > 1) {
                char *opt = argv[1];
@@ -35,33 +49,32 @@ void ip_parse_common_args(int *argcp, char ***argvp)
                        argv++;
                        break;
                }
-
                if (opt[0] != '-')
                        break;
-
                if (opt[1] == '-')
                        opt++;
-
-               if (matches(opt, "-family") == 0) {
+               arg = index_in_str_array(ip_common_commands, opt) + 1;
+               if (arg == ARG_family) {
                        argc--;
                        argv++;
                        if (!argv[1])
                                bb_show_usage();
-                       if (strcmp(argv[1], "inet") == 0)
+                       arg = index_in_str_array(ip_common_commands, argv[1]) + 1;
+                       if (arg == ARG_inet)
                                preferred_family = AF_INET;
-                       else if (strcmp(argv[1], "inet6") == 0)
+                       else if (arg == ARG_inet6)
                                preferred_family = AF_INET6;
-                       else if (strcmp(argv[1], "link") == 0)
+                       else if (arg == ARG_link)
                                preferred_family = AF_PACKET;
                        else
                                invarg(argv[1], "protocol family");
-               } else if (strcmp(opt, "-4") == 0) {
+               } else if (arg == ARG_IPv4) {
                        preferred_family = AF_INET;
-               } else if (strcmp(opt, "-6") == 0) {
+               } else if (arg == ARG_IPv6) {
                        preferred_family = AF_INET6;
-               } else if (strcmp(opt, "-0") == 0) {
+               } else if (arg == ARG_packet) {
                        preferred_family = AF_PACKET;
-               } else if (matches(opt, "-oneline") == 0) {
+               } else if (arg == ARG_oneline) {
                        ++oneline;
                } else {
                        bb_show_usage();