From 53354ac47df03bdccebad66bc22958fa2b4da520 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sat, 7 Jun 2008 15:10:29 +0000 Subject: libbb: introduce and use print_flags(). Mostly by Natanael Copa function old new delta print_e2flags - 189 +189 print_flags_separated - 86 +86 static.flag_labels - 60 +60 static.dma_wmode_masks - 32 +32 static.flag_masks - 28 +28 static.arp_labels - 16 +16 static.arp_masks - 12 +12 ls_main 836 843 +7 ... popstring 140 134 -6 arp_show 740 708 -32 print_flags 189 25 -164 ipaddr_list_or_flush 2396 2170 -226 process_dev 5306 4706 -600 ------------------------------------------------------------------------------ (add/remove: 10/0 grow/shrink: 5/10 up/down: 458/-1043) Total: -585 bytes text data bss dec hex filename 810564 624 7060 818248 c7c48 busybox_old 810002 624 7060 817686 c7a16 busybox_unstripped --- networking/arp.c | 38 ++++++++++++++++++++++---------------- networking/libiproute/ipaddress.c | 19 ++++++++----------- 2 files changed, 30 insertions(+), 27 deletions(-) (limited to 'networking') diff --git a/networking/arp.c b/networking/arp.c index f42e09f7c..f85a91022 100644 --- a/networking/arp.c +++ b/networking/arp.c @@ -313,6 +313,26 @@ static void arp_disp(const char *name, char *ip, int type, int arp_flags, char *hwa, char *mask, char *dev) { + static const int arp_masks[] = { + ATF_PERM, ATF_PUBL, +#ifdef HAVE_ATF_MAGIC + ATF_MAGIC, +#endif +#ifdef HAVE_ATF_DONTPUB + ATF_DONTPUB, +#endif + ATF_USETRAILERS, + }; + static const char arp_labels[] ALIGN1 = "PERM\0""PUP\0" +#ifdef HAVE_ATF_MAGIC + "AUTO\0" +#endif +#ifdef HAVE_ATF_DONTPUB + "DONTPUB\0" +#endif + "TRAIL\0" + ; + const struct hwtype *xhw; xhw = get_hwntype(type); @@ -333,22 +353,8 @@ arp_disp(const char *name, char *ip, int type, int arp_flags, if (arp_flags & ATF_NETMASK) printf("netmask %s ", mask); - if (arp_flags & ATF_PERM) - printf("PERM "); - if (arp_flags & ATF_PUBL) - printf("PUP "); -#ifdef HAVE_ATF_MAGIC - if (arp_flags & ATF_MAGIC) - printf("AUTO "); -#endif -#ifdef HAVE_ATF_DONTPUB - if (arp_flags & ATF_DONTPUB) - printf("DONTPUB "); -#endif - if (arp_flags & ATF_USETRAILERS) - printf("TRAIL "); - - printf("on %s\n", dev); + print_flags_separated(arp_masks, arp_labels, arp_flags, " "); + printf(" on %s\n", dev); } /* Display the contents of the ARP cache in the kernel. */ diff --git a/networking/libiproute/ipaddress.c b/networking/libiproute/ipaddress.c index 07b27870d..faa3f2d06 100644 --- a/networking/libiproute/ipaddress.c +++ b/networking/libiproute/ipaddress.c @@ -45,16 +45,15 @@ typedef struct filter_t { static void print_link_flags(unsigned flags, unsigned mdown) { + static const int flag_masks[] = { + IFF_LOOPBACK, IFF_BROADCAST, IFF_POINTOPOINT, + IFF_MULTICAST, IFF_NOARP, IFF_UP, IFF_LOWER_UP }; + static const char flag_labels[] ALIGN1 = + "LOOPBACK\0""BROADCAST\0""POINTOPOINT\0" + "MULTICAST\0""NOARP\0""UP\0""LOWER_UP\0"; + bb_putchar('<'); flags &= ~IFF_RUNNING; -#define _PF(f) if (flags & IFF_##f) { \ - flags &= ~IFF_##f; \ - printf(#f "%s", flags ? "," : ""); } - _PF(LOOPBACK); - _PF(BROADCAST); - _PF(POINTOPOINT); - _PF(MULTICAST); - _PF(NOARP); #if 0 _PF(ALLMULTI); _PF(PROMISC); @@ -66,9 +65,7 @@ static void print_link_flags(unsigned flags, unsigned mdown) _PF(PORTSEL); _PF(NOTRAILERS); #endif - _PF(UP); - _PF(LOWER_UP); -#undef _PF + flags = print_flags_separated(flag_masks, flag_labels, flags, ","); if (flags) printf("%x", flags); if (mdown) -- cgit v1.2.3