diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2015-10-09 18:16:40 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2015-10-09 18:16:40 +0200 |
commit | 02859aaeb29fb83167364291f1ce26b54c23803b (patch) | |
tree | 93a30e982b81e3bde6af8800bcd0c8f3f0080f52 /networking/interface.c | |
parent | e52da5570eb93d6cb2950e55c48bd22edb5a9f18 (diff) | |
download | busybox-w32-02859aaeb29fb83167364291f1ce26b54c23803b.tar.gz busybox-w32-02859aaeb29fb83167364291f1ce26b54c23803b.tar.bz2 busybox-w32-02859aaeb29fb83167364291f1ce26b54c23803b.zip |
use auto_string() where appropriate to kill a few statics
Custom linker script 'busybox_ldscript' found, using it
function old new delta
static.str 4 - -4
static.passwd 4 0 -4
bb_ask 322 311 -11
ether_print 63 47 -16
UNSPEC_print 82 66 -16
INET_sprint 59 38 -21
INET6_sprint 54 30 -24
make_human_readable_str 292 235 -57
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/7 up/down: 0/-153) Total: -153 bytes
text data bss dec hex filename
939880 992 17480 958352 e9f90 busybox_old
939736 992 17456 958184 e9ee8 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/interface.c')
-rw-r--r-- | networking/interface.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/networking/interface.c b/networking/interface.c index b0572d04e..24bd13c57 100644 --- a/networking/interface.c +++ b/networking/interface.c | |||
@@ -89,13 +89,9 @@ struct in6_ifreq { | |||
89 | /* Display an Internet socket address. */ | 89 | /* Display an Internet socket address. */ |
90 | static const char* FAST_FUNC INET_sprint(struct sockaddr *sap, int numeric) | 90 | static const char* FAST_FUNC INET_sprint(struct sockaddr *sap, int numeric) |
91 | { | 91 | { |
92 | static char *buff; /* defaults to NULL */ | ||
93 | |||
94 | if (sap->sa_family == 0xFFFF || sap->sa_family == 0) | 92 | if (sap->sa_family == 0xFFFF || sap->sa_family == 0) |
95 | return "[NONE SET]"; | 93 | return "[NONE SET]"; |
96 | free(buff); | 94 | return auto_string(INET_rresolve((struct sockaddr_in *) sap, numeric, 0xffffff00)); |
97 | buff = INET_rresolve((struct sockaddr_in *) sap, numeric, 0xffffff00); | ||
98 | return buff; | ||
99 | } | 95 | } |
100 | 96 | ||
101 | #ifdef UNUSED_AND_BUGGY | 97 | #ifdef UNUSED_AND_BUGGY |
@@ -171,13 +167,9 @@ static const struct aftype inet_aftype = { | |||
171 | /* dirty! struct sockaddr usually doesn't suffer for inet6 addresses, fst. */ | 167 | /* dirty! struct sockaddr usually doesn't suffer for inet6 addresses, fst. */ |
172 | static const char* FAST_FUNC INET6_sprint(struct sockaddr *sap, int numeric) | 168 | static const char* FAST_FUNC INET6_sprint(struct sockaddr *sap, int numeric) |
173 | { | 169 | { |
174 | static char *buff; | ||
175 | |||
176 | if (sap->sa_family == 0xFFFF || sap->sa_family == 0) | 170 | if (sap->sa_family == 0xFFFF || sap->sa_family == 0) |
177 | return "[NONE SET]"; | 171 | return "[NONE SET]"; |
178 | free(buff); | 172 | return auto_string(INET6_rresolve((struct sockaddr_in6 *) sap, numeric)); |
179 | buff = INET6_rresolve((struct sockaddr_in6 *) sap, numeric); | ||
180 | return buff; | ||
181 | } | 173 | } |
182 | 174 | ||
183 | #ifdef UNUSED | 175 | #ifdef UNUSED |
@@ -223,13 +215,11 @@ static const struct aftype inet6_aftype = { | |||
223 | /* Display an UNSPEC address. */ | 215 | /* Display an UNSPEC address. */ |
224 | static char* FAST_FUNC UNSPEC_print(unsigned char *ptr) | 216 | static char* FAST_FUNC UNSPEC_print(unsigned char *ptr) |
225 | { | 217 | { |
226 | static char *buff; | 218 | char *buff; |
227 | |||
228 | char *pos; | 219 | char *pos; |
229 | unsigned int i; | 220 | unsigned int i; |
230 | 221 | ||
231 | if (!buff) | 222 | buff = auto_string(xmalloc(sizeof(struct sockaddr) * 3 + 1)); |
232 | buff = xmalloc(sizeof(struct sockaddr) * 3 + 1); | ||
233 | pos = buff; | 223 | pos = buff; |
234 | for (i = 0; i < sizeof(struct sockaddr); i++) { | 224 | for (i = 0; i < sizeof(struct sockaddr); i++) { |
235 | /* careful -- not every libc's sprintf returns # bytes written */ | 225 | /* careful -- not every libc's sprintf returns # bytes written */ |
@@ -712,14 +702,12 @@ static const struct hwtype loop_hwtype = { | |||
712 | /* Display an Ethernet address in readable format. */ | 702 | /* Display an Ethernet address in readable format. */ |
713 | static char* FAST_FUNC ether_print(unsigned char *ptr) | 703 | static char* FAST_FUNC ether_print(unsigned char *ptr) |
714 | { | 704 | { |
715 | static char *buff; | 705 | char *buff; |
716 | |||
717 | free(buff); | ||
718 | buff = xasprintf("%02X:%02X:%02X:%02X:%02X:%02X", | 706 | buff = xasprintf("%02X:%02X:%02X:%02X:%02X:%02X", |
719 | (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377), | 707 | (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377), |
720 | (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377) | 708 | (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377) |
721 | ); | 709 | ); |
722 | return buff; | 710 | return auto_string(buff); |
723 | } | 711 | } |
724 | 712 | ||
725 | static const struct hwtype ether_hwtype = { | 713 | static const struct hwtype ether_hwtype = { |