mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-07-25 18:19:00 +02:00
tail: use consistent diagnostics with and without inotify
* src/tail.c: With inotify, when a file is initially absent, we fstat(-1) for that file spec, thus recording an errnum of EBADF, which caused the "has become accessible" diagnostic to be issued, when the file first appears. Instead we avoid the fstat(-1) and thus emit the more natural and consistent "has appeared" diagnostic. * tests/tail-2/retry.sh: Use the new diagnostic which also causes this test to pass on systems without inotify.
This commit is contained in:
+6
-1
@@ -1315,7 +1315,12 @@ static void
|
||||
check_fspec (struct File_spec *fspec, int wd, int *prev_wd)
|
||||
{
|
||||
struct stat stats;
|
||||
char const *name = pretty_name (fspec);
|
||||
char const *name;
|
||||
|
||||
if (fspec->fd == -1)
|
||||
return;
|
||||
|
||||
name = pretty_name (fspec);
|
||||
|
||||
if (fstat (fspec->fd, &stats) != 0)
|
||||
{
|
||||
|
||||
@@ -53,11 +53,11 @@ retry_delay_ wait4lines_ .1 6 3 || fail=1 # Wait for the expected output.
|
||||
kill $pid
|
||||
wait $pid
|
||||
# Expect 3 lines in the output file.
|
||||
[ $( wc -l < out ) = 3 ] || { fail=1; cat out; }
|
||||
grep -F 'cannot open' out || { fail=1; cat out; }
|
||||
grep -F 'has become accessible' out || { fail=1; cat out; }
|
||||
grep '^X$' out || { fail=1; cat out; }
|
||||
rm -f missing out || framework_failure_
|
||||
[ $( wc -l < out ) = 3 ] || { fail=1; cat out; }
|
||||
grep -F 'cannot open' out || { fail=1; cat out; }
|
||||
grep -F 'has appeared' out || { fail=1; cat out; }
|
||||
grep '^X$' out || { fail=1; cat out; }
|
||||
rm -f missing out || framework_failure_
|
||||
|
||||
# === Test:
|
||||
# Ensure that "tail --retry --follow=descriptor" waits for the file to appear.
|
||||
|
||||
Reference in New Issue
Block a user