1*84cb9422SDavid du Colombier #include <u.h>
2*84cb9422SDavid du Colombier #include <libc.h>
3*84cb9422SDavid du Colombier
4*84cb9422SDavid du Colombier void
main(void)5*84cb9422SDavid du Colombier main(void)
6*84cb9422SDavid du Colombier {
7*84cb9422SDavid du Colombier Fmt fmt;
8*84cb9422SDavid du Colombier char buf[512];
9*84cb9422SDavid du Colombier char *argv0, *args, *flags, *p, *p0;
10*84cb9422SDavid du Colombier int single;
11*84cb9422SDavid du Colombier Rune r;
12*84cb9422SDavid du Colombier
13*84cb9422SDavid du Colombier argv0 = getenv("0");
14*84cb9422SDavid du Colombier if((p = strrchr(argv0, '/')) != nil)
15*84cb9422SDavid du Colombier argv0 = p+1;
16*84cb9422SDavid du Colombier flags = getenv("flagfmt");
17*84cb9422SDavid du Colombier args = getenv("args");
18*84cb9422SDavid du Colombier
19*84cb9422SDavid du Colombier if(argv0 == nil){
20*84cb9422SDavid du Colombier fprint(2, "aux/usage: $0 not set\n");
21*84cb9422SDavid du Colombier exits("$0");
22*84cb9422SDavid du Colombier }
23*84cb9422SDavid du Colombier if(flags == nil)
24*84cb9422SDavid du Colombier flags = "";
25*84cb9422SDavid du Colombier if(args == nil)
26*84cb9422SDavid du Colombier args = "";
27*84cb9422SDavid du Colombier
28*84cb9422SDavid du Colombier fmtfdinit(&fmt, 2, buf, sizeof buf);
29*84cb9422SDavid du Colombier fmtprint(&fmt, "usage: %s", argv0);
30*84cb9422SDavid du Colombier if(flags[0]){
31*84cb9422SDavid du Colombier single = 0;
32*84cb9422SDavid du Colombier for(p=flags; *p; ){
33*84cb9422SDavid du Colombier p += chartorune(&r, p);
34*84cb9422SDavid du Colombier if(*p == ',' || *p == 0){
35*84cb9422SDavid du Colombier if(!single){
36*84cb9422SDavid du Colombier fmtprint(&fmt, " [-");
37*84cb9422SDavid du Colombier single = 1;
38*84cb9422SDavid du Colombier }
39*84cb9422SDavid du Colombier fmtprint(&fmt, "%C", r);
40*84cb9422SDavid du Colombier if(*p == ',')
41*84cb9422SDavid du Colombier p++;
42*84cb9422SDavid du Colombier continue;
43*84cb9422SDavid du Colombier }
44*84cb9422SDavid du Colombier while(*p == ' ')
45*84cb9422SDavid du Colombier p++;
46*84cb9422SDavid du Colombier if(single){
47*84cb9422SDavid du Colombier fmtprint(&fmt, "]");
48*84cb9422SDavid du Colombier single = 0;
49*84cb9422SDavid du Colombier }
50*84cb9422SDavid du Colombier p0 = p;
51*84cb9422SDavid du Colombier p = strchr(p0, ',');
52*84cb9422SDavid du Colombier if(p == nil)
53*84cb9422SDavid du Colombier p = "";
54*84cb9422SDavid du Colombier else
55*84cb9422SDavid du Colombier *p++ = 0;
56*84cb9422SDavid du Colombier fmtprint(&fmt, " [-%C %s]", r, p0);
57*84cb9422SDavid du Colombier }
58*84cb9422SDavid du Colombier if(single)
59*84cb9422SDavid du Colombier fmtprint(&fmt, "]");
60*84cb9422SDavid du Colombier }
61*84cb9422SDavid du Colombier if(args)
62*84cb9422SDavid du Colombier fmtprint(&fmt, " %s", args);
63*84cb9422SDavid du Colombier fmtprint(&fmt, "\n");
64*84cb9422SDavid du Colombier fmtfdflush(&fmt);
65*84cb9422SDavid du Colombier exits("usage");
66*84cb9422SDavid du Colombier }
67