--- tail.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/tail.c b/tail.c index ad97308..000be62 100644 --- a/tail.c +++ b/tail.c _AT_@ -133,7 +133,7 @@ main(int argc, char *argv[]) } if (many) printf("%s==> %s <==\n", newline ? "\n" : "", *argv); - if (stat(*argv, &st1) < 0) + if (fstat(fileno(fp), &st1) < 0) eprintf("stat %s:", *argv); if (!(S_ISFIFO(st1.st_mode) || S_ISREG(st1.st_mode))) fflag = 0; _AT_@ -153,15 +153,13 @@ main(int argc, char *argv[]) if (ferror(fp)) eprintf("fgetc %s:", *argv); clearerr(fp); - /* ignore error in case file was removed, we continue - * tracking the existing open file descriptor */ - if (!stat(*argv, &st2)) { - if (st2.st_size < st1.st_size) { - fprintf(stderr, "%s: file truncated\n", *argv); - rewind(fp); - } - st1 = st2; + if (fstat(fileno(fp), &st2) < 0) + eprintf("fstat:"); + if (st2.st_size < st1.st_size) { + fprintf(stderr, "%s: file truncated\n", *argv); + rewind(fp); } + st1 = st2; sleep(1); } } -- 2.11.0Received on Mon Dec 05 2016 - 06:55:11 CET
This archive was generated by hypermail 2.3.0 : Mon Dec 05 2016 - 07:00:51 CET