diff options
author | Pádraig Brady <P@draigBrady.com> | 2023-03-13 21:26:21 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2023-03-13 21:26:21 +0000 |
commit | 73d372dcc166afc387b4d130ecc00e5dce1fc89a (patch) | |
tree | a747b30181005d03df9253c1672a16691156c4f3 /src/tee.c | |
parent | f26af5983313f1f4cf04143cecee68551ed6502f (diff) | |
download | coreutils-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.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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; |