diff options
author | Glenn L McGrath | 2002-12-01 23:04:06 +0000 |
---|---|---|
committer | Glenn L McGrath | 2002-12-01 23:04:06 +0000 |
commit | f112daa232122dd114933d04a9e415cfc61f1717 (patch) | |
tree | 1e52823545fb3e20f89205fd6224017e19586c72 /networking/ip.c | |
parent | f3faf41334fab96d20854c2b4c1acab022c98028 (diff) | |
download | busybox-f112daa232122dd114933d04a9e415cfc61f1717.zip busybox-f112daa232122dd114933d04a9e415cfc61f1717.tar.gz |
Enable ip commands to be compiled seperate from ip, modifed patch from Bastian Blank
Diffstat (limited to 'networking/ip.c')
-rw-r--r-- | networking/ip.c | 55 |
1 files changed, 33 insertions, 22 deletions
diff --git a/networking/ip.c b/networking/ip.c index f045f5f..e7cab74 100644 --- a/networking/ip.c +++ b/networking/ip.c @@ -28,30 +28,30 @@ #include "busybox.h" +#if 0 int preferred_family = AF_UNSPEC; int oneline = 0; char * _SL_ = NULL; -int ip_main(int argc, char **argv) +void ip_parse_common_args(int *argcp, char ***argvp) { - char *basename; + int argc = *argcp; + char **argv = *argvp; - basename = strrchr(argv[0], '/'); - if (basename == NULL) - basename = argv[0]; - else - basename++; - while (argc > 1) { char *opt = argv[1]; + if (strcmp(opt,"--") == 0) { argc--; argv++; break; } + if (opt[0] != '-') break; + if (opt[1] == '-') opt++; + if (matches(opt, "-family") == 0) { argc--; argv++; @@ -72,33 +72,44 @@ int ip_main(int argc, char **argv) } else if (matches(opt, "-oneline") == 0) { ++oneline; } else { - fprintf(stderr, "Option \"%s\" is unknown, try \"ip -help\".\n", opt); - exit(-1); + show_usage(); } argc--; argv++; } - _SL_ = oneline ? "\\" : "\n" ; +} +#endif + +int ip_main(int argc, char **argv) +{ + int ret = EXIT_FAILURE; + + ip_parse_common_args(&argc, &argv); if (argc > 1) { #ifdef CONFIG_FEATURE_IP_ADDRESS - if (matches(argv[1], "address") == 0) - return do_ipaddr(argc-2, argv+2); + if (matches(argv[1], "address") == 0) { + ret = do_ipaddr(argc-2, argv+2); + } #endif #ifdef CONFIG_FEATURE_IP_ROUTE - if (matches(argv[1], "route") == 0) - return do_iproute(argc-2, argv+2); + else if (matches(argv[1], "route") == 0) { + ret = do_iproute(argc-2, argv+2); + } #endif #ifdef CONFIG_FEATURE_IP_LINK - if (matches(argv[1], "link") == 0) - return do_iplink(argc-2, argv+2); + else if (matches(argv[1], "link") == 0) { + ret = do_iplink(argc-2, argv+2); + } #endif #ifdef CONFIG_FEATURE_IP_TUNNEL - if (matches(argv[1], "tunnel") == 0 || - strcmp(argv[1], "tunl") == 0) - return do_iptunnel(argc-2, argv+2); + else if (matches(argv[1], "tunnel") == 0 || strcmp(argv[1], "tunl") == 0) { + ret = do_iptunnel(argc-2, argv+2); + } #endif - fprintf(stderr, "Object \"%s\" is unknown, try \"ip help\".\n", argv[1]); - exit(-1); } + if (ret) { + show_usage(); + } + return(EXIT_SUCCESS); } |