commit d2824f5294d38db891416f087b6b5410470e8d1e
Author: Michael Forney <[email protected]>
AuthorDate: Fri Jun 28 00:18:48 2019 -0700
Commit: Michael Forney <[email protected]>
CommitDate: Sat Jun 29 18:33:48 2019 -0700
Revert "Do not use arg.h for tools which take no flags"
This reverts commit 9016d288f1cd03bf514fe84d537b203040e1ccf8.
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
diff --git a/chroot.c b/chroot.c
index 22bc62e..45f2dc7 100644
--- a/chroot.c
+++ b/chroot.c
@@ -17,7 +17,10 @@ main(int argc, char *argv[])
char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd;
int savederrno;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (!argc)
usage();
diff --git a/cksum.c b/cksum.c
index 4e7dce6..50107b2 100644
--- a/cksum.c
+++ b/cksum.c
@@ -92,12 +92,21 @@ cksum(int fd, const char *s)
putchar('\n');
}
+static void
+usage(void)
+{
+ eprintf("usage: %s [file ...]\n", argv0);
+}
+
int
main(int argc, char *argv[])
{
int fd;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (!argc) {
cksum(0, NULL);
diff --git a/hostname.c b/hostname.c
index 495d40d..2532ec8 100644
--- a/hostname.c
+++ b/hostname.c
@@ -16,7 +16,10 @@ main(int argc, char *argv[])
{
char host[HOST_NAME_MAX + 1];
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (!argc) {
if (gethostname(host, sizeof(host)) < 0)
diff --git a/link.c b/link.c
index a260136..7cee4d0 100644
--- a/link.c
+++ b/link.c
@@ -12,7 +12,10 @@ usage(void)
int
main(int argc, char *argv[])
{
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (argc != 2)
usage();
diff --git a/nohup.c b/nohup.c
index c75ea45..2825c5d 100644
--- a/nohup.c
+++ b/nohup.c
@@ -19,7 +19,10 @@ main(int argc, char *argv[])
{
int fd, savederrno;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (!argc)
usage();
diff --git a/printenv.c b/printenv.c
index 7ff5393..19b5b7d 100644
--- a/printenv.c
+++ b/printenv.c
@@ -6,13 +6,22 @@
extern char **environ;
+static void
+usage(void)
+{
+ eprintf("usage: %s [var ...]\n", argv0);
+}
+
int
main(int argc, char *argv[])
{
char *var;
int ret = 0;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (!argc) {
for (; *environ; environ++)
diff --git a/setsid.c b/setsid.c
index eb682f2..28d3442 100644
--- a/setsid.c
+++ b/setsid.c
@@ -15,7 +15,10 @@ main(int argc, char *argv[])
{
int savederrno;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (!argc)
usage();
diff --git a/sleep.c b/sleep.c
index 36dfb1c..00ea268 100644
--- a/sleep.c
+++ b/sleep.c
@@ -14,7 +14,10 @@ main(int argc, char *argv[])
{
unsigned seconds;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (argc != 1)
usage();
diff --git a/sponge.c b/sponge.c
index 11c8ad4..7a0b272 100644
--- a/sponge.c
+++ b/sponge.c
@@ -17,7 +17,10 @@ main(int argc, char *argv[])
char tmp[] = "/tmp/sponge-XXXXXX";
int fd, tmpfd;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (argc != 1)
usage();
diff --git a/sync.c b/sync.c
index d3390de..f1b9818 100644
--- a/sync.c
+++ b/sync.c
@@ -12,7 +12,10 @@ usage(void)
int
main(int argc, char *argv[])
{
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (argc)
usage();
diff --git a/tty.c b/tty.c
index 7ffb04a..6515128 100644
--- a/tty.c
+++ b/tty.c
@@ -15,7 +15,10 @@ main(int argc, char *argv[])
{
char *tty;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (argc)
usage();
diff --git a/unlink.c b/unlink.c
index 241cf25..c695fa8 100644
--- a/unlink.c
+++ b/unlink.c
@@ -12,7 +12,10 @@ usage(void)
int
main(int argc, char *argv[])
{
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
if (argc != 1)
usage();
diff --git a/yes.c b/yes.c
index dd97ea6..ffc77f0 100644
--- a/yes.c
+++ b/yes.c
@@ -3,12 +3,21 @@
#include "util.h"
+static void
+usage(void)
+{
+ eprintf("usage: %s [string ...]\n", argv0);
+}
+
int
main(int argc, char *argv[])
{
char **p;
- argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND
for (p = argv; ; p = (*p && *(p + 1)) ? p + 1 : argv) {
fputs(*p ? *p : "y", stdout);