summaryrefslogtreecommitdiff
path: root/src/yes.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2003-09-22 15:41:05 +0000
committerJim Meyering <jim@meyering.net>2003-09-22 15:41:05 +0000
commitafd3a1e0662bc1ec1ccf779f2fbd2562decea519 (patch)
tree91eeddfa97269d0602f772d80ddfb4d5c67c71dd /src/yes.c
parentb867137563d5c9208c23586dddfd0ff4ea908921 (diff)
downloadcoreutils-afd3a1e0662bc1ec1ccf779f2fbd2562decea519.tar.xz
(UNROLL): Remove.
(main): Exit immediately when write failure is detected. Simplify code by assigning to argv when argc == 1.
Diffstat (limited to 'src/yes.c')
-rw-r--r--src/yes.c42
1 files changed, 12 insertions, 30 deletions
diff --git a/src/yes.c b/src/yes.c
index 6f62cb739..f77ec5630 100644
--- a/src/yes.c
+++ b/src/yes.c
@@ -32,9 +32,6 @@
#define WRITTEN_BY _("Written by David MacKenzie.")
-/* How many iterations between ferror checks. */
-#define UNROLL 10000
-
/* The name this program was run with. */
char *program_name;
@@ -81,34 +78,19 @@ main (int argc, char **argv)
if (argc == 1)
{
- while (1)
- {
- int i;
- for (i = 0; i < UNROLL; i++)
- puts ("y");
- if (ferror (stdout))
- break;
- }
+ argv[1] = "y";
+ argc = 2;
}
- else
+
+ for (;;)
{
- while (1)
- {
- int i;
- for (i = 0; i < UNROLL; i++)
- {
- int j;
- for (j = 1; j < argc; j++)
- {
- fputs (argv[j], stdout);
- putchar (j == argc - 1 ? '\n' : ' ');
- }
- }
- if (ferror (stdout))
- break;
- }
+ int i;
+ for (i = 1; i < argc; i++)
+ if (fputs (argv[i], stdout) == EOF
+ || putchar (i == argc - 1 ? '\n' : ' ') == EOF)
+ {
+ error (0, errno, _("standard output"));
+ exit (EXIT_FAILURE);
+ }
}
-
- error (0, errno, _("standard output"));
- exit (EXIT_FAILURE);
}