diff options
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | THANKS.in | 1 | ||||
-rw-r--r-- | src/tail.c | 10 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rwxr-xr-x | tests/tail-2/follow-name | 32 |
5 files changed, 49 insertions, 0 deletions
@@ -2,6 +2,11 @@ GNU coreutils NEWS -*- outline -*- * Noteworthy changes in release ?.? (????-??-??) [?] +** Bug fixes + + tail's --follow=name option no longer implies --retry on systems + with inotify support. [bug introduced in coreutils-7.5] + ** Changes in behavior cp's extent-based (FIEMAP) copying code is more reliable in the face @@ -560,6 +560,7 @@ Tim J. Robbins tjr@FreeBSD.org Tim Mooney mooney@dogbert.cc.ndsu.NoDak.edu Tim Ryan Tim_Ryan@bnz.co.nz Tim Smithers mouse@dmouse.com.au +Tim Underwood timunderwood@gmail.com Tim Waugh twaugh@redhat Toby Peterson toby@opendarwin.org Todd A. Jacobs tjacobs@codegnome.org diff --git a/src/tail.c b/src/tail.c index 88fbd10b8..e6d816432 100644 --- a/src/tail.c +++ b/src/tail.c @@ -1432,6 +1432,16 @@ tail_forever_inotify (int wd, struct File_spec *f, size_t n_files, struct File_spec *fspec; struct inotify_event *ev; + /* When following by name without --retry, and the last file has + been unlinked or renamed-away, diagnose it and return. */ + if (follow_mode == Follow_name + && ! reopen_inaccessible_files + && hash_get_n_entries (wd_to_name) == 0) + { + error (0, 0, _("no files remaining")); + return false; + } + /* When watching a PID, ensure that a read from WD will not block indefinitely. */ if (pid) diff --git a/tests/Makefile.am b/tests/Makefile.am index 685eb52b9..2f4a5613a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -489,6 +489,7 @@ TESTS = \ tail-2/assert-2 \ tail-2/big-4gb \ tail-2/flush-initial \ + tail-2/follow-name \ tail-2/follow-stdin \ tail-2/pipe-f \ tail-2/pipe-f2 \ diff --git a/tests/tail-2/follow-name b/tests/tail-2/follow-name new file mode 100755 index 000000000..ef9434a60 --- /dev/null +++ b/tests/tail-2/follow-name @@ -0,0 +1,32 @@ +#!/bin/sh +# ensure that --follow=name does not imply --retry + +# Copyright (C) 2011 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "${srcdir=.}/init.sh"; path_prepend_ ../src +print_ver_ tail + +cat <<\EOF > exp || framework_failure_ +tail: cannot open `no-such' for reading: No such file or directory +tail: no files remaining +EOF + +timeout 10 tail --follow=name no-such > out 2> err +test $? = 1 || fail=1 + +compare err exp || fail=1 + +Exit $fail |