diff --git a/archival/ar.c b/archival/ar.c index bbdf2fddc..8326aa6de 100644 --- a/archival/ar.c +++ b/archival/ar.c @@ -70,7 +70,7 @@ extern int ar_main(int argc, char **argv) bb_opt_complementaly = "p~tx:t~px:x~pt"; opt = bb_getopt_ulflags(argc, argv, "ptxovcr"); - if ((opt & 0x80000000UL) || (opt == 0) || (optind == argc)) { + if ((opt & BB_GETOPT_ERROR) || (opt == 0) || (optind == argc)) { bb_show_usage(); } diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c index 5aa9881d5..b95ec2d6e 100644 --- a/archival/dpkg_deb.c +++ b/archival/dpkg_deb.c @@ -88,7 +88,7 @@ extern int dpkg_deb_main(int argc, char **argv) argcount = 2; } - if ((optind + argcount != argc) || (opt & 0x80000000UL)) { + if ((optind + argcount != argc) || (opt & BB_GETOPT_ERROR)) { bb_show_usage(); } diff --git a/archival/tar.c b/archival/tar.c index 950e21dd3..b2a212397 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -724,7 +724,7 @@ int tar_main(int argc, char **argv) ); /* Check one and only one context option was given */ - if(opt & 0x80000000UL) { + if(opt & BB_GETOPT_ERROR) { bb_show_usage(); } #ifdef CONFIG_FEATURE_TAR_CREATE diff --git a/coreutils/cut.c b/coreutils/cut.c index d26e80eee..e5fb5aff7 100644 --- a/coreutils/cut.c +++ b/coreutils/cut.c @@ -300,7 +300,7 @@ extern int cut_main(int argc, char **argv) part = opt & (OPT_BYTE_FLGS|OPT_CHAR_FLGS|OPT_FIELDS_FLGS); if(part == 0) bb_error_msg_and_die("you must specify a list of bytes, characters, or fields"); - if(opt & 0x80000000UL) + if(opt & BB_GETOPT_ERROR) bb_error_msg_and_die("only one type of list may be specified"); parse_lists(sopt); if((opt & (OPT_DELIM_FLGS))) { diff --git a/coreutils/date.c b/coreutils/date.c index 3608df69f..513aadeec 100644 --- a/coreutils/date.c +++ b/coreutils/date.c @@ -166,7 +166,7 @@ int date_main(int argc, char **argv) bb_error_msg_and_die(bb_msg_memory_exhausted); } use_arg = opt & DATE_OPT_DATE; - if(opt & 0x80000000UL) + if(opt & BB_GETOPT_ERROR) bb_show_usage(); #ifdef CONFIG_FEATURE_DATE_ISOFMT if(opt & DATE_OPT_TIMESPEC) { diff --git a/coreutils/id.c b/coreutils/id.c index 541c3d16b..636049168 100644 --- a/coreutils/id.c +++ b/coreutils/id.c @@ -64,7 +64,7 @@ extern int id_main(int argc, char **argv) bb_opt_complementaly = "u~g:g~u"; flags = bb_getopt_ulflags(argc, argv, "rnug"); - if ((flags & 0x80000000UL) + if ((flags & BB_GETOPT_ERROR) /* Don't allow -n -r -nr */ || (flags <= 3 && flags > 0) /* Don't allow more than one username */ diff --git a/coreutils/install.c b/coreutils/install.c index 36dc1d618..345e75af0 100644 --- a/coreutils/install.c +++ b/coreutils/install.c @@ -69,7 +69,7 @@ extern int install_main(int argc, char **argv) flags = bb_getopt_ulflags(argc, argv, "cdpsg:m:o:", &gid_str, &mode_str, &uid_str); /* 'a' must be 2nd */ /* Check valid options were given */ - if(flags & 0x80000000UL) { + if(flags & BB_GETOPT_ERROR) { bb_show_usage(); } diff --git a/debianutils/start_stop_daemon.c b/debianutils/start_stop_daemon.c index e15944c59..1eaf0d78c 100644 --- a/debianutils/start_stop_daemon.c +++ b/debianutils/start_stop_daemon.c @@ -238,7 +238,7 @@ start_stop_daemon_main(int argc, char **argv) &startas, &cmdname, &signame, &userspec, &execname, &pidfile); /* Check one and only one context option was given */ - if ((opt & 0x80000000UL) || (opt & (SSD_CTX_STOP | SSD_CTX_START)) == 0) { + if ((opt & BB_GETOPT_ERROR) || (opt & (SSD_CTX_STOP | SSD_CTX_START)) == 0) { bb_show_usage(); } diff --git a/include/libbb.h b/include/libbb.h index ac60dd6c2..1aa7b41bd 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -151,6 +151,7 @@ extern FILE *bb_xfopen(const char *path, const char *mode); extern int bb_fclose_nonstdin(FILE *f); extern void bb_fflush_stdout_and_exit(int retval) __attribute__ ((noreturn)); +#define BB_GETOPT_ERROR 0x80000000UL extern const char *bb_opt_complementaly; extern const struct option *bb_applet_long_options; extern unsigned long bb_getopt_ulflags(int argc, char **argv, const char *applet_opts, ...); diff --git a/libbb/getopt_ulflags.c b/libbb/getopt_ulflags.c index b6a35261d..6197e8d9f 100644 --- a/libbb/getopt_ulflags.c +++ b/libbb/getopt_ulflags.c @@ -155,10 +155,10 @@ Special characters: if specified together. In this case you must set bb_opt_complementaly = "b~cf:c~bf:f~bc". If two of the mutually exclusive options are found, bb_getopt_ulflags's - return value will have the error flag set (0x80000000UL) so + return value will have the error flag set (BB_GETOPT_ERROR) so that we can check for it: - if (flags & 0x80000000UL) + if (flags & BB_GETOPT_ERROR) bb_show_usage(); "*" A star after a char in bb_opt_complementaly means that the @@ -280,7 +280,7 @@ bb_getopt_ulflags (int argc, char **argv, const char *applet_opts, ...) bb_show_usage (); } if(flags & on_off->incongruously) - flags |= 0x80000000UL; + flags |= BB_GETOPT_ERROR; flags &= ~on_off->switch_off; flags |= on_off->switch_on; if(on_off->list_flg) { diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c index 2f6266167..3c2683953 100644 --- a/util-linux/hwclock.c +++ b/util-linux/hwclock.c @@ -208,7 +208,7 @@ static const struct option hwclock_long_options[] = { bb_opt_complementaly = "r~ws:w~rs:s~wr:l~u:u~l"; opt = bb_getopt_ulflags(argc, argv, "lursw"); /* Check only one mode was given */ - if(opt & 0x80000000UL) { + if(opt & BB_GETOPT_ERROR) { bb_show_usage(); }