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.
This commit is contained in:
FRIGN 2015-04-24 23:54:17 +02:00 committed by sin
parent e73f58937d
commit 9016d288f1
16 changed files with 18 additions and 79 deletions

View File

@ -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();

View File

@ -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();

11
cksum.c
View File

@ -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);

View File

@ -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();

4
echo.c
View File

@ -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++;
}

View File

@ -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)

5
link.c
View File

@ -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();

View File

@ -19,10 +19,7 @@ main(int argc, char *argv[])
{
int fd, savederrno;
ARGBEGIN {
default:
usage();
} ARGEND;
argv0 = argv[0], argc--, argv++;
if (!argc)
usage();

View File

@ -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++)

View File

@ -15,10 +15,7 @@ main(int argc, char *argv[])
{
int savederrno;
ARGBEGIN {
default:
usage();
} ARGEND;
argv0 = argv[0], argc--, argv++;
if (!argc)
usage();

View File

@ -14,10 +14,7 @@ main(int argc, char *argv[])
{
unsigned seconds;
ARGBEGIN {
default:
usage();
} ARGEND;
argv0 = argv[0], argc--, argv++;
if (argc != 1)
usage();

View File

@ -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();

5
sync.c
View File

@ -12,10 +12,7 @@ usage(void)
int
main(int argc, char *argv[])
{
ARGBEGIN {
default:
usage();
} ARGEND;
argv0 = argv[0], argc--, argv++;
if (argc)
usage();

5
tty.c
View File

@ -15,10 +15,7 @@ main(int argc, char *argv[])
{
char *tty;
ARGBEGIN {
default:
usage();
} ARGEND;
argv0 = argv[0], argc--, argv++;
if (argc)
usage();

View File

@ -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();

11
yes.c
View File

@ -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);