seq: detect and report I/O errors immediately
commitc92585b10b29ce2c31c69cea52e69ef053c9679f
authorAssaf Gordon <assafgordon@gmail.com>
Sun, 17 Apr 2016 06:28:13 +0000 (17 02:28 -0400)
committerAssaf Gordon <assafgordon@gmail.com>
Sun, 24 Apr 2016 22:19:50 +0000 (24 18:19 -0400)
treeff733fa4b684abfa59dd5a7b3d56f411c9027fee
parent8c8163838aa5589f5dfe2c94dcc48f0ab443fd35
seq: detect and report I/O errors immediately

Ensure I/O errors are detected (and terminate seq), preventing seq
from infloop (or running for long time with a large
range) upon write errors or ignored SIGPIPE. Examples:

     seq 1 inf > /dev/full             (seq_fast)
     seq 1.1 0.1 inf >/dev/full        (print_numbers)

* src/seq.c (io_error): A new function to diagnose appropriate
stdio errors and exit the program with failure status.
(seq_fast, print_numbers): Explicitly check for write errors
and terminate the program with diagnostic.
* tests/misc/seq-io-errors.sh: Test error detection with /dev/full.
* tests/misc/seq-epipe.sh: Test error detection with broken pipes.
* tests/local.mk: Add new tests.
* NEWS: Mention the fix.
NEWS
src/seq.c
tests/local.mk
tests/misc/seq-epipe.sh [new file with mode: 0755]
tests/misc/seq-io-errors.sh [new file with mode: 0755]