summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2002-04-12 10:41:54 +0000
committerJim Meyering <jim@meyering.net>2002-04-12 10:41:54 +0000
commitf52a204a4e5d1e0f5248e7ac464157e3d4882b15 (patch)
tree7b5b9f25bf77a3dfd6dea4db4892a4a42a71bc56 /src
parent21126e288b1e38bea8f1de8893e26a124ab99961 (diff)
downloadcoreutils-f52a204a4e5d1e0f5248e7ac464157e3d4882b15.tar.xz
Include long-options.h.
[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.
Diffstat (limited to 'src')
-rw-r--r--src/unlink.c62
1 files changed, 24 insertions, 38 deletions
diff --git a/src/unlink.c b/src/unlink.c
index 805e2a96f..f6c57c4bf 100644
--- a/src/unlink.c
+++ b/src/unlink.c
@@ -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). */
@@ -39,13 +40,6 @@
/* 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);
}