summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2016-11-09 17:51:13 +0000
committerPádraig Brady <P@draigBrady.com>2016-11-09 21:38:33 +0000
commit659060233ff2cff324be5cf4cc40b782068d45fd (patch)
treee3769014e9f5723a91836eaca3835ca80cc89f07 /src
parent7fc7206b03a7f54b23904373ad397f693a5fae2a (diff)
downloadcoreutils-659060233ff2cff324be5cf4cc40b782068d45fd.tar.xz
tail: ensure -f --retry 'missing' handles truncation
* src/tail.c (tail_forever): The BLOCKING optimization is only enabled for non regular files (which can't be truncated), so ensure we don't enable that unless we've a valid file descriptor. * tests/tail-2/retry.sh: Add a test case. * NEWS: Mention the bug fix.
Diffstat (limited to 'src')
-rw-r--r--src/tail.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/tail.c b/src/tail.c
index b3018d526..66aad5b78 100644
--- a/src/tail.c
+++ b/src/tail.c
@@ -1111,7 +1111,7 @@ tail_forever (struct File_spec *f, size_t n_files, double sleep_interval)
{
/* Use blocking I/O as an optimization, when it's easy. */
bool blocking = (pid == 0 && follow_mode == Follow_descriptor
- && n_files == 1 && ! S_ISREG (f[0].mode));
+ && n_files == 1 && f[0].fd != -1 && ! S_ISREG (f[0].mode));
size_t last;
bool writer_is_dead = false;