From b18a146363f170afa420af04f80d2a91c38f11a3 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Tue, 12 Aug 2008 18:08:07 +0200 Subject: cli: check for missing arguments in getopt_long From: Pablo Neira Ayuso If getopt_long returns '?', show an error telling that some arguments are missing. Signed-off-by: Pablo Neira Ayuso --- src/conntrack.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src/conntrack.c') diff --git a/src/conntrack.c b/src/conntrack.c index ab3da8a..c126557 100644 --- a/src/conntrack.c +++ b/src/conntrack.c @@ -934,6 +934,9 @@ int main(int argc, char *argv[]) register_icmp(); register_icmpv6(); + /* disable explicit missing arguments error output from getopt_long */ + opterr = 0; + while ((c = getopt_long(argc, argv, "L::I::U::D::G::E::F::hVs:d:r:q:" "p:t:u:e:a:z[:]:{:}:m:i:f:o:n::" "g::c:b:", @@ -1076,18 +1079,21 @@ int main(int argc, char *argv[]) socketbuffersize = atol(optarg); options |= CT_OPT_BUFFERSIZE; break; + case '?': + if (optopt) + exit_error(PARAMETER_PROBLEM, + "option `%s' requires an " + "argument", argv[optind-1]); + else + exit_error(PARAMETER_PROBLEM, + "unknown option `%s'", + argv[optind-1]); + break; default: if (h && h->parse_opts &&!h->parse_opts(c - h->option_offset, obj, exptuple, mask, &l4flags)) exit_error(PARAMETER_PROBLEM, "parse error"); - - /* Unknown argument... */ - if (!h) { - usage(argv[0]); - exit_error(PARAMETER_PROBLEM, - "Missing arguments..."); - } break; } } -- cgit v1.2.3