Include long-options.h.
authorJim Meyering <jim@meyering.net>
Fri, 12 Apr 2002 10:41:54 +0000 (10:41 +0000)
committerJim Meyering <jim@meyering.net>
Fri, 12 Apr 2002 10:41:54 +0000 (10:41 +0000)
[long_opts]: Remove.
(usage): Tweak --help output; use *_OPTION_DESCRIPTION macros.
(main): Don't use getopt directly.  Use parse_long_options instead.
Tweak a diagnostic.
Use EXIT_FAILURE rather than a literal `1'.
(main): If POSIXLY_CORRECT is set, don't recognize --help or --version,
so the program can operate on a file with one of those names.

src/unlink.c

index 805e2a9..f6c57c4 100644 (file)
@@ -1,4 +1,4 @@
-/* `unlink` utility for GNU.
+/* unlink utility for GNU.
    Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
@@ -19,7 +19,7 @@
 
 /* Implementation overview:
 
-   Simply calls the system 'unlink' function */
+   Simply call the system 'unlink' function */
 
 #include <config.h>
 #include <stdio.h>
@@ -29,6 +29,7 @@
 
 #include "system.h"
 #include "error.h"
+#include "long-options.h"
 #include "quote.h"
 
 /* The official name of this program (e.g., no `g' prefix).  */
 /* Name this program was run with.  */
 char *program_name;
 
-static struct option const long_opts[] =
-{
-  {GETOPT_HELP_OPTION_DECL},
-  {GETOPT_VERSION_OPTION_DECL},
-  {NULL, 0, NULL, 0}
-};
-
 void
 usage (int status)
 {
@@ -54,15 +48,13 @@ usage (int status)
             program_name);
   else
     {
-      printf (_("Usage: %s [OPTION]... FILE\n"), program_name);
       printf (_("\
-unlink the FILE.\n\
-\n\
-      --help            display this help and exit\n\
-      --version         output version information and exit\n\
-\n\
-"),
-             program_name, program_name);
+Usage: %s FILE\n\
+  or:  %s OPTION\n"), program_name, program_name);
+      fputs (_("Call the unlink function to remove the specified FILE.\n\n"),
+            stdout);
+      fputs (HELP_OPTION_DESCRIPTION, stdout);
+      fputs (VERSION_OPTION_DESCRIPTION, stdout);
       puts (_("\nReport bugs to <bug-fileutils@gnu.org>."));
     }
   exit (status);
@@ -71,9 +63,6 @@ unlink the FILE.\n\
 int
 main (int argc, char **argv)
 {
-  int fail = 0;
-  int c;
-
   program_name = argv[0];
   setlocale (LC_ALL, "");
   bindtextdomain (PACKAGE, LOCALEDIR);
@@ -81,36 +70,33 @@ main (int argc, char **argv)
 
   atexit (close_stdout);
 
-  while ((c = getopt_long (argc, argv, "", long_opts, NULL)) != -1)
+  /* Don't recognize --help or --version if POSIXLY_CORRECT is set.  */
+  if (getenv ("POSIXLY_CORRECT") == NULL)
+    parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+                       AUTHORS, usage);
+
+  /* The above handles --help and --version.
+     Since there is no other invocation of getopt, handle `--' here.  */
+  if (1 < argc && STREQ (argv[1], "--"))
     {
-      switch (c)
-       {
-       case 0:         /* Long option.  */
-         break;
-       case_GETOPT_HELP_CHAR;
-       case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
-       default:
-         usage (1);
-       }
+      --argc;
+      ++argv;
     }
 
-  if (optind+1 > argc)
+  if (argc < 2)
     {
       error (0, 0, _("too few arguments"));
       usage (1);
     }
 
-  if (optind+1 < argc)
+  if (2 < argc)
     {
       error (0, 0, _("too many arguments"));
       usage (1);
     }
 
-  if (unlink(argv[optind]) != 0)
-    {
-      fail = 1;
-      error (0, errno, _("unlinking %s"), quote(argv[optind]));
-    }
+  if (unlink (argv[1]) != 0)
+    error (EXIT_FAILURE, errno, _("cannot unlink %s"), quote (argv[1]));
 
-  exit (fail);
+  exit (0);
 }