diff options
| author | Pietro Cerutti <gahr@FreeBSD.org> | 2017-06-13 13:26:50 +0000 |
|---|---|---|
| committer | Pietro Cerutti <gahr@FreeBSD.org> | 2017-06-13 13:26:50 +0000 |
| commit | e9dd5a0c7300feae6106cada8af4d196d2a480ce (patch) | |
| tree | e9bb805703ef5151d844bffd0ace0e0307fb8715 /usr.bin/yes | |
| parent | dadfd1ed33e4ca779998ddeca7d5b0bb30098543 (diff) | |
Notes
Diffstat (limited to 'usr.bin/yes')
| -rw-r--r-- | usr.bin/yes/yes.c | 8 |
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*/ |
