summaryrefslogtreecommitdiffstats
path: root/collage/collage.c
diff options
context:
space:
mode:
Diffstat (limited to 'collage/collage.c')
-rw-r--r--collage/collage.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/collage/collage.c b/collage/collage.c
new file mode 100644
index 000000000..ddc4ae28e
--- /dev/null
+++ b/collage/collage.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <string.h>
+
+#include "commands.h"
+
+struct commandTableEntry {
+ char * name;
+ int (*fn)(int argc, char ** argv);
+};
+
+struct commandTableEntry commandTable[] = {
+ { "umount", umountCommand },
+ { "mount", mountCommand },
+ { "mkdir", mkdirCommand },
+ { "mknod", mknodCommand },
+ { "cat", catCommand },
+ { "ls", lsCommand },
+ { "ln", lnCommand },
+ { "rm", rmCommand },
+ { "chmod", chmodCommand },
+ { "lsmod", lsmodCommand },
+ { "uncpio", uncpioCommand },
+ { NULL, NULL }
+};
+
+int main (int argc, char ** argv) {
+ int len = strlen(argv[0]);
+ struct commandTableEntry * cmd;
+
+ for (cmd = commandTable; cmd->name; cmd++) {
+ if (!strcmp(argv[0] + len - strlen(cmd->name), cmd->name))
+ break;
+ }
+
+ if (cmd->name)
+ return cmd->fn(argc, argv);
+
+ printf("collage may be run as:\n");
+ for (cmd = commandTable; cmd->name; cmd++)
+ printf("\t%s\n", cmd->name);
+
+ return 1;
+}
+