From 091965768da4175d3763e61db56bba058d68ae3b Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sat, 21 Jul 2007 13:27:44 +0000 Subject: libbb: nuke BB_GETOPT_ERROR, always die if there are mutually exclusive options find_pair 164 180 +16 passwd_main 1222 1230 +8 display_speed 91 96 +5 msh_main 1335 1339 +4 qrealloc 38 36 -2 refresh 1190 1182 -8 cut_main 543 532 -11 sendCgi 1807 1794 -13 getopt32 1063 1045 -18 arith 2077 2030 -47 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/6 up/down: 33/-99) Total: -66 bytes text data bss dec hex filename 781548 1168 11900 794616 c1ff8 busybox_old 781452 1168 11900 794520 c1f98 busybox_unstripped --- libbb/getopt32.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) (limited to 'libbb') diff --git a/libbb/getopt32.c b/libbb/getopt32.c index d4465f899..f5aaa70df 100644 --- a/libbb/getopt32.c +++ b/libbb/getopt32.c @@ -217,20 +217,12 @@ Special characters: -b, -c and -f are mutally exclusive and should raise an error if specified together. In this case you must set opt_complementary = "b--cf:c--bf:f--bc". If two of the - mutually exclusive options are found, getopt32's - return value will have the error flag set (BB_GETOPT_ERROR) so - that we can check for it: - - if (flags & BB_GETOPT_ERROR) - bb_show_usage(); + mutually exclusive options are found, getopt32 will call + bb_show_usage() and die. "x--x" Variation of the above, it means that -x option should occur at most once. - "?" A "?" as the first char in a opt_complementary group means: - if BB_GETOPT_ERROR is detected, don't return, call bb_show_usage - and exit instead. Next char after '?' can't be a digit. - "::" A double colon after a char in opt_complementary means that the option can occur multiple times. Each occurrence will be saved as a llist_t element instead of char*. @@ -476,11 +468,8 @@ getopt32(int argc, char **argv, const char *applet_opts, ...) if (on_off->opt == 0 && c != 0) bb_show_usage(); } - if (flags & on_off->incongruously) { - if ((spec_flgs & SHOW_USAGE_IF_ERROR)) - bb_show_usage(); - flags |= BB_GETOPT_ERROR; - } + if (flags & on_off->incongruously) + bb_show_usage(); trigger = on_off->switch_on & on_off->switch_off; flags &= ~(on_off->switch_off ^ trigger); flags |= on_off->switch_on ^ trigger; -- cgit v1.2.3-55-g6feb