tail: fix -c +N. Closes 4111
No binary (build failed)
—
(log yok)
| @@ -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 { | |
| @@ -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 | |