Revert "Do not use arg.h for tools which take no flags"

This reverts commit 9016d288f1.

Tools that have no options are required by POSIX to support "--" so
that conforming applications have a way to shield their operands from
implementations that provide options as an extension.

echo(1) is just an exception, so it is handled specially.

See OPTIONS in https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/V3_chap01.html#tag_17_04
This commit is contained in:
Michael Forney 2019-06-28 00:18:48 -07:00
parent 9ae6c45097
commit d2824f5294
13 changed files with 70 additions and 13 deletions

View File

@ -17,7 +17,10 @@ main(int argc, char *argv[])
char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd; char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd;
int savederrno; int savederrno;
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; ARGBEGIN {
default:
usage();
} ARGEND
if (!argc) if (!argc)
usage(); usage();

11
cksum.c
View File

@ -92,12 +92,21 @@ cksum(int fd, const char *s)
putchar('\n'); putchar('\n');
} }
static void
usage(void)
{
eprintf("usage: %s [file ...]\n", argv0);
}
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
int fd; int fd;
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; ARGBEGIN {
default:
usage();
} ARGEND
if (!argc) { if (!argc) {
cksum(0, NULL); cksum(0, NULL);

View File

@ -16,7 +16,10 @@ main(int argc, char *argv[])
{ {
char host[HOST_NAME_MAX + 1]; char host[HOST_NAME_MAX + 1];
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; ARGBEGIN {
default:
usage();
} ARGEND
if (!argc) { if (!argc) {
if (gethostname(host, sizeof(host)) < 0) if (gethostname(host, sizeof(host)) < 0)

5
link.c
View File

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

View File

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

View File

@ -6,13 +6,22 @@
extern char **environ; extern char **environ;
static void
usage(void)
{
eprintf("usage: %s [var ...]\n", argv0);
}
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
char *var; char *var;
int ret = 0; int ret = 0;
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; ARGBEGIN {
default:
usage();
} ARGEND
if (!argc) { if (!argc) {
for (; *environ; environ++) for (; *environ; environ++)

View File

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

View File

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

View File

@ -17,7 +17,10 @@ main(int argc, char *argv[])
char tmp[] = "/tmp/sponge-XXXXXX"; char tmp[] = "/tmp/sponge-XXXXXX";
int fd, tmpfd; int fd, tmpfd;
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; ARGBEGIN {
default:
usage();
} ARGEND
if (argc != 1) if (argc != 1)
usage(); usage();

5
sync.c
View File

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

5
tty.c
View File

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

View File

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

11
yes.c
View File

@ -3,12 +3,21 @@
#include "util.h" #include "util.h"
static void
usage(void)
{
eprintf("usage: %s [string ...]\n", argv0);
}
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
char **p; char **p;
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; ARGBEGIN {
default:
usage();
} ARGEND
for (p = argv; ; p = (*p && *(p + 1)) ? p + 1 : argv) { for (p = argv; ; p = (*p && *(p + 1)) ? p + 1 : argv) {
fputs(*p ? *p : "y", stdout); fputs(*p ? *p : "y", stdout);