--- busybox-1.10.0/coreutils/tail.c Thu Mar 20 12:46:51 2008 +++ busybox-1.10.0-tail/coreutils/tail.c Sun Mar 23 04:25:12 2008 @@ -163,8 +163,6 @@ fmt = header_fmt + 1; /* Skip header leading newline on first output. */ i = 0; do { - off_t current; - if (nfiles > header_threshhold) { tail_xprint_header(fmt, argv[i]); fmt = header_fmt; @@ -173,19 +171,17 @@ /* Optimizing count-bytes case if the file is seekable. * Beware of backing up too far. * Also we exclude files with size 0 (because of /proc/xxx) */ - current = lseek(fds[i], 0, SEEK_END); - if (current > 0) { - if (!from_top) { + if (COUNT_BYTES && !from_top) { + off_t current = lseek(fds[i], 0, SEEK_END); + if (current > 0) { if (count == 0) continue; /* showing zero lines is easy :) */ - if (COUNT_BYTES) { - current -= count; - if (current < 0) - current = 0; - xlseek(fds[i], current, SEEK_SET); - bb_copyfd_size(fds[i], STDOUT_FILENO, count); - continue; - } + current -= count; + if (current < 0) + current = 0; + xlseek(fds[i], current, SEEK_SET); + bb_copyfd_size(fds[i], STDOUT_FILENO, count); + continue; } } --- busybox-1.10.0/testsuite/tail/tail-n-works Thu Mar 20 12:46:57 2008 +++ busybox-1.10.0-tail/testsuite/tail/tail-n-works Sun Mar 23 04:25:12 2008 @@ -1,4 +1,4 @@ -[ -n "$d" ] || d=.. -tail -n 2 "$d/README" > logfile.gnu -busybox tail -n 2 "$d/README" > logfile.bb -cmp logfile.gnu logfile.bb +echo -ne "abc\ndef\n123\n" >input +echo -ne "def\n123\n" >logfile.ok +busybox tail -n 2 input > logfile.bb +cmp logfile.ok logfile.bb --- busybox-1.10.0/testsuite/tail/tail-works Thu Mar 20 12:46:57 2008 +++ busybox-1.10.0-tail/testsuite/tail/tail-works Sun Mar 23 04:25:12 2008 @@ -1,4 +1,4 @@ -[ -n "$d" ] || d=.. -tail -n 2 "$d/README" > logfile.gnu -busybox tail -n 2 "$d/README" > logfile.bb -cmp logfile.gnu logfile.bb +echo -ne "abc\ndef\n123\n" >input +echo -ne "def\n123\n" >logfile.ok +busybox tail -2 input > logfile.bb +cmp logfile.ok logfile.bb