diff options
Diffstat (limited to 'cmd/getflags.c')
-rw-r--r-- | cmd/getflags.c | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/cmd/getflags.c b/cmd/getflags.c deleted file mode 100644 index bb0edf28..00000000 --- a/cmd/getflags.c +++ /dev/null @@ -1,82 +0,0 @@ -#include <u.h> -#include <libc.h> - -void -usage(void) -{ - print("status=usage\n"); - exits(0); -} - -char* -findarg(char *flags, Rune r) -{ - char *p; - Rune rr; - - for(p=flags; p!=(char*)1; p=strchr(p, ',')+1){ - chartorune(&rr, p); - if(rr == r) - return p; - } - return nil; -} - -int -countargs(char *p) -{ - int n; - - n = 1; - while(*p == ' ') - p++; - for(; *p && *p != ','; p++) - if(*p == ' ' && *(p-1) != ' ') - n++; - return n; -} - -void -main(int argc, char *argv[]) -{ - char *flags, *p, buf[512]; - int i, n; - Fmt fmt; - - quotefmtinstall(); - argv0 = argv[0]; /* for sysfatal */ - - flags = getenv("flagfmt"); - if(flags == nil){ - fprint(2, "$flagfmt not set\n"); - print("exit 'missing flagfmt'"); - exits(0); - } - - fmtfdinit(&fmt, 1, buf, sizeof buf); - for(p=flags; p!=(char*)1; p=strchr(p, ',')+1) - fmtprint(&fmt, "flag%.1s=()\n", p); - ARGBEGIN{ - default: - if((p = findarg(flags, ARGC())) == nil) - usage(); - p += runelen(ARGC()); - if(*p == ',' || *p == 0){ - fmtprint(&fmt, "flag%C=1\n", ARGC()); - break; - } - n = countargs(p); - fmtprint(&fmt, "flag%C=(", ARGC()); - for(i=0; i<n; i++) - fmtprint(&fmt, "%s%q", i ? " " : "", EARGF(usage())); - fmtprint(&fmt, ")\n"); - }ARGEND - - fmtprint(&fmt, "*=("); - for(i=0; i<argc; i++) - fmtprint(&fmt, "%s%q", i ? " " : "", argv[i]); - fmtprint(&fmt, ")\n"); - fmtprint(&fmt, "status=''\n"); - fmtfdflush(&fmt); - exits(0); -} |