diff options
-rw-r--r-- | coreutils/tail.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/coreutils/tail.c b/coreutils/tail.c index 024441e73..1703eefc6 100644 --- a/coreutils/tail.c +++ b/coreutils/tail.c @@ -69,12 +69,27 @@ int tail_main(int argc, char **argv) char *s, *start, *end, buf[BUFSIZ]; int i, opt; - if (( argc >= 2 ) && ( argv [1][0] == '-' ) && isdigit ( argv [1][1] )) { - count = atoi ( &argv [1][1] ); - optind = 2; + if (argc >= 2) { + int line_num; + switch (argv[1][0]) { + case '+': + from_top = 1; + /* FALLS THROUGH */ + case '-': + line_num = atoi(&argv[1][1]); + if (line_num != 0) { + optind = 2; + count = line_num; + } + break; + } } - while ((opt = getopt(argc, argv, "c:fhn:q:s:v")) > 0) { +#ifdef CONFIG_FEATURE_FANCY_TAIL + while ((opt = getopt(argc, argv, "c:fn:q:s:v")) > 0) { +#else + while ((opt = getopt(argc, argv, "fn:")) > 0) { +#endif switch (opt) { case 'f': follow = 1; |