* src/tail.c (ignore_pipe_or_fifo): Mark the descriptor as -1
for pipes so that any_live_files() detects correctly that
the entry is no longer live.
* tests/tail-2/pipe-f.sh: Add a test case.
* NEWS: Mention the fix.
Fixes http://bugs.gnu.org/24903 which was detected
using Symbolic Execution techniques developed in
the course of the SYMBIOSYS research project at
COMSYS, RWTH Aachen University.
and is now handled correctly in all cases.
[bug introduced in fileutils-4.0h]
+ tail -f - 'untailable file' will now terminate when there is no more data
+ to read from stdin. Previously it behaved as if --retry was specified.
+ [This bug was present in "the beginning".]
+
yes now handles short writes, rather than assuming all writes complete.
[bug introduced in coreutils-8.24]
&& (S_ISFIFO (f[i].mode)
|| (HAVE_FIFO_PIPES != 1 && isapipe (f[i].fd))));
if (is_a_fifo_or_pipe)
- f[i].ignore = true;
+ {
+ f[i].fd = -1;
+ f[i].ignore = true;
+ }
else
++n_viable;
}
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ tail
+echo oo > exp || framework_failure_
echo foo | timeout 10 tail -f -c3 > out || fail=1
-echo oo > exp || fail=1
+compare exp out || fail=1
+
+cat <<\EOF > exp
+==> standard input <==
+ar
+==> missing <==
+EOF
+mkdir missing || framework_failure_
+echo bar | returns_ 1 timeout 10 tail -f -c3 - missing > out || fail=1
compare exp out || fail=1
Exit $fail