Reject unknown options.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 21 Sep 2004 22:05:52 +0000 (22:05 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 21 Sep 2004 22:05:52 +0000 (22:05 +0000)
src/unlink.c
src/yes.c

index 079c169..5806ec8 100644 (file)
@@ -73,29 +73,23 @@ main (int argc, char **argv)
 
   parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
                      usage, AUTHORS, (char const *) NULL);
+  if (getopt (argc, argv, "") != -1)
+    usage (EXIT_FAILURE);
 
-  /* The above handles --help and --version.
-     Since there is no other invocation of getopt, handle `--' here.  */
-  if (1 < argc && STREQ (argv[1], "--"))
-    {
-      --argc;
-      ++argv;
-    }
-
-  if (argc < 2)
+  if (argc < optind + 1)
     {
       error (0, 0, _("missing operand"));
       usage (EXIT_FAILURE);
     }
 
-  if (2 < argc)
+  if (optind + 1 < argc)
     {
-      error (0, 0, _("extra operand %s"), quote (argv[2]));
+      error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
       usage (EXIT_FAILURE);
     }
 
-  if (unlink (argv[1]) != 0)
-    error (EXIT_FAILURE, errno, _("cannot unlink %s"), quote (argv[1]));
+  if (unlink (argv[optind]) != 0)
+    error (EXIT_FAILURE, errno, _("cannot unlink %s"), quote (argv[optind]));
 
   exit (EXIT_SUCCESS);
 }
index 56b15f7..6d00686 100644 (file)
--- a/src/yes.c
+++ b/src/yes.c
@@ -73,25 +73,19 @@ main (int argc, char **argv)
 
   parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
                      usage, AUTHORS, (char const *) NULL);
+  if (getopt (argc, argv, "+") != -1)
+    usage (EXIT_FAILURE);
 
-  /* The above handles --help and --version.
-     Since there is no other invocation of getopt, handle `--' here.  */
-  if (1 < argc && STREQ (argv[1], "--"))
+  if (argc <= optind)
     {
-      --argc;
-      ++argv;
-    }
-
-  if (argc == 1)
-    {
-      argv[1] = "y";
-      argc = 2;
+      optind = argc;
+      argv[argc++] = "y";
     }
 
   for (;;)
     {
       int i;
-      for (i = 1; i < argc; i++)
+      for (i = optind; i < argc; i++)
        if (fputs (argv[i], stdout) == EOF
            || putchar (i == argc - 1 ? '\n' : ' ') == EOF)
          {