diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/aux/usage.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/aux/usage.c')
-rwxr-xr-x | sys/src/cmd/aux/usage.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/sys/src/cmd/aux/usage.c b/sys/src/cmd/aux/usage.c new file mode 100755 index 000000000..6d58577f4 --- /dev/null +++ b/sys/src/cmd/aux/usage.c @@ -0,0 +1,66 @@ +#include <u.h> +#include <libc.h> + +void +main(void) +{ + Fmt fmt; + char buf[512]; + char *argv0, *args, *flags, *p, *p0; + int single; + Rune r; + + argv0 = getenv("0"); + if((p = strrchr(argv0, '/')) != nil) + argv0 = p+1; + flags = getenv("flagfmt"); + args = getenv("args"); + + if(argv0 == nil){ + fprint(2, "aux/usage: $0 not set\n"); + exits("$0"); + } + if(flags == nil) + flags = ""; + if(args == nil) + args = ""; + + fmtfdinit(&fmt, 2, buf, sizeof buf); + fmtprint(&fmt, "usage: %s", argv0); + if(flags[0]){ + single = 0; + for(p=flags; *p; ){ + p += chartorune(&r, p); + if(*p == ',' || *p == 0){ + if(!single){ + fmtprint(&fmt, " [-"); + single = 1; + } + fmtprint(&fmt, "%C", r); + if(*p == ',') + p++; + continue; + } + while(*p == ' ') + p++; + if(single){ + fmtprint(&fmt, "]"); + single = 0; + } + p0 = p; + p = strchr(p0, ','); + if(p == nil) + p = ""; + else + *p++ = 0; + fmtprint(&fmt, " [-%C %s]", r, p0); + } + if(single) + fmtprint(&fmt, "]"); + } + if(args) + fmtprint(&fmt, " %s", args); + fmtprint(&fmt, "\n"); + fmtfdflush(&fmt); + exits("usage"); +} |