getopt32: remove opt_complementary

function                                             old     new   delta
vgetopt32                                           1318    1392     +74
runsvdir_main                                        703     713     +10
bb_make_directory                                    423     425      +2
collect_cpu                                          546     545      -1
opt_chars                                              3       -      -3
opt_complementary                                      4       -      -4
tftpd_main                                           567     562      -5
ntp_init                                             476     471      -5
zcip_main                                           1266    1256     -10
xxd_main                                             428     418     -10
whois_main                                           140     130     -10
who_main                                             463     453     -10
which_main                                           212     202     -10
wget_main                                           2535    2525     -10
watchdog_main                                        291     281     -10
watch_main                                           222     212     -10
vlock_main                                           399     389     -10
uuencode_main                                        332     322     -10
uudecode_main                                        316     306     -10
unlink_main                                           45      35     -10
udhcpd_main                                         1482    1472     -10
udhcpc_main                                         2762    2752     -10
tune2fs_main                                         290     280     -10
tunctl_main                                          366     356     -10
truncate_main                                        218     208     -10
tr_main                                              518     508     -10
time_main                                           1134    1124     -10
tftp_main                                            286     276     -10
telnetd_main                                        1873    1863     -10
tcpudpsvd_main                                      1785    1775     -10
taskset_main                                         521     511     -10
tar_main                                            1009     999     -10
tail_main                                           1644    1634     -10
syslogd_main                                        1967    1957     -10
switch_root_main                                     368     358     -10
svlogd_main                                         1454    1444     -10
sv                                                  1296    1286     -10
stat_main                                            104      94     -10
start_stop_daemon_main                              1028    1018     -10
split_main                                           542     532     -10
sort_main                                            796     786     -10
slattach_main                                        624     614     -10
shuf_main                                            504     494     -10
setsid_main                                           96      86     -10
setserial_main                                      1132    1122     -10
setfont_main                                         388     378     -10
setconsole_main                                       78      68     -10
sendmail_main                                       1209    1199     -10
sed_main                                             677     667     -10
script_main                                         1077    1067     -10
run_parts_main                                       325     315     -10
rtcwake_main                                         454     444     -10
rm_main                                              175     165     -10
reformime_main                                       119     109     -10
readlink_main                                        123     113     -10
rdate_main                                           246     236     -10
pwdx_main                                            189     179     -10
pstree_main                                          317     307     -10
pscan_main                                           663     653     -10
popmaildir_main                                      818     808     -10
pmap_main                                             80      70     -10
nc_main                                             1042    1032     -10
mv_main                                              558     548     -10
mountpoint_main                                      477     467     -10
mount_main                                          1264    1254     -10
modprobe_main                                        768     758     -10
modinfo_main                                         333     323     -10
mktemp_main                                          200     190     -10
mkswap_main                                          324     314     -10
mkfs_vfat_main                                      1489    1479     -10
microcom_main                                        715     705     -10
md5_sha1_sum_main                                    521     511     -10
man_main                                             867     857     -10
makedevs_main                                       1052    1042     -10
ls_main                                              563     553     -10
losetup_main                                         432     422     -10
loadfont_main                                         89      79     -10
ln_main                                              524     514     -10
link_main                                             75      65     -10
ipcalc_main                                          544     534     -10
iostat_main                                         2397    2387     -10
install_main                                         768     758     -10
id_main                                              480     470     -10
i2cset_main                                         1239    1229     -10
i2cget_main                                          380     370     -10
i2cdump_main                                        1482    1472     -10
i2cdetect_main                                       682     672     -10
hwclock_main                                         406     396     -10
httpd_main                                           741     731     -10
grep_main                                            837     827     -10
getty_main                                          1559    1549     -10
fuser_main                                           297     287     -10
ftpgetput_main                                       345     335     -10
ftpd_main                                           2232    2222     -10
fstrim_main                                          251     241     -10
fsfreeze_main                                         77      67     -10
fsck_minix_main                                     2921    2911     -10
flock_main                                           314     304     -10
flashcp_main                                         740     730     -10
flash_eraseall_main                                  833     823     -10
fdformat_main                                        532     522     -10
expand_main                                          680     670     -10
eject_main                                           335     325     -10
dumpleases_main                                      630     620     -10
du_main                                              314     304     -10
dos2unix_main                                        441     431     -10
diff_main                                           1350    1340     -10
df_main                                             1064    1054     -10
date_main                                           1095    1085     -10
cut_main                                             961     951     -10
cryptpw_main                                         228     218     -10
crontab_main                                         575     565     -10
crond_main                                          1149    1139     -10
cp_main                                              370     360     -10
common_traceroute_main                              3834    3824     -10
common_ping_main                                    1767    1757     -10
comm_main                                            239     229     -10
cmp_main                                             655     645     -10
chrt_main                                            379     369     -10
chpst_main                                           704     694     -10
chpasswd_main                                        308     298     -10
chown_main                                           171     161     -10
chmod_main                                           158     148     -10
cat_main                                             428     418     -10
bzip2_main                                           120     110     -10
blkdiscard_main                                      264     254     -10
base64_main                                          221     211     -10
arping_main                                         1665    1655     -10
ar_main                                              556     546     -10
adjtimex_main                                        406     396     -10
adduser_main                                         882     872     -10
addgroup_main                                        411     401     -10
acpid_main                                          1198    1188     -10
optstring                                             11       -     -11
opt_string                                            18       -     -18
OPT_STR                                               25       -     -25
ubi_tools_main                                      1288    1258     -30
ls_options                                            31       -     -31
------------------------------------------------------------------------------
(add/remove: 0/6 grow/shrink: 3/129 up/down: 86/-1383)      Total: -1297 bytes
   text	   data	    bss	    dec	    hex	filename
 915428	    485	   6876	 922789	  e14a5	busybox_old
 914629	    485	   6872	 921986	  e1182	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2017-08-08 21:55:02 +02:00
