diff --git a/arg.h b/arg.h index 2009b70..b8f48c0 100644 --- a/arg.h +++ b/arg.h @@ -29,11 +29,25 @@ extern char *argv0; _argc = argv[0][0];\ switch (_argc) +/* Handles obsolete -NUM syntax */ +#define ARGNUM case '0':\ + case '1':\ + case '2':\ + case '3':\ + case '4':\ + case '5':\ + case '6':\ + case '7':\ + case '8':\ + case '9' + #define ARGEND }\ } #define ARGC() _argc +#define ARGNUMF(base) (brk = 1, estrtol(argv[0], (base))) + #define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\ ((x), abort(), (char *)0) :\ (brk = 1, (argv[0][1] != '\0')?\ @@ -47,4 +61,3 @@ extern char *argv0; (argc--, argv++, argv[0]))) #endif - diff --git a/fold.c b/fold.c index bbbb28a..d327c62 100644 --- a/fold.c +++ b/fold.c @@ -35,6 +35,9 @@ main(int argc, char *argv[]) case 'w': width = estrtol(EARGF(usage()), 0); break; + ARGNUM: + width = ARGNUMF(0); + break; default: usage(); } ARGEND; @@ -102,4 +105,3 @@ foldline(const char *str, long width) putchar('\n'); } while(str[i = n] && str[i] != '\n'); } - diff --git a/head.c b/head.c index 0cf8680..8011151 100644 --- a/head.c +++ b/head.c @@ -23,6 +23,9 @@ main(int argc, char *argv[]) case 'n': n = estrtol(EARGF(usage()), 0); break; + ARGNUM: + n = ARGNUMF(0); + break; default: usage(); } ARGEND; @@ -53,4 +56,3 @@ head(FILE *fp, const char *str, long n) if(ferror(fp)) eprintf("%s: read error:", str); } - diff --git a/tail.c b/tail.c index da222b6..9c241db 100644 --- a/tail.c +++ b/tail.c @@ -30,6 +30,9 @@ main(int argc, char *argv[]) if(lines[0] == '+') tail = dropinit; break; + ARGNUM: + n = ARGNUMF(0); + break; default: usage(); } ARGEND;