diff options
author | Martijn Dekker <martijn@inlv.org> | 2020-01-17 13:02:57 +0100 |
---|---|---|
committer | Arnold Robbins <arnold@skeeve.com> | 2020-01-17 14:02:57 +0200 |
commit | fed1a562c3d1f3cf3cac0dd1413679191ac43002 (patch) | |
tree | cbc954dcdcecd54f4cc7c749420c7a375d20ec94 /tran.c | |
parent | 2976507cc10587a8d6d540c099b1d481547d7807 (diff) | |
download | one-true-awk-fed1a562c3d1f3cf3cac0dd1413679191ac43002.tar.gz |
Make I/O errors fatal instead of mere warnings (#63)
An input/output error indicates a fatal condition, even if it
occurs when closing a file. Awk should not return success on I/O
error, but treat I/O errors as it already treats write errors.
Test case:
$ (trap '' PIPE; awk 'BEGIN { print "hi"; }'; echo "E $?" >&2) | :
awk: i/o error occurred while closing /dev/stdout
source line number 1
E 2
The test case pipes a line into a dummy command that reads no
input, with SIGPIPE ignored so we rely on awk's own I/O checking.
No write error is detected, because the pipe is buffered; the
broken pipe is only detected as an I/O error on closing stdout.
Before this commit, "E 0" was printed (indicating status 0/success)
because an I/O error merely produced a warning. A shell script
was unable to detect the I/O error using the exit status.
Diffstat (limited to 'tran.c')
0 files changed, 0 insertions, 0 deletions