multi.c 543 B

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