nice,chroot: use more standard option parsing
authorPádraig Brady <P@draigBrady.com>
Fri, 26 Mar 2010 07:42:01 +0000 (07:42 +0000)
committerPádraig Brady <P@draigBrady.com>
Fri, 26 Mar 2010 14:31:16 +0000 (14:31 +0000)
Related to the 2010-03-25 commit, 88d4b346,
"timeout: use more standard option parsing".
* src/nice.c (main): Don't use parse_long_options()
which is a helper for commands that don't have any
long options specific to them.
* src/chroot.c (main): Likewise.
* tests/misc/nice-fail: Remove a case that now
passes due to us accepting multiple instances of the
--help and --version options.
* tests/misc/chroot-fail: Likewise.

src/chroot.c
src/nice.c
tests/misc/chroot-fail
tests/misc/nice-fail

index f806607..0eb60c0 100644 (file)
@@ -24,7 +24,6 @@
 
 #include "system.h"
 #include "error.h"
-#include "long-options.h"
 #include "quote.h"
 #include "userspec.h"
 #include "xstrtol.h"
@@ -162,9 +161,6 @@ main (int argc, char **argv)
   initialize_exit_failure (EXIT_CANCELED);
   atexit (close_stdout);
 
-  parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE_NAME, Version,
-                      usage, AUTHORS, (char const *) NULL);
-
   while ((c = getopt_long (argc, argv, "+", long_opts, NULL)) != -1)
     {
       switch (c)
@@ -172,9 +168,15 @@ main (int argc, char **argv)
         case USERSPEC:
           userspec = optarg;
           break;
+
         case GROUPS:
           groups = optarg;
           break;
+
+        case_GETOPT_HELP_CHAR;
+
+        case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
         default:
           usage (EXIT_CANCELED);
         }
index 871129d..d95b184 100644 (file)
@@ -30,7 +30,6 @@
 #endif
 
 #include "error.h"
-#include "long-options.h"
 #include "quote.h"
 #include "xstrtol.h"
 
@@ -58,6 +57,8 @@
 static struct option const longopts[] =
 {
   {"adjustment", required_argument, NULL, 'n'},
+  {GETOPT_HELP_OPTION_DECL},
+  {GETOPT_VERSION_OPTION_DECL},
   {NULL, 0, NULL, 0}
 };
 
@@ -110,9 +111,6 @@ main (int argc, char **argv)
   initialize_exit_failure (EXIT_CANCELED);
   atexit (close_stdout);
 
-  parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE_NAME, Version,
-                      usage, AUTHORS, (char const *) NULL);
-
   for (i = 1; i < argc; /* empty */)
     {
       char const *s = argv[i];
@@ -124,7 +122,7 @@ main (int argc, char **argv)
         }
       else
         {
-          int optc;
+          int c;
           int fake_argc = argc - (i - 1);
           char **fake_argv = argv + (i - 1);
 
@@ -134,14 +132,28 @@ main (int argc, char **argv)
           /* Initialize getopt_long's internal state.  */
           optind = 0;
 
-          optc = getopt_long (fake_argc, fake_argv, "+n:", longopts, NULL);
+          c = getopt_long (fake_argc, fake_argv, "+n:", longopts, NULL);
           i += optind - 1;
 
-          if (optc == '?')
-            usage (EXIT_CANCELED);
-          else if (optc == 'n')
-            adjustment_given = optarg;
-          else /* optc == -1 */
+          switch (c)
+            {
+            case 'n':
+              adjustment_given = optarg;
+              break;
+
+            case -1:
+              break;
+
+            case_GETOPT_HELP_CHAR;
+
+            case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+            default:
+              usage (EXIT_CANCELED);
+              break;
+            }
+
+          if (c == -1)
             break;
         }
     }
index 2eceda8..6b4e2d8 100755 (executable)
@@ -29,8 +29,6 @@ fi
 # them actually run a command, we don't need root privileges
 chroot # missing argument
 test $? = 125 || fail=1
-chroot --help --version # too many options
-test $? = 125 || fail=1
 chroot --- / true # unknown option
 test $? = 125 || fail=1
 
index 269576d..9440233 100755 (executable)
@@ -28,8 +28,6 @@ fi
 # These tests verify exact status of internal failure.
 nice -n 1 # missing command
 test $? = 125 || fail=1
-nice --help --version # too many options
-test $? = 125 || fail=1
 nice --- # unknown option
 test $? = 125 || fail=1
 nice -n 1a # invalid adjustment