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@suckless.org email thread.
master
Michael Forney 3 years ago
parent 39f92650d3
commit 4f1d0df755

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

13
yes.c

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

Loading…
Cancel
Save