diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-11-20 18:12:12 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-11-20 18:12:12 +0100 |
commit | ad7d94bdc7d6a8ffe798a54f09e1e51dd949c9b7 (patch) | |
tree | 18eea693059760e3febdb2012ad2aee55a013279 /networking/ping.c | |
parent | 8684cbb5cc2c461e3795fba19ad7386db37cf499 (diff) | |
download | busybox-w32-ad7d94bdc7d6a8ffe798a54f09e1e51dd949c9b7.tar.gz busybox-w32-ad7d94bdc7d6a8ffe798a54f09e1e51dd949c9b7.tar.bz2 busybox-w32-ad7d94bdc7d6a8ffe798a54f09e1e51dd949c9b7.zip |
ping6: do not play dirty tricks with argv
function old new delta
common_ping_main - 368 +368
ping6_main 30 14 -16
ping_main 370 11 -359
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 368/-375) Total: -7 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/ping.c')
-rw-r--r-- | networking/ping.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/networking/ping.c b/networking/ping.c index d30eb5cfa..0ca41b9fa 100644 --- a/networking/ping.c +++ b/networking/ping.c | |||
@@ -30,13 +30,13 @@ | |||
30 | #include "libbb.h" | 30 | #include "libbb.h" |
31 | 31 | ||
32 | #if ENABLE_PING6 | 32 | #if ENABLE_PING6 |
33 | #include <netinet/icmp6.h> | 33 | # include <netinet/icmp6.h> |
34 | /* I see RENUMBERED constants in bits/in.h - !!? | 34 | /* I see RENUMBERED constants in bits/in.h - !!? |
35 | * What a fuck is going on with libc? Is it a glibc joke? */ | 35 | * What a fuck is going on with libc? Is it a glibc joke? */ |
36 | #ifdef IPV6_2292HOPLIMIT | 36 | # ifdef IPV6_2292HOPLIMIT |
37 | #undef IPV6_HOPLIMIT | 37 | # undef IPV6_HOPLIMIT |
38 | #define IPV6_HOPLIMIT IPV6_2292HOPLIMIT | 38 | # define IPV6_HOPLIMIT IPV6_2292HOPLIMIT |
39 | #endif | 39 | # endif |
40 | #endif | 40 | #endif |
41 | 41 | ||
42 | enum { | 42 | enum { |
@@ -173,13 +173,14 @@ static void ping6(len_and_sockaddr *lsa) | |||
173 | } | 173 | } |
174 | #endif | 174 | #endif |
175 | 175 | ||
176 | int ping_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 176 | #if !ENABLE_PING6 |
177 | int ping_main(int argc UNUSED_PARAM, char **argv) | 177 | # define common_ping_main(af, argv) common_ping_main(argv) |
178 | #endif | ||
179 | static int common_ping_main(sa_family_t af, char **argv) | ||
178 | { | 180 | { |
179 | len_and_sockaddr *lsa; | 181 | len_and_sockaddr *lsa; |
180 | #if ENABLE_PING6 | ||
181 | sa_family_t af = AF_UNSPEC; | ||
182 | 182 | ||
183 | #if ENABLE_PING6 | ||
183 | while ((++argv)[0] && argv[0][0] == '-') { | 184 | while ((++argv)[0] && argv[0][0] == '-') { |
184 | if (argv[0][1] == '4') { | 185 | if (argv[0][1] == '4') { |
185 | af = AF_INET; | 186 | af = AF_INET; |
@@ -716,12 +717,10 @@ static void ping(len_and_sockaddr *lsa) | |||
716 | ping4(lsa); | 717 | ping4(lsa); |
717 | } | 718 | } |
718 | 719 | ||
719 | int ping_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 720 | static int common_ping_main(int opt, char **argv) |
720 | int ping_main(int argc UNUSED_PARAM, char **argv) | ||
721 | { | 721 | { |
722 | len_and_sockaddr *lsa; | 722 | len_and_sockaddr *lsa; |
723 | char *str_s; | 723 | char *str_s; |
724 | int opt; | ||
725 | 724 | ||
726 | INIT_G(); | 725 | INIT_G(); |
727 | 726 | ||
@@ -765,13 +764,25 @@ int ping_main(int argc UNUSED_PARAM, char **argv) | |||
765 | #endif /* FEATURE_FANCY_PING */ | 764 | #endif /* FEATURE_FANCY_PING */ |
766 | 765 | ||
767 | 766 | ||
767 | int ping_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | ||
768 | int ping_main(int argc UNUSED_PARAM, char **argv) | ||
769 | { | ||
770 | #if !ENABLE_FEATURE_FANCY_PING | ||
771 | return common_ping_main(AF_UNSPEC, argv); | ||
772 | #else | ||
773 | return common_ping_main(0, argv); | ||
774 | #endif | ||
775 | } | ||
776 | |||
768 | #if ENABLE_PING6 | 777 | #if ENABLE_PING6 |
769 | int ping6_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 778 | int ping6_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
770 | int ping6_main(int argc UNUSED_PARAM, char **argv) | 779 | int ping6_main(int argc UNUSED_PARAM, char **argv) |
771 | { | 780 | { |
772 | argv[0] = (char*)"-6"; | 781 | # if !ENABLE_FEATURE_FANCY_PING |
773 | return ping_main(0 /* argc+1 - but it's unused anyway */, | 782 | return common_ping_main(AF_INET6, argv); |
774 | argv - 1); | 783 | # else |
784 | return common_ping_main(OPT_IPV6, argv); | ||
785 | # endif | ||
775 | } | 786 | } |
776 | #endif | 787 | #endif |
777 | 788 | ||