[hackers] [sbase] yes: Simplify, only support one argument || Michael Forney
commit 4f1d0df755e6eb85630380c3e77f0584eedf0627
Author: Michael Forney <mforney_AT_mforney.org>
AuthorDate: Thu Oct 31 18:07:58 2019 -0700
Commit: Michael Forney <mforney_AT_mforney.org>
CommitDate: Thu Oct 31 18:14:18 2019 -0700
yes: Simplify, only support one argument
The previous code was too difficult to decipher for such a simple tool.
Since yes(1) is not specified in any standard and several well-known
implementations only support a single argument, do the same here.
Thanks to everyone who offered implementation suggestions in the
hackers_AT_suckless.org email thread.
diff --git a/yes.1 b/yes.1
index 87e390a..f3803ad 100644
--- a/yes.1
+++ b/yes.1
_AT_@ -3,12 +3,12 @@
.Os sbase
.Sh NAME
.Nm yes
-.Nd output strings repeatedly
+.Nd output string repeatedly
.Sh SYNOPSIS
.Nm
-.Op Ar string ...
+.Op Ar string
.Sh DESCRIPTION
.Nm
-will repeatedly write 'y' or a line with each
+will repeatedly write 'y' or
.Ar string
to stdout.
diff --git a/yes.c b/yes.c
index ffc77f0..b5c3c10 100644
--- a/yes.c
+++ b/yes.c
_AT_@ -6,23 +6,20 @@
static void
usage(void)
{
- eprintf("usage: %s [string ...]\n", argv0);
+ eprintf("usage: %s [string]\n", argv0);
}
int
main(int argc, char *argv[])
{
- char **p;
+ const char *s;
ARGBEGIN {
default:
usage();
} ARGEND
- for (p = argv; ; p = (*p && *(p + 1)) ? p + 1 : argv) {
- fputs(*p ? *p : "y", stdout);
- putchar((!*p || !*(p + 1)) ? '\n' : ' ');
- }
-
- return 1; /* not reached */
+ s = argc ? argv[0] : "y";
+ for (;;)
+ puts(s);
}
Received on Fri Nov 01 2019 - 02:24:45 CET
This archive was generated by hypermail 2.3.0
: Fri Nov 01 2019 - 02:36:27 CET