| // Copyright 2012 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| #include "a.h" |
| |
| int vflag; |
| int sflag; |
| char *argv0; |
| |
| // cmdtab records the available commands. |
| static struct { |
| char *name; |
| void (*f)(int, char**); |
| } cmdtab[] = { |
| {"banner", cmdbanner}, |
| {"bootstrap", cmdbootstrap}, |
| {"clean", cmdclean}, |
| {"env", cmdenv}, |
| {"install", cmdinstall}, |
| {"version", cmdversion}, |
| }; |
| |
| // The OS-specific main calls into the portable code here. |
| void |
| xmain(int argc, char **argv) |
| { |
| int i; |
| |
| if(argc <= 1) |
| usage(); |
| |
| for(i=0; i<nelem(cmdtab); i++) { |
| if(streq(cmdtab[i].name, argv[1])) { |
| cmdtab[i].f(argc-1, argv+1); |
| return; |
| } |
| } |
| |
| xprintf("unknown command %s\n", argv[1]); |
| usage(); |
| } |