summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/usage.c
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
commite5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch)
treed8d51eac403f07814b9e936eed0c9a79195e2450 /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-xsys/src/cmd/aux/usage.c66
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");
+}