diff options
author | Rob Landley <rob@landley.net> | 2019-12-22 20:54:03 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2019-12-22 20:54:03 -0600 |
commit | f3d4a2c72f315fd3bb0a939f6331ee0465fcfe2f (patch) | |
tree | 7f0d29dbd46cd015c1e4d965b3504ac8b8b81a84 /toys | |
parent | 058471577a73a693c681ce9059809c2e444a4bd7 (diff) | |
download | toybox-f3d4a2c72f315fd3bb0a939f6331ee0465fcfe2f.tar.gz |
Bugfix: tee with no arguments was writing to stdout twice.
Add basic smoketest while we're at it.
Diffstat (limited to 'toys')
-rw-r--r-- | toys/posix/tee.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/toys/posix/tee.c b/toys/posix/tee.c index 78139a8d..ff8a29dc 100644 --- a/toys/posix/tee.c +++ b/toys/posix/tee.c @@ -54,18 +54,18 @@ void tee_main(void) for (;;) { struct fd_list *fdl; - int len; + int len, out = 0; // Read data from stdin len = xread(0, toybuf, sizeof(toybuf)); if (len<1) break; // Write data to each output file, plus stdout. - fdl = TT.outputs; - for (;;) { - if(len != writeall(fdl ? fdl->fd : 1, toybuf, len)) toys.exitval=1; + for (fdl = TT.outputs; ;fdl = fdl->next) { + if (!fdl && out) break; + if (len != writeall(fdl ? fdl->fd : 1, toybuf, len)) toys.exitval=1; if (!fdl) break; - fdl = fdl->next; + if (fdl->fd == 1) out++; } } } |