From 0851d125c33d65cc8a0655758f2928960077c20c Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 17 Sep 2011 00:12:24 +0200 Subject: [PATCH] tail: fix -c +N. Closes 4111 Signed-off-by: Denys Vlasenko --- coreutils/tail.c | 6 +++--- testsuite/tail.tests | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/coreutils/tail.c b/coreutils/tail.c index 454c25936..43cecbd97 100644 --- a/coreutils/tail.c +++ b/coreutils/tail.c @@ -203,7 +203,7 @@ int tail_main(int argc, char **argv) int fd = fds[i]; if (ENABLE_FEATURE_FANCY_TAIL && fd < 0) - continue; /* may happen with -E */ + continue; /* may happen with -F */ if (nfiles > header_threshhold) { tail_xprint_header(fmt, argv[i]); @@ -252,14 +252,14 @@ int tail_main(int argc, char **argv) * Used only by +N code ("start from Nth", 1-based): */ seen = 1; newlines_seen = 0; - while ((nread = tail_read(fd, buf, tailbufsize-taillen)) > 0) { + while ((nread = tail_read(fd, buf, tailbufsize - taillen)) > 0) { if (G.from_top) { int nwrite = nread; if (seen < count) { /* We need to skip a few more bytes/lines */ if (COUNT_BYTES) { nwrite -= (count - seen); - seen = count; + seen += nread; } else { char *s = buf; do { diff --git a/testsuite/tail.tests b/testsuite/tail.tests index 7140da262..305a83b15 100755 --- a/testsuite/tail.tests +++ b/testsuite/tail.tests @@ -14,4 +14,12 @@ testing "tail: +N with N > file length" \ "0\n" \ "" "qw" +testing "tail: -c +N with largish N" \ + " + dd if=/dev/zero bs=16k count=1 2>/dev/null | tail -c +8200 | wc -c; + dd if=/dev/zero bs=16k count=1 2>/dev/null | tail -c +8208 | wc -c; + " \ + "8185\n8177\n" \ + "" "" + exit $FAILCOUNT