sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit 3f9e501f6b8bd747ac8127ca56e34db0409e03d1
parent 2046778bc915fcbad8b8a9354febcc0b9ccdf683
Author: dsp <dsp@2f30.org>
Date:   Mon Nov 11 19:53:01 +0000

Add ARGNUM and ARGNUMF(base)

This is useful to support the obsolete syntax -NUM for tools like
head, tail and fold.

Diffstat:
arg.h | 15++++++++++++++-
fold.c | 4+++-
head.c | 4+++-
tail.c | 3+++
4 files changed, 23 insertions(+), 3 deletions(-)
diff --git 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 @@ -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 @@ -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 @@ -30,6 +30,9 @@ main(int argc, char *argv[]) if(lines[0] == '+') tail = dropinit; break; + ARGNUM: + n = ARGNUMF(0); + break; default: usage(); } ARGEND;