diff options
author | Denis Vlasenko | 2009-03-05 09:21:57 +0000 |
---|---|---|
committer | Denis Vlasenko | 2009-03-05 09:21:57 +0000 |
commit | 76140a77c9c47c41f244d90d4250d77b9504f7d4 (patch) | |
tree | 67c43b25beb904f111e8a96548bee1592f5010e2 /networking/libiproute/ll_proto.c | |
parent | 021de3f0297af87bfc098bd364dffb332d6ace20 (diff) | |
download | busybox-76140a77c9c47c41f244d90d4250d77b9504f7d4.zip busybox-76140a77c9c47c41f244d90d4250d77b9504f7d4.tar.gz |
networking/libiproute/*: code shrink by optimizing numeric conversions
and other misc stuff
function old new delta
print_tunnel 660 656 -4
format_host 5 - -5
get_unsigned 70 54 -16
get_u32 70 54 -16
do_iplink 1173 1151 -22
get_prefix 417 393 -24
print_rule 800 771 -29
print_addrinfo 1374 1342 -32
print_route 1745 1709 -36
iprule_modify 905 866 -39
iproute_modify 1105 1048 -57
get_integer 70 - -70
parse_args 1684 1440 -244
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 0/11 up/down: 0/-594) Total: -594 bytes
text data bss dec hex filename
817378 476 7892 825746 c9992 busybox_old
816784 476 7892 825152 c9740 busybox_unstripped
Diffstat (limited to 'networking/libiproute/ll_proto.c')
-rw-r--r-- | networking/libiproute/ll_proto.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/networking/libiproute/ll_proto.c b/networking/libiproute/ll_proto.c index b826873..a934935 100644 --- a/networking/libiproute/ll_proto.c +++ b/networking/libiproute/ll_proto.c @@ -115,13 +115,15 @@ int ll_proto_a2n(unsigned short *id, char *buf) unsigned i; for (i = 0; i < ARRAY_SIZE(llproto_names); i++) { if (strcasecmp(llproto_names[i].name, buf) == 0) { - *id = htons(llproto_names[i].id); - return 0; + i = llproto_names[i].id; + goto good; } } - if (get_u16(id, buf, 0)) + i = bb_strtou(buf, NULL, 0); + if (errno || i > 0xffff) return -1; - *id = htons(*id); + good: + *id = htons(i); return 0; } |