commit 9016d288f1cd03bf514fe84d537b203040e1ccf8
parent e73f58937d13fa1793e4c8bd98aaaaa33b3d18ab
Author: FRIGN <dev@frign.de>
Date: Fri, 24 Apr 2015 23:54:17 +0200
Do not use arg.h for tools which take no flags
We've already seen the issue with echo(1): Before we changed it to
ignore "--", the command
$ echo --
did not work as expected. Given POSIX mandated this and makes most
sense, in the interest of consistency the other tools need to be
streamlined for that as well.
Looking at yes(1) for instance, there's no reason to skip "--" in
the argument list.
We do not have long options like GNU does and there's no reason to
tinker with that here.
The majority of tools changed are ones taking lists of arguments
or only a single one. There's no reason why dirname should "fail"
on "--". In the end, this is a valid name.
The practice of hand-holding the user was established with the GNU
coreutils. "--help" and "--version" long-options are a disgrace to
what could've been done properly with manpages.
Diffstat:
16 files changed, 18 insertions(+), 79 deletions(-)
diff --git a/basename.c b/basename.c
@@ -17,10 +17,7 @@ main(int argc, char *argv[])
ssize_t off;
char *p;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (argc != 1 && argc != 2)
usage();
diff --git a/chroot.c b/chroot.c
@@ -17,10 +17,7 @@ main(int argc, char *argv[])
char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd;
int savederrno;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (!argc)
usage();
diff --git a/cksum.c b/cksum.c
@@ -84,22 +84,13 @@ cksum(FILE *fp, const char *s)
putchar('\n');
}
-static void
-usage(void)
-{
- eprintf("usage: %s [file ...]\n", argv0);
-}
-
int
main(int argc, char *argv[])
{
FILE *fp;
int ret = 0;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (!argc) {
cksum(stdin, NULL);
diff --git a/dirname.c b/dirname.c
@@ -13,10 +13,7 @@ usage(void)
int
main(int argc, char *argv[])
{
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (argc != 1)
usage();
diff --git a/echo.c b/echo.c
@@ -8,7 +8,9 @@ main(int argc, char *argv[])
{
int nflag = 0;
- if (*++argv && !strcmp(*argv, "-n")) {
+ argv0 = argv[0], argc--, argv++;
+
+ if (*argv && !strcmp(*argv, "-n")) {
nflag = 1;
argc--, argv++;
}
diff --git a/hostname.c b/hostname.c
@@ -16,10 +16,7 @@ main(int argc, char *argv[])
{
char host[HOST_NAME_MAX + 1];
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (!argc) {
if (gethostname(host, sizeof(host)) < 0)
diff --git a/link.c b/link.c
@@ -12,10 +12,7 @@ usage(void)
int
main(int argc, char *argv[])
{
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (argc != 2)
usage();
diff --git a/nohup.c b/nohup.c
@@ -19,10 +19,7 @@ main(int argc, char *argv[])
{
int fd, savederrno;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (!argc)
usage();
diff --git a/printenv.c b/printenv.c
@@ -6,22 +6,13 @@
extern char **environ;
-static void
-usage(void)
-{
- eprintf("usage: %s [var ...]\n", argv0);
-}
-
int
main(int argc, char *argv[])
{
char *var;
int ret = 0;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (!argc) {
for (; *environ; environ++)
diff --git a/setsid.c b/setsid.c
@@ -15,10 +15,7 @@ main(int argc, char *argv[])
{
int savederrno;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (!argc)
usage();
diff --git a/sleep.c b/sleep.c
@@ -14,10 +14,7 @@ main(int argc, char *argv[])
{
unsigned seconds;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (argc != 1)
usage();
diff --git a/sponge.c b/sponge.c
@@ -15,10 +15,7 @@ main(int argc, char *argv[])
{
FILE *fp, *tmpfp;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (argc != 1)
usage();
diff --git a/sync.c b/sync.c
@@ -12,10 +12,7 @@ usage(void)
int
main(int argc, char *argv[])
{
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (argc)
usage();
diff --git a/tty.c b/tty.c
@@ -15,10 +15,7 @@ main(int argc, char *argv[])
{
char *tty;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (argc)
usage();
diff --git a/unlink.c b/unlink.c
@@ -12,10 +12,7 @@ usage(void)
int
main(int argc, char *argv[])
{
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
if (argc != 1)
usage();
diff --git a/yes.c b/yes.c
@@ -3,21 +3,12 @@
#include "util.h"
-static void
-usage(void)
-{
- eprintf("usage: %s [string ...]\n", argv0);
-}
-
int
main(int argc, char *argv[])
{
char **p;
- ARGBEGIN {
- default:
- usage();
- } ARGEND;
+ argv0 = argv[0], argc--, argv++;
for (p = argv; ; p = (*p && *(p + 1)) ? p + 1 : argv) {
fputs(*p ? *p : "y", stdout);