ipcalc: more correct checking for proper number of arguments
function old new delta ipcalc_main 581 569 -12 Signed-off-by: Steve Bennett <steveb@workware.net.au> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
39601843d7
commit
823b636cd1
@ -63,13 +63,13 @@ int get_prefix(unsigned long netmask);
|
|||||||
|
|
||||||
#if ENABLE_FEATURE_IPCALC_LONG_OPTIONS
|
#if ENABLE_FEATURE_IPCALC_LONG_OPTIONS
|
||||||
static const char ipcalc_longopts[] ALIGN1 =
|
static const char ipcalc_longopts[] ALIGN1 =
|
||||||
"netmask\0" No_argument "m"
|
"netmask\0" No_argument "m" // netmask from IP (assuming complete class A, B, or C network)
|
||||||
"broadcast\0" No_argument "b"
|
"broadcast\0" No_argument "b" // broadcast from IP [netmask]
|
||||||
"network\0" No_argument "n"
|
"network\0" No_argument "n" // network from IP [netmask]
|
||||||
# if ENABLE_FEATURE_IPCALC_FANCY
|
# if ENABLE_FEATURE_IPCALC_FANCY
|
||||||
"prefix\0" No_argument "p"
|
"prefix\0" No_argument "p" // prefix from IP[/prefix] [netmask]
|
||||||
"hostname\0" No_argument "h"
|
"hostname\0" No_argument "h" // hostname from IP
|
||||||
"silent\0" No_argument "s"
|
"silent\0" No_argument "s" // don’t ever display error messages
|
||||||
# endif
|
# endif
|
||||||
;
|
;
|
||||||
#endif
|
#endif
|
||||||
@ -92,15 +92,16 @@ int ipcalc_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
#if ENABLE_FEATURE_IPCALC_LONG_OPTIONS
|
#if ENABLE_FEATURE_IPCALC_LONG_OPTIONS
|
||||||
applet_long_options = ipcalc_longopts;
|
applet_long_options = ipcalc_longopts;
|
||||||
#endif
|
#endif
|
||||||
|
opt_complementary = "-1:?2"; /* minimum 1 arg, maximum 2 args */
|
||||||
opt = getopt32(argv, "mbn" IF_FEATURE_IPCALC_FANCY("phs"));
|
opt = getopt32(argv, "mbn" IF_FEATURE_IPCALC_FANCY("phs"));
|
||||||
argv += optind;
|
argv += optind;
|
||||||
if (opt & SILENT)
|
if (opt & SILENT)
|
||||||
logmode = LOGMODE_NONE; /* suppress error_msg() output */
|
logmode = LOGMODE_NONE; /* suppress error_msg() output */
|
||||||
if (opt & (BROADCAST | NETWORK | NETPREFIX)) {
|
opt &= ~SILENT;
|
||||||
if (!argv[0] || !argv[1] || argv[2])
|
if (!(opt & (BROADCAST | NETWORK | NETPREFIX))) {
|
||||||
bb_show_usage();
|
/* if no options at all or
|
||||||
} else {
|
* (no broadcast,network,prefix) and (two args)... */
|
||||||
if (!argv[0] || argv[1])
|
if (!opt || argv[1])
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user