aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2007-06-20 12:42:03 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2007-06-20 12:42:03 +0000
commit761ce14fd266d8bf78b8f9c83ec2425ede0648b9 (patch)
tree7d04c931cd9f15cf7a9edea540db99d990aa1355
parentee921393a513d10c7a28d41a9b2eaec174a8cd0f (diff)
downloadbusybox-w32-761ce14fd266d8bf78b8f9c83ec2425ede0648b9.tar.gz
busybox-w32-761ce14fd266d8bf78b8f9c83ec2425ede0648b9.tar.bz2
busybox-w32-761ce14fd266d8bf78b8f9c83ec2425ede0648b9.zip
- remove another user of the deprecated matches() func by moving it to use index_in_str_array. Untested.
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
-rw-r--r--networking/libiproute/ip_parse_common_args.c35
1 files changed, 24 insertions, 11 deletions
diff --git a/networking/libiproute/ip_parse_common_args.c b/networking/libiproute/ip_parse_common_args.c
index cea5b4753..3606d3877 100644
--- a/networking/libiproute/ip_parse_common_args.c
+++ b/networking/libiproute/ip_parse_common_args.c
@@ -26,6 +26,20 @@ void ip_parse_common_args(int *argcp, char ***argvp)
26{ 26{
27 int argc = *argcp; 27 int argc = *argcp;
28 char **argv = *argvp; 28 char **argv = *argvp;
29 static const char * const ip_common_commands[] =
30 {"-family", "inet", "inet6", "link",
31 "-4", "-6", "-0", "-oneline", 0};
32 enum {
33 ARG_family,
34 ARG_inet,
35 ARG_inet6,
36 ARG_link,
37 ARG_IPv4,
38 ARG_IPv6,
39 ARG_packet,
40 ARG_oneline
41 };
42 smalluint arg;
29 43
30 while (argc > 1) { 44 while (argc > 1) {
31 char *opt = argv[1]; 45 char *opt = argv[1];
@@ -35,33 +49,32 @@ void ip_parse_common_args(int *argcp, char ***argvp)
35 argv++; 49 argv++;
36 break; 50 break;
37 } 51 }
38
39 if (opt[0] != '-') 52 if (opt[0] != '-')
40 break; 53 break;
41
42 if (opt[1] == '-') 54 if (opt[1] == '-')
43 opt++; 55 opt++;
44 56 arg = index_in_str_array(ip_common_commands, opt) + 1;
45 if (matches(opt, "-family") == 0) { 57 if (arg == ARG_family) {
46 argc--; 58 argc--;
47 argv++; 59 argv++;
48 if (!argv[1]) 60 if (!argv[1])
49 bb_show_usage(); 61 bb_show_usage();
50 if (strcmp(argv[1], "inet") == 0) 62 arg = index_in_str_array(ip_common_commands, argv[1]) + 1;
63 if (arg == ARG_inet)
51 preferred_family = AF_INET; 64 preferred_family = AF_INET;
52 else if (strcmp(argv[1], "inet6") == 0) 65 else if (arg == ARG_inet6)
53 preferred_family = AF_INET6; 66 preferred_family = AF_INET6;
54 else if (strcmp(argv[1], "link") == 0) 67 else if (arg == ARG_link)
55 preferred_family = AF_PACKET; 68 preferred_family = AF_PACKET;
56 else 69 else
57 invarg(argv[1], "protocol family"); 70 invarg(argv[1], "protocol family");
58 } else if (strcmp(opt, "-4") == 0) { 71 } else if (arg == ARG_IPv4) {
59 preferred_family = AF_INET; 72 preferred_family = AF_INET;
60 } else if (strcmp(opt, "-6") == 0) { 73 } else if (arg == ARG_IPv6) {
61 preferred_family = AF_INET6; 74 preferred_family = AF_INET6;
62 } else if (strcmp(opt, "-0") == 0) { 75 } else if (arg == ARG_packet) {
63 preferred_family = AF_PACKET; 76 preferred_family = AF_PACKET;
64 } else if (matches(opt, "-oneline") == 0) { 77 } else if (arg == ARG_oneline) {
65 ++oneline; 78 ++oneline;
66 } else { 79 } else {
67 bb_show_usage(); 80 bb_show_usage();