summaryrefslogtreecommitdiff
path: root/sys/lib/dist/cmd/multi/multi.c
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 16:53:33 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 16:53:33 +0300
commite463eb40363ff4c68b1d903f4e0cdd0ac1c5977f (patch)
treed5e9f57c28f026cb21de3bd77cc10cd7f64aaa85 /sys/lib/dist/cmd/multi/multi.c
parentb41b9034225ab3e49980d9de55c141011b6383b0 (diff)
Import sources from 2011-03-30 iso image - sys/lib
Diffstat (limited to 'sys/lib/dist/cmd/multi/multi.c')
-rwxr-xr-xsys/lib/dist/cmd/multi/multi.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/sys/lib/dist/cmd/multi/multi.c b/sys/lib/dist/cmd/multi/multi.c
new file mode 100755
index 000000000..a2e3035ad
--- /dev/null
+++ b/sys/lib/dist/cmd/multi/multi.c
@@ -0,0 +1,38 @@
+#include <u.h>
+#include <libc.h>
+
+#include "multiproto.h"
+struct {
+ char *name;
+ void (*fn)(int, char**);
+} mains[] =
+{
+#include "multi.h"
+};
+
+void
+main(int argc, char **argv)
+{
+ int i;
+ char *cmd, *p;
+
+ if(argc == 1){
+ fprint(2, "usage: multi cmd args...\n");
+ exits("usage");
+ }
+
+ cmd = argv[1];
+ if(p = strrchr(cmd, '/'))
+ cmd = p+1;
+ argv++;
+ argc--;
+
+ for(i=0; i<nelem(mains); i++){
+ if(strcmp(cmd, mains[i].name) == 0){
+ mains[i].fn(argc, argv);
+ return;
+ }
+ }
+ fprint(2, "multi: no such cmd %s\n", cmd);
+ exits("no cmd");
+}