aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/yes
diff options
context:
space:
mode:
authorPietro Cerutti <gahr@FreeBSD.org>2017-06-13 13:26:50 +0000
committerPietro Cerutti <gahr@FreeBSD.org>2017-06-13 13:26:50 +0000
commite9dd5a0c7300feae6106cada8af4d196d2a480ce (patch)
treee9bb805703ef5151d844bffd0ace0e0307fb8715 /usr.bin/yes
parentdadfd1ed33e4ca779998ddeca7d5b0bb30098543 (diff)
Notes
Diffstat (limited to 'usr.bin/yes')
-rw-r--r--usr.bin/yes/yes.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.bin/yes/yes.c b/usr.bin/yes/yes.c
index 322668b87069..8c9700589528 100644
--- a/usr.bin/yes/yes.c
+++ b/usr.bin/yes/yes.c
@@ -55,6 +55,8 @@ main(int argc, char **argv)
char * exp = y;
size_t buflen = 0;
size_t explen = sizeof(y);
+ size_t more;
+ ssize_t ret;
if (caph_limit_stdio() < 0 || (cap_enter() < 0 && errno != ENOSYS))
err(1, "capsicum");
@@ -77,8 +79,10 @@ main(int argc, char **argv)
explen = buflen;
}
- while (write(STDOUT_FILENO, exp, explen) > 0)
- ;
+ more = explen;
+ while ((ret = write(STDOUT_FILENO, exp + (explen - more), more)) > 0)
+ if ((more -= ret) == 0)
+ more = explen;
err(1, "stdout");
/*NOTREACHED*/