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