tail compat: fix header printing for tail -f

Makes tail -f for multiple files display the header only if another (ie. not
currently displayed) file changed.

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Bartosz Golaszewski 2013-10-14 20:11:55 +02:00 committed by Denys Vlasenko
parent 840ef17f63
commit 64938011f3
2 changed files with 4 additions and 6 deletions

5
TODO
View File

@ -127,11 +127,6 @@ patch
And while we're at it, a new patch filename quoting format is apparently And while we're at it, a new patch filename quoting format is apparently
coming soon: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2 coming soon: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2
---
tail
./busybox tail -f foo.c~ TODO
should not print fmt=header_fmt for subsequent date >> TODO; i.e. only
fmt+ if another (not the current) file did change
Architectural issues: Architectural issues:

View File

@ -105,6 +105,7 @@ int tail_main(int argc, char **argv)
int *fds; int *fds;
const char *fmt; const char *fmt;
int prev_fd;
INIT_G(); INIT_G();
@ -309,6 +310,7 @@ int tail_main(int argc, char **argv)
xwrite(STDOUT_FILENO, tailbuf, taillen); xwrite(STDOUT_FILENO, tailbuf, taillen);
} }
} while (++i < nfiles); } while (++i < nfiles);
prev_fd = fds[i-1];
tailbuf = xrealloc(tailbuf, BUFSIZ); tailbuf = xrealloc(tailbuf, BUFSIZ);
@ -365,9 +367,10 @@ int tail_main(int argc, char **argv)
nread = tail_read(fd, tailbuf, BUFSIZ); nread = tail_read(fd, tailbuf, BUFSIZ);
if (nread <= 0) if (nread <= 0)
break; break;
if (fmt) { if (fmt && (fd != prev_fd)) {
tail_xprint_header(fmt, filename); tail_xprint_header(fmt, filename);
fmt = NULL; fmt = NULL;
prev_fd = fd;
} }
xwrite(STDOUT_FILENO, tailbuf, nread); xwrite(STDOUT_FILENO, tailbuf, nread);
} }