+ for (;;) {
+ /* tail -f keeps following files even if they are truncated */
+ struct stat sbuf;
+ /* /proc files report zero st_size, don't lseek them */
+ if (fstat(fd, &sbuf) == 0 && sbuf.st_size > 0) {
+ off_t current = lseek(fd, 0, SEEK_CUR);
+ if (sbuf.st_size < current)
+ xlseek(fd, 0, SEEK_SET);
+ }
+
+ nread = tail_read(fd, tailbuf, BUFSIZ);
+ if (nread <= 0)
+ break;
+ if (fmt && (fd != prev_fd)) {