summaryrefslogtreecommitdiff
path: root/src/tee.c
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2023-03-13 21:26:21 +0000
committerPádraig Brady <P@draigBrady.com>2023-03-13 21:26:21 +0000
commit73d372dcc166afc387b4d130ecc00e5dce1fc89a (patch)
treea747b30181005d03df9253c1672a16691156c4f3 /src/tee.c
parentf26af5983313f1f4cf04143cecee68551ed6502f (diff)
downloadcoreutils-73d372dcc166afc387b4d130ecc00e5dce1fc89a.tar.gz
tee: avoid undefined behavior after fclose()
* iopoll.c (fclose_wait): Rename from confusing fclose_nonblock name. Also adjust to do no operations on the stream after fclose() as this is undefined. Instead use fflush() to determine EAGAIN status. (fwrite_wait): Renamed from confusing fwrite_nonblock name.
Diffstat (limited to 'src/tee.c')
-rw-r--r--src/tee.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/tee.c b/src/tee.c
index 7785942d6..a1c057816 100644
--- a/src/tee.c
+++ b/src/tee.c
@@ -314,7 +314,7 @@ tee_files (int nfiles, char **files, bool pipe_check)
Standard output is the first one. */
for (i = 0; i <= nfiles; i++)
if (descriptors[i]
- && ! fwrite_nonblock (buffer, bytes_read, descriptors[i]))
+ && ! fwrite_wait (buffer, bytes_read, descriptors[i]))
{
if (fail_output (descriptors, files, i))
ok = false;
@@ -332,7 +332,7 @@ tee_files (int nfiles, char **files, bool pipe_check)
/* Close the files, but not standard output. */
for (i = 1; i <= nfiles; i++)
- if (descriptors[i] && ! fclose_nonblock (descriptors[i]))
+ if (descriptors[i] && ! fclose_wait (descriptors[i]))
{
error (0, errno, "%s", quotef (files[i]));
ok = false;