*: 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
This commit is contained in:
@@ -264,16 +264,14 @@ int arping_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
err_str = xasprintf("interface %s %%s", device);
|
||||
{
|
||||
unsigned opt;
|
||||
char *str_count, *str_timeout;
|
||||
char *str_timeout;
|
||||
|
||||
/* Dad also sets quit_on_reply.
|
||||
* Advert also sets unsolicited.
|
||||
*/
|
||||
opt_complementary = "=1:Df:AU";
|
||||
opt_complementary = "=1:Df:AU:c+";
|
||||
opt = getopt32(argv, "DUAqfbc:w:I:s:",
|
||||
&str_count, &str_timeout, &device, &source);
|
||||
if (opt & 0x40) /* -c: count */
|
||||
count = xatoi_u(str_count);
|
||||
&count, &str_timeout, &device, &source);
|
||||
if (opt & 0x80) /* -w: timeout */
|
||||
timeout_us = xatou_range(str_timeout, 0, INT_MAX/2000000) * 1000000 + 500000;
|
||||
//if (opt & 0x200) /* -s: source */
|
||||
|
@@ -674,7 +674,7 @@ Debug("wrote %d to net, errno %d", rr, errno);
|
||||
int nc_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||
int nc_main(int argc, char **argv)
|
||||
{
|
||||
char *str_p, *str_s, *str_w;
|
||||
char *str_p, *str_s;
|
||||
USE_NC_EXTRA(char *str_i, *str_o;)
|
||||
char *themdotted = themdotted; /* gcc */
|
||||
char **proggie;
|
||||
@@ -710,10 +710,10 @@ int nc_main(int argc, char **argv)
|
||||
e_found:
|
||||
|
||||
// -g -G -t -r deleted, unimplemented -a deleted too
|
||||
opt_complementary = "?2:vv"; /* max 2 params, -v is a counter */
|
||||
opt_complementary = "?2:vv:w+"; /* max 2 params; -v is a counter; -w N */
|
||||
getopt32(argv, "hnp:s:uvw:" USE_NC_SERVER("l")
|
||||
USE_NC_EXTRA("i:o:z"),
|
||||
&str_p, &str_s, &str_w
|
||||
&str_p, &str_s, &o_wait
|
||||
USE_NC_EXTRA(, &str_i, &str_o, &o_verbose));
|
||||
argv += optind;
|
||||
#if ENABLE_NC_EXTRA
|
||||
@@ -731,9 +731,7 @@ int nc_main(int argc, char **argv)
|
||||
//if (option_mask32 & OPT_r) /* randomize various things */
|
||||
//if (option_mask32 & OPT_u) /* use UDP */
|
||||
//if (option_mask32 & OPT_v) /* verbose */
|
||||
if (option_mask32 & OPT_w) { /* wait time */
|
||||
o_wait = xatoi_u(str_w);
|
||||
}
|
||||
//if (option_mask32 & OPT_w) /* wait time */
|
||||
//if (option_mask32 & OPT_z) /* little or no data xfer */
|
||||
|
||||
/* We manage our fd's so that they are never 0,1,2 */
|
||||
|
@@ -397,9 +397,6 @@ int tftp_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
len_and_sockaddr *peer_lsa;
|
||||
const char *localfile = NULL;
|
||||
const char *remotefile = NULL;
|
||||
#if ENABLE_FEATURE_TFTP_BLOCKSIZE
|
||||
const char *sblocksize = NULL;
|
||||
#endif
|
||||
int port;
|
||||
USE_GETPUT(int cmd;)
|
||||
int fd = -1;
|
||||
@@ -409,13 +406,14 @@ int tftp_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
|
||||
/* -p or -g is mandatory, and they are mutually exclusive */
|
||||
opt_complementary = "" USE_FEATURE_TFTP_GET("g:") USE_FEATURE_TFTP_PUT("p:")
|
||||
USE_GETPUT("?g--p:p--g");
|
||||
USE_GETPUT("g--p:p--g:")
|
||||
USE_FEATURE_TFTP_BLOCKSIZE("b+");
|
||||
|
||||
USE_GETPUT(cmd =) getopt32(argv,
|
||||
USE_FEATURE_TFTP_GET("g") USE_FEATURE_TFTP_PUT("p")
|
||||
"l:r:" USE_FEATURE_TFTP_BLOCKSIZE("b:"),
|
||||
&localfile, &remotefile
|
||||
USE_FEATURE_TFTP_BLOCKSIZE(, &sblocksize));
|
||||
USE_FEATURE_TFTP_BLOCKSIZE(, &blocksize));
|
||||
argv += optind;
|
||||
|
||||
flags = O_RDONLY;
|
||||
@@ -423,12 +421,8 @@ int tftp_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
flags = O_WRONLY | O_CREAT | O_TRUNC;
|
||||
|
||||
#if ENABLE_FEATURE_TFTP_BLOCKSIZE
|
||||
if (sblocksize) {
|
||||
blocksize = xatoi_u(sblocksize);
|
||||
if (!tftp_blocksize_check(blocksize, 0)) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
if (!tftp_blocksize_check(blocksize, 0))
|
||||
return EXIT_FAILURE;
|
||||
#endif
|
||||
|
||||
if (!localfile)
|
||||
|
@@ -132,7 +132,7 @@ int udhcpc_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||
int udhcpc_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
{
|
||||
uint8_t *temp, *message;
|
||||
char *str_c, *str_V, *str_h, *str_F, *str_r, *str_T, *str_A, *str_t;
|
||||
char *str_c, *str_V, *str_h, *str_F, *str_r;
|
||||
USE_FEATURE_UDHCP_PORT(char *str_P;)
|
||||
llist_t *list_O = NULL;
|
||||
#if ENABLE_FEATURE_UDHCPC_ARPING
|
||||
@@ -223,7 +223,8 @@ int udhcpc_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
client_config.script = DEFAULT_SCRIPT;
|
||||
|
||||
/* Parse command line */
|
||||
opt_complementary = "c--C:C--c:O::"; // Cc: mutually exclusive; O: list
|
||||
/* Cc: mutually exclusive; O: list; -T,-t,-A take numeric param */
|
||||
opt_complementary = "c--C:C--c:O::T+:t+:A+";
|
||||
#if ENABLE_GETOPT_LONG
|
||||
applet_long_options = udhcpc_longopts;
|
||||
#endif
|
||||
@@ -233,7 +234,8 @@ int udhcpc_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
"O:"
|
||||
, &str_c, &str_V, &str_h, &str_h, &str_F
|
||||
, &client_config.interface, &client_config.pidfile, &str_r
|
||||
, &client_config.script, &str_T, &str_t, &str_A
|
||||
, &client_config.script
|
||||
, &discover_timeout, &discover_retries, &tryagain_timeout
|
||||
USE_FEATURE_UDHCPC_ARPING(, &str_W)
|
||||
USE_FEATURE_UDHCP_PORT(, &str_P)
|
||||
, &list_O
|
||||
@@ -273,12 +275,9 @@ int udhcpc_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||
if (opt & OPT_r)
|
||||
requested_ip = inet_addr(str_r);
|
||||
// if (opt & OPT_s) client_config.script = ...
|
||||
if (opt & OPT_T)
|
||||
discover_timeout = xatoi_u(str_T);
|
||||
if (opt & OPT_t)
|
||||
discover_retries = xatoi_u(str_t);
|
||||
if (opt & OPT_A)
|
||||
tryagain_timeout = xatoi_u(str_A);
|
||||
// if (opt & OPT_T) discover_timeout = xatoi_u(str_T);
|
||||
// if (opt & OPT_t) discover_retries = xatoi_u(str_t);
|
||||
// if (opt & OPT_A) tryagain_timeout = xatoi_u(str_A);
|
||||
if (opt & OPT_v) {
|
||||
puts("version "BB_VER);
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user