From: Robert Griebl Date: Fri, 17 May 2002 22:18:04 +0000 (-0000) Subject: SUpport old style -[::digit::] options for head and tail X-Git-Tag: 0_60_4~193 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=13c26fc1a55df2b97062cf370547c4d656e70957;p=oweals%2Fbusybox.git SUpport old style -[::digit::] options for head and tail Also make head behave like GNU head (-0/-n 0 is valid) --- diff --git a/coreutils/head.c b/coreutils/head.c index 4a1677146..c5c11fc7b 100644 --- a/coreutils/head.c +++ b/coreutils/head.c @@ -47,12 +47,17 @@ int head_main(int argc, char **argv) FILE *fp; int need_headers, opt, len = 10, status = EXIT_SUCCESS; + if (( argc >= 2 ) && ( strlen ( argv [1] ) >= 2 ) && ( argv [1][0] == '-' ) && isdigit ( argv [1][1] )) { + len = atoi ( &argv [1][1] ); + optind = 2; + } + /* parse argv[] */ while ((opt = getopt(argc, argv, "n:")) > 0) { switch (opt) { case 'n': len = atoi(optarg); - if (len >= 1) + if (len >= 0) break; /* fallthrough */ default: diff --git a/coreutils/tail.c b/coreutils/tail.c index 0c8dec26a..8201c80a0 100644 --- a/coreutils/tail.c +++ b/coreutils/tail.c @@ -68,6 +68,11 @@ int tail_main(int argc, char **argv) char *s, *start, *end, buf[BUFSIZ]; int i, opt; + if (( argc >= 2 ) && ( strlen ( argv [1] ) >= 2 ) && ( argv [1][0] == '-' ) && isdigit ( argv [1][1] )) { + count = atoi ( &argv [1][1] ); + optind = 2; + } + while ((opt = getopt(argc, argv, "c:fhn:q:s:v")) > 0) { switch (opt) { case 'f':