xref: /plan9/sys/lib/dist/cmd/multi/multi.c (revision 1ee3cffaa7e3c1b699746f1d489ecd9b6a7d4d76)
1 #include <u.h>
2 #include <libc.h>
3 
4 #include "multiproto.h"
5 struct {
6 	char *name;
7 	void (*fn)(int, char**);
8 } mains[] =
9 {
10 #include "multi.h"
11 };
12 
13 void
main(int argc,char ** argv)14 main(int argc, char **argv)
15 {
16 	int i;
17 	char *cmd, *p;
18 
19 	if(argc == 1){
20 		fprint(2, "usage: multi cmd args...\n");
21 		exits("usage");
22 	}
23 
24 	cmd = argv[1];
25 	if(p = strrchr(cmd, '/'))
26 		cmd = p+1;
27 	argv++;
28 	argc--;
29 
30 	for(i=0; i<nelem(mains); i++){
31 		if(strcmp(cmd, mains[i].name) == 0){
32 			mains[i].fn(argc, argv);
33 			return;
34 		}
35 	}
36 	fprint(2, "multi: no such cmd %s\n", cmd);
37 	exits("no cmd");
38 }
39