From 1d42665b6b0571b9fa5d3b10fbf2dd03382f0ba2 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Mon, 17 Mar 2008 09:09:09 +0000 Subject: *: shrink: use Vladimir's "o+" specifier instead of xatou(opt_param) function old new delta getopt32 1370 1385 +15 sulogin_main 490 494 +4 realpath_main 84 86 +2 sleep_main 76 77 +1 mt_main 256 257 +1 printenv_main 75 74 -1 fdformat_main 546 545 -1 usleep_main 44 42 -2 setlogcons_main 77 75 -2 ed_main 2654 2649 -5 deallocvt_main 69 64 -5 addgroup_main 373 368 -5 mkfs_minix_main 2989 2982 -7 tail_main 1221 1213 -8 sv_main 1254 1241 -13 du_main 348 328 -20 tftp_main 325 302 -23 split_main 581 558 -23 nc_main 1000 977 -23 diff_main 891 868 -23 arping_main 1797 1770 -27 ls_main 893 847 -46 od_main 2797 2750 -47 readprofile_main 1944 1895 -49 tcpudpsvd_main 1973 1922 -51 udhcpc_main 2590 2513 -77 grep_main 824 722 -102 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/22 up/down: 23/-560) Total: -537 bytes text data bss dec hex filename 796973 658 7428 805059 c48c3 busybox_old 796479 662 7420 804561 c46d1 busybox_unstripped --- util-linux/readprofile.c | 53 ++++++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 20 deletions(-) (limited to 'util-linux/readprofile.c') diff --git a/util-linux/readprofile.c b/util-linux/readprofile.c index ef7865951..e25d07d2b 100644 --- a/util-linux/readprofile.c +++ b/util-linux/readprofile.c @@ -8,7 +8,7 @@ */ /* - * 1999-02-22 Arkadiusz Mi¶kiewicz + * 1999-02-22 Arkadiusz Mickiewicz * - added Native Language Support * 1999-09-01 Stephane Eranian * - 64bit clean patch @@ -45,7 +45,7 @@ int readprofile_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int readprofile_main(int argc ATTRIBUTE_UNUSED, char **argv) { FILE *map; - const char *mapFile, *proFile, *mult = 0; + const char *mapFile, *proFile; unsigned long indx = 1; size_t len; uint64_t add0 = 0; @@ -55,37 +55,49 @@ int readprofile_main(int argc ATTRIBUTE_UNUSED, char **argv) char fn_name[S_LEN], next_name[S_LEN]; /* current and next name */ char mapline[S_LEN]; char mode[8]; - int optAll = 0, optInfo = 0, optReset = 0; - int optVerbose = 0, optNative = 0; - int optBins = 0, optSub = 0; int maplineno = 1; int header_printed; + int multiplier = 0; + unsigned opt; + enum { + OPT_M = (1 << 0), + OPT_m = (1 << 1), + OPT_p = (1 << 2), + OPT_n = (1 << 3), + OPT_a = (1 << 4), + OPT_b = (1 << 5), + OPT_s = (1 << 6), + OPT_i = (1 << 7), + OPT_r = (1 << 8), + OPT_v = (1 << 9), + }; +#define optMult (opt & OPT_M) +#define optNative (opt & OPT_n) +#define optAll (opt & OPT_a) +#define optBins (opt & OPT_b) +#define optSub (opt & OPT_s) +#define optInfo (opt & OPT_i) +#define optReset (opt & OPT_r) +#define optVerbose (opt & OPT_v) #define next (current^1) proFile = defaultpro; mapFile = defaultmap; - opt_complementary = "nn:aa:bb:ss:ii:rr:vv"; - getopt32(argv, "M:m:p:nabsirv", - &mult, &mapFile, &proFile, - &optNative, &optAll, &optBins, &optSub, - &optInfo, &optReset, &optVerbose); + opt_complementary = "M+"; /* -M N */ + opt = getopt32(argv, "M:m:p:nabsirv", &multiplier, &mapFile, &proFile); - if (optReset || mult) { - int multiplier, fd, to_write; + if (opt & (OPT_M|OPT_r)) { /* mult or reset, or both */ + int fd, to_write; /* * When writing the multiplier, if the length of the write is * not sizeof(int), the multiplier is not changed */ - if (mult) { - multiplier = xatoi_u(mult); - to_write = sizeof(int); - } else { - multiplier = 0; + to_write = sizeof(int); + if (!optMult) to_write = 1; /* sth different from sizeof(int) */ - } fd = xopen(defaultpro, O_WRONLY); xwrite(fd, &multiplier, to_write); @@ -187,8 +199,9 @@ int readprofile_main(int argc ATTRIBUTE_UNUSED, char **argv) if (optBins) { if (optVerbose || this > 0) printf(" total\t\t\t\t%u\n", this); - } else if ((this || optAll) && - (fn_len = next_add-fn_add) != 0) { + } else if ((this || optAll) + && (fn_len = next_add-fn_add) != 0 + ) { if (optVerbose) printf("%016llx %-40s %6i %8.4f\n", fn_add, fn_name, this, this/(double)fn_len); -- cgit v1.2.3