]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[master] improve command line error reporting
authorEvan Hunt <each@isc.org>
Fri, 4 Apr 2014 02:34:48 +0000 (19:34 -0700)
committerEvan Hunt <each@isc.org>
Fri, 4 Apr 2014 02:34:48 +0000 (19:34 -0700)
3799. [bug] Improve named's command line error reporting.
[RT #35603]

CHANGES
bin/named/main.c

diff --git a/CHANGES b/CHANGES
index 8fa5c645f6c5df44bebb57d5161eff1480c76892..2c73ac8389e3fb59ea0e3c0423da49500b99306c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3799.  [bug]           Improve named's command line error reporting.
+                       [RT #35603]
+
 3798.  [bug]           'rndc zonestatus' was reporting the wrong re-signing
                        time. [RT #35659]
 
index b473732388d192c0a9ca8f450b9841ae9d69b9f0..b2104adda75959127b1d1aba56016e269e66df24 100644 (file)
@@ -15,8 +15,6 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: main.c,v 1.187 2012/02/06 23:46:44 tbox Exp $ */
-
 /*! \file */
 
 #include <config.h>
@@ -416,16 +414,16 @@ static void
 parse_command_line(int argc, char *argv[]) {
        int ch;
        int port;
+       const char *p;
        isc_boolean_t disable6 = ISC_FALSE;
        isc_boolean_t disable4 = ISC_FALSE;
 
        save_command_line(argc, argv);
 
        /* PLEASE keep options synchronized when main is hooked! */
+#define CMDLINE_FLAGS "46c:C:d:D:E:fFgi:lm:n:N:p:P:sS:t:T:U:u:vVx:"
        isc_commandline_errprint = ISC_FALSE;
-       while ((ch = isc_commandline_parse(argc, argv,
-                                          "46c:C:d:D:E:fFgi:lm:n:N:p:P:"
-                                          "sS:t:T:U:u:vVx:")) != -1) {
+       while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
                switch (ch) {
                case '4':
                        if (disable4)
@@ -614,8 +612,14 @@ parse_command_line(int argc, char *argv[]) {
                        usage();
                        if (isc_commandline_option == '?')
                                exit(0);
-                       ns_main_earlyfatal("unknown option '-%c'",
-                                          isc_commandline_option);
+                       p = strchr(CMDLINE_FLAGS, isc_commandline_option);
+                       if (p == NULL || *++p != ':')
+                               ns_main_earlyfatal("unknown option '-%c'",
+                                                  isc_commandline_option);
+                       else
+                               ns_main_earlyfatal("option '-%c' requires "
+                                                  "an argument",
+                                                  isc_commandline_option);
                        /* FALLTHROUGH */
                default:
                        ns_main_earlyfatal("parsing options returned %d", ch);