github.com/yanyiwu/go@v0.0.0-20150106053140-03d6637dbb7f/src/cmd/dist/main.c (about)

     1  // Copyright 2012 The Go Authors.  All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  #include "a.h"
     6  
     7  int vflag;
     8  int sflag;
     9  char *argv0;
    10  
    11  // cmdtab records the available commands.
    12  static struct {
    13  	char *name;
    14  	void (*f)(int, char**);
    15  } cmdtab[] = {
    16  	{"banner", cmdbanner},
    17  	{"bootstrap", cmdbootstrap},
    18  	{"clean", cmdclean},
    19  	{"env", cmdenv},
    20  	{"install", cmdinstall},
    21  	{"version", cmdversion},
    22  };
    23  
    24  // The OS-specific main calls into the portable code here.
    25  void
    26  xmain(int argc, char **argv)
    27  {
    28  	int i;
    29  
    30  	if(argc <= 1)
    31  		usage();
    32  	
    33  	for(i=0; i<nelem(cmdtab); i++) {
    34  		if(streq(cmdtab[i].name, argv[1])) {
    35  			cmdtab[i].f(argc-1, argv+1);
    36  			return;
    37  		}
    38  	}
    39  
    40  	xprintf("unknown command %s\n", argv[1]);
    41  	usage();
    42  }