when removing directories. For example EIO will be faithfully
diagnosed, rather than being conflated with ENOTEMPTY.
+ tail --follow=name now works with single non regular files even
+ when their modification time doesn't change when new data is available.
+ Previously tail would not show any new data in this case.
+
* Noteworthy changes in release 9.1 (2022-04-15) [stable]
Gerhard Poul gpoul@gnu.org
Germano Leichsenring germano@jedi.cs.kobe-u.ac.jp
Glen Lenker glen.lenker@gmail.com
+Glenn Golden gdg@zplane.com
GOTO Masanori gotom@debian.or.jp
Greg Louis glouis@dynamicro.on.ca
Greg McGary gkm@gnu.org
f[i].blocking = blocking;
}
+ bool read_unchanged = false;
if (!f[i].blocking)
{
if (fstat (fd, &stats) != 0)
recheck (&f[i], f[i].blocking);
f[i].n_unchanged_stats = 0;
}
- continue;
+ if (fd != f[i].fd || S_ISREG (stats.st_mode) || 1 < n_files)
+ continue;
+ else
+ read_unchanged = true;
}
+ assert (fd == f[i].fd);
+
/* This file has changed. Print out what we can, and
then keep looping. */
f[i].mode = stats.st_mode;
/* reset counter */
- f[i].n_unchanged_stats = 0;
+ if (! read_unchanged)
+ f[i].n_unchanged_stats = 0;
/* XXX: This is only a heuristic, as the file may have also
been truncated and written to if st_size >= size
bytes_read = dump_remainder (false, name, fd, bytes_to_read);
+ if (read_unchanged && bytes_read)
+ f[i].n_unchanged_stats = 0;
+
any_input |= (bytes_read != 0);
f[i].size += bytes_read;
}