SUpport old style -[::digit::] options for head and tail
authorRobert Griebl <griebl@gmx.de>
Fri, 17 May 2002 22:18:04 +0000 (22:18 -0000)
committerRobert Griebl <griebl@gmx.de>
Fri, 17 May 2002 22:18:04 +0000 (22:18 -0000)
Also make head behave like GNU head (-0/-n 0 is valid)

coreutils/head.c
coreutils/tail.c

index 4a1677146d906135caf6b2159c7c7aa8982cba2b..c5c11fc7b682fffb031d1f4a238ed40b5c342836 100644 (file)
@@ -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:
index 0c8dec26aee0fcafd0d9a1567d90ab601c5d29f4..8201c80a098523d27519f1bdb55a4ca085249dce 100644 (file)
@@ -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':