diff options
author | Denis Vlasenko | 2006-12-21 00:43:06 +0000 |
---|---|---|
committer | Denis Vlasenko | 2006-12-21 00:43:06 +0000 |
commit | 6910741067913d131d931b1e6424d3b8ed43e64f (patch) | |
tree | 945d53a36adbced6732a01fad444e8bf2ff5f1db | |
parent | 3f3190e34c5d39986fae0ec03f37cf5509dd9c93 (diff) | |
download | busybox-6910741067913d131d931b1e6424d3b8ed43e64f.zip busybox-6910741067913d131d931b1e6424d3b8ed43e64f.tar.gz |
tail: fix tail +N
-rw-r--r-- | coreutils/tail.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/coreutils/tail.c b/coreutils/tail.c index 643c0f3..2182b09 100644 --- a/coreutils/tail.c +++ b/coreutils/tail.c @@ -122,15 +122,15 @@ int tail_main(int argc, char **argv) /* FALLS THROUGH */ case 'n': #if !ENABLE_DEBUG_YANK_SUSv2 || ENABLE_FEATURE_FANCY_TAIL - GET_COUNT: + GET_COUNT: #endif - count = xatol_sfx(optarg, tail_suffixes); - /* Note: Leading whitespace is an error trapped above. */ + from_top = 0; if (*optarg == '+') { + ++optarg; from_top = 1; - } else { - from_top = 0; } + count = xatol_sfx(optarg, tail_suffixes); + /* Note: Leading whitespace is an error trapped above. */ if (count < 0) { count = -count; } @@ -150,20 +150,18 @@ int tail_main(int argc, char **argv) bb_show_usage(); } } + argc -= optind; + argv += optind; /* open all the files */ - fds = xmalloc(sizeof(int) * (argc - optind + 1)); - - argv += optind; + fds = xmalloc(sizeof(int) * (argc + 1)); nfiles = i = 0; - - if ((argc -= optind) == 0) { + if (argc == 0) { struct stat statbuf; if (!fstat(STDIN_FILENO, &statbuf) && S_ISFIFO(statbuf.st_mode)) { follow = 0; } - /* --argv; */ *argv = (char *) bb_msg_standard_input; goto DO_STDIN; } |