parent 036585a911
commit 22542eca18
143 changed files with 598 additions and 503 deletions

View File

@@ -264,8 +264,12 @@ int acpid_main(int argc UNUSED_PARAM, char **argv)
INIT_G();
opt_complementary = "df:e--e";
opts = getopt32(argv, "c:de:fl:a:M:" IF_FEATURE_PIDFILE("p:") IF_FEATURE_ACPID_COMPAT("g:m:s:S:v"),
opts = getopt32(argv, "^"
"c:de:fl:a:M:"
IF_FEATURE_PIDFILE("p:")
IF_FEATURE_ACPID_COMPAT("g:m:s:S:v")
"\0"
"df:e--e",
&opt_dir, &opt_input, &opt_logfile, &opt_action, &opt_map
IF_FEATURE_PIDFILE(, &opt_pidfile)
IF_FEATURE_ACPID_COMPAT(, NULL, NULL, NULL, NULL)

View File

@@ -53,8 +53,7 @@ int blkdiscard_main(int argc UNUSED_PARAM, char **argv)
OPT_SECURE = (1 << 2),
};
opt_complementary = "=1";
opts = getopt32(argv, "o:l:s", &offset_str, &length_str);
opts = getopt32(argv, "^" "o:l:s" "\0" "=1", &offset_str, &length_str);
argv += optind;
fd = xopen(argv[0], O_RDWR|O_EXCL);

View File

@@ -77,8 +77,7 @@ int chrt_main(int argc UNUSED_PARAM, char **argv)
int policy = SCHED_RR;
/* only one policy accepted */
opt_complementary = "r--fo:f--ro:o--rf";
opt = getopt32(argv, "+mprfo");
opt = getopt32(argv, "^+" "mprfo" "\0" "r--fo:f--ro:o--rf");
if (opt & OPT_m) { /* print min/max and exit */
show_min_max(SCHED_FIFO);
show_min_max(SCHED_RR);

View File

@@ -124,8 +124,9 @@ int eject_main(int argc UNUSED_PARAM, char **argv)
unsigned flags;
const char *device;
opt_complementary = "?1:t--T:T--t";
flags = getopt32(argv, "tT" IF_FEATURE_EJECT_SCSI("s"));
flags = getopt32(argv, "^" "tT"IF_FEATURE_EJECT_SCSI("s")
"\0" "?1:t--T:T--t"
);
device = argv[optind] ? argv[optind] : "/dev/cdrom";
/* We used to do "umount <device>" here, but it was buggy

View File

@@ -82,8 +82,7 @@ int fallocate_main(int argc UNUSED_PARAM, char **argv)
int fd;
/* exactly one non-option arg */
opt_complementary = "=1";
opts = getopt32(argv, "l:o:", &str_l, &str_o);
opts = getopt32(argv, "^" "l:o:" "\0" "=1", &str_l, &str_o);
if (!(opts & 1))
bb_show_usage();

View File

@@ -66,8 +66,7 @@ int fdformat_main(int argc UNUSED_PARAM, char **argv)
struct floppy_struct param;
struct format_descr descr;
opt_complementary = "=1"; /* must have 1 param */
verify = !getopt32(argv, "n");
verify = !getopt32(argv, "^" "n" "\0" "=1");
argv += optind;
xstat(*argv, &st);

View File

@@ -45,9 +45,8 @@ int flock_main(int argc UNUSED_PARAM, char **argv)
"nonblock\0" No_argument "n"
;
#endif
opt_complementary = "-1";
opt = getopt32long(argv, "+sxnu", flock_longopts);
opt = getopt32long(argv, "^+" "sxnu" "\0" "-1", flock_longopts);
argv += optind;
if (argv[1]) {

View File

@@ -1232,8 +1232,7 @@ int fsck_minix_main(int argc UNUSED_PARAM, char **argv)
INIT_G();
opt_complementary = "=1:ar"; /* one argument; -a assumes -r */
getopt32(argv, OPTION_STR);
getopt32(argv, "^" OPTION_STR "\0" "=1:ar" /* one arg; -a assumes -r */);
argv += optind;
device_name = argv[0];

View File

@@ -39,8 +39,9 @@ int fsfreeze_main(int argc UNUSED_PARAM, char **argv)
/* exactly one non-option arg: the mountpoint */
/* one of opts is required */
/* opts are mutually exclusive */
opt_complementary = "=1:""\xff:\xfe:""\xff--\xfe:\xfe--\xff";
opts = getopt32long(argv, "",
opts = getopt32long(argv, "^"
"" /* no opts */
"\0" "=1:""\xff:\xfe:""\xff--\xfe:\xfe--\xff",
"freeze\0" No_argument "\xff"
"unfreeze\0" No_argument "\xfe"
);

View File

@@ -71,8 +71,9 @@ int fstrim_main(int argc UNUSED_PARAM, char **argv)
;
#endif
opt_complementary = "=1"; /* exactly one non-option arg: the mountpoint */
opts = getopt32long(argv, "o:l:m:v", fstrim_longopts, &arg_o, &arg_l, &arg_m);
opts = getopt32long(argv, "^" "o:l:m:v" "\0" "=1", fstrim_longopts,
&arg_o, &arg_l, &arg_m
);
memset(&range, 0, sizeof(range));
range.len = ULLONG_MAX;

View File

@@ -73,8 +73,9 @@ int xxd_main(int argc UNUSED_PARAM, char **argv)
#define OPT_s (1 << 1)
#define OPT_a (1 << 2)
#define OPT_p (1 << 3)
opt_complementary = "?1"; /* 1 argument max */
opt = getopt32(argv, "l:s:apg:+c:+", &opt_l, &opt_s, &bytes, &cols);
opt = getopt32(argv, "^" "l:s:apg:+c:+" "\0" "?1" /* 1 argument max */,
&opt_l, &opt_s, &bytes, &cols
);
argv += optind;
dumper->dump_vflag = ALL;

View File

@@ -343,8 +343,11 @@ int hwclock_main(int argc UNUSED_PARAM, char **argv)
/* Initialize "timezone" (libc global variable) */
tzset();
opt_complementary = "r--wst:w--rst:s--wrt:t--rsw:l--u:u--l";
opt = getopt32long(argv, "lurswtf:", hwclock_longopts, &rtcname);
opt = getopt32long(argv,
"^lurswtf:" "\0" "r--wst:w--rst:s--wrt:t--rsw:l--u:u--l",
hwclock_longopts,
&rtcname
);
/* If -u or -l wasn't given check if we are using utc */
if (opt & (HWCLOCK_OPT_UTC | HWCLOCK_OPT_LOCALTIME))

View File

@@ -57,8 +57,7 @@ int losetup_main(int argc UNUSED_PARAM, char **argv)
OPT_r = (1 << 4), /* must be last */
};
opt_complementary = "?2:d--ofar:a--ofr";
opt = getopt32(argv, "do:far", &opt_o);
opt = getopt32(argv, "^" "do:far" "\0" "?2:d--ofar:a--ofr", &opt_o);
argv += optind;
/* LOOPDEV */

View File

@@ -180,8 +180,7 @@ int mkfs_reiser_main(int argc UNUSED_PARAM, char **argv)
// using global "option_mask32" instead of local "opts":
// we are register starved here
opt_complementary = "-1";
/*opts =*/ getopt32(argv, "b:+j:s:o:t:B:h:u:l:fqd",
/*opts =*/ getopt32(argv, "^" "b:+j:s:o:t:B:h:u:l:fqd" "\0" "-1",
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &label);
argv += optind; // argv[0] -- device

View File

@@ -269,8 +269,9 @@ int mkfs_vfat_main(int argc UNUSED_PARAM, char **argv)
OPT_v = 1 << 16, // verbose
};
opt_complementary = "-1";//:b+:f+:F+:h+:r+:R+:s+:S+:vv:c--l:l--c";
opts = getopt32(argv, "Ab:cCf:F:h:Ii:l:m:n:r:R:s:S:v",
opts = getopt32(argv, "^"
"Ab:cCf:F:h:Ii:l:m:n:r:R:s:S:v"
"\0" "-1", //:b+:f+:F+:h+:r+:R+:s+:S+:vv:c--l:l--c
NULL, NULL, NULL, NULL, NULL,
NULL, NULL, &volume_label, NULL, NULL, NULL, NULL);
argv += optind;

View File

@@ -119,9 +119,8 @@ int mkswap_main(int argc UNUSED_PARAM, char **argv)
INIT_G();
opt_complementary = "-1"; /* at least one param */
/* TODO: -p PAGESZ, -U UUID */
getopt32(argv, "L:", &label);
getopt32(argv, "^" "L:" "\0" "-1"/*at least one arg*/, &label);
argv += optind;
fd = xopen(argv[0], O_WRONLY);

View File

@@ -2205,10 +2205,14 @@ int mount_main(int argc UNUSED_PARAM, char **argv)
// Parse remaining options
// Max 2 params; -o is a list, -v is a counter
opt_complementary = "?2" IF_FEATURE_MOUNT_VERBOSE("vv");
opt = getopt32(argv, OPTION_STR, &lst_o, &fstype, &O_optmatch
IF_FEATURE_MOUNT_OTHERTAB(, &fstabname)
IF_FEATURE_MOUNT_VERBOSE(, &verbose));
opt = getopt32(argv, "^"
OPTION_STR
"\0" "?2"IF_FEATURE_MOUNT_VERBOSE("vv"),
&lst_o, &fstype, &O_optmatch
IF_FEATURE_MOUNT_OTHERTAB(, &fstabname)
IF_FEATURE_MOUNT_VERBOSE(, &verbose)
);
while (lst_o) append_mount_options(&cmdopts, llist_pop(&lst_o)); // -o
if (opt & OPT_r) append_mount_options(&cmdopts, "ro"); // -r
if (opt & OPT_w) append_mount_options(&cmdopts, "rw"); // -w

View File

@@ -43,8 +43,7 @@ int mountpoint_main(int argc UNUSED_PARAM, char **argv)
char *arg;
int rc, opt;
opt_complementary = "=1"; /* must have one argument */
opt = getopt32(argv, "qdxn");
opt = getopt32(argv, "^" "qdxn" "\0" "=1");
#define OPT_q (1)
#define OPT_d (2)
#define OPT_x (4)

View File

@@ -81,8 +81,7 @@ int rdate_main(int argc UNUSED_PARAM, char **argv)
time_t remote_time;
unsigned flags;
opt_complementary = "-1";
flags = getopt32(argv, "sp");
flags = getopt32(argv, "^" "sp" "\0" "-1");
remote_time = askremotedate(argv[optind]);

View File

@@ -155,9 +155,9 @@ int rtcwake_main(int argc UNUSED_PARAM, char **argv)
"time\0" Required_argument "t"
;
#endif
/* Must have -s or -t, exclusive */
opt_complementary = "s:t:s--t:t--s";
opt = getopt32long(argv, "alud:m:s:t:", rtcwake_longopts,
opt = getopt32long(argv,
/* Must have -s or -t, exclusive */
"^alud:m:s:t:" "\0" "s:t:s--t:t--s", rtcwake_longopts,
&rtcname, &suspend, &opt_seconds, &opt_time);
/* this is the default

View File

@@ -80,8 +80,10 @@ int script_main(int argc UNUSED_PARAM, char **argv)
;
#endif
opt_complementary = "?1"; /* max one arg */
opt = getopt32long(argv, "ac:fqt::", script_longopts, &shell_arg, &str_t);
opt = getopt32long(argv, "^" "ac:fqt::" "\0" "?1"/* max one arg */,
script_longopts,
&shell_arg, &str_t
);
//argc -= optind;
argv += optind;
if (argv[0]) {

View File

@@ -37,8 +37,8 @@ int setsid_main(int argc UNUSED_PARAM, char **argv)
{
unsigned opt;
opt_complementary = "-1"; /* at least one arg */
opt = getopt32(argv, "+c"); /* +: stop on first non-opt */
/* +: stop on first non-opt */
opt = getopt32(argv, "^+" "c" "\0" "-1"/* at least one arg */);
argv += optind;
/* setsid() is allowed only when we are not a process group leader.

View File

@@ -97,9 +97,8 @@ int switch_root_main(int argc UNUSED_PARAM, char **argv)
struct statfs stfs;
dev_t rootdev;
// Parse args (-c console)
opt_complementary = "-2"; // minimum 2 params
getopt32(argv, "+c:", &console); // '+': stop at first non-option
// Parse args (-c console). '+': stop at first non-option
getopt32(argv, "^+" "c:" "\0" "-2" /* minimum 2 args */, &console);
argv += optind;
newroot = *argv++;

View File

@@ -123,8 +123,7 @@ int taskset_main(int argc UNUSED_PARAM, char **argv)
* Indeed, util-linux-2.13-pre7 uses:
* getopt_long(argc, argv, "+pchV", ...), not "...p:..." */
opt_complementary = "-1"; /* at least 1 arg */
opt_p = getopt32(argv, "+p");
opt_p = getopt32(argv, "^+" "p" "\0" "-1" /* at least 1 arg */);
argv += optind;
aff = *argv++;

View File

@@ -137,7 +137,7 @@ static const struct namespace_descr ns_list[] = {
* we are forced to use "fake" letters for them.
* '+': stop at first non-option.
*/
static const char opt_str[] ALIGN1 = "+muinpU""fr""\xfd::""\xfe:""\xff:";
#define OPT_STR "+muinpU""fr""\xfd::""\xfe:""\xff:"
static const char unshare_longopts[] ALIGN1 =
"mount\0" Optional_argument "\xf0"
"uts\0" Optional_argument "\xf1"
@@ -210,7 +210,7 @@ int unshare_main(int argc UNUSED_PARAM, char **argv)
prop_str = PRIVATE_STR;
setgrp_str = NULL;
opt_complementary =
opts = getopt32long(argv, "^" OPT_STR "\0"
"\xf0""m" /* long opts (via their "fake chars") imply short opts */
":\xf1""u"
":\xf2""i"
@@ -219,15 +219,14 @@ int unshare_main(int argc UNUSED_PARAM, char **argv)
":\xf5""U"
":ru" /* --map-root-user or -r implies -u */
":\xfd""m" /* --mount-proc implies -m */
;
opts = getopt32long(argv, opt_str, unshare_longopts,
&proc_mnt_target, &prop_str, &setgrp_str,
&ns_ctx_list[NS_MNT_POS].path,
&ns_ctx_list[NS_UTS_POS].path,
&ns_ctx_list[NS_IPC_POS].path,
&ns_ctx_list[NS_NET_POS].path,
&ns_ctx_list[NS_PID_POS].path,
&ns_ctx_list[NS_USR_POS].path
, unshare_longopts,
&proc_mnt_target, &prop_str, &setgrp_str,
&ns_ctx_list[NS_MNT_POS].path,
&ns_ctx_list[NS_UTS_POS].path,
&ns_ctx_list[NS_IPC_POS].path,
&ns_ctx_list[NS_NET_POS].path,
&ns_ctx_list[NS_PID_POS].path,
&ns_ctx_list[NS_USR_POS].path
);
argv += optind;
//bb_error_msg("opts:0x%x", opts);