Next drop of toysh, plus more infratructure.
diff --git a/main.c b/main.c
index 90d80c7..57fb7f4 100644
--- a/main.c
+++ b/main.c
@@ -17,6 +17,7 @@
{"cd", cd_main, TOYFLAG_NOFORK},
{"df", df_main, TOYFLAG_USR|TOYFLAG_SBIN},
{"exit", exit_main, TOYFLAG_NOFORK},
+ {"sh", toysh_main, TOYFLAG_BIN},
{"toysh", toysh_main, TOYFLAG_BIN}
};
@@ -51,6 +52,16 @@
}
}
+void toy_init(struct toy_list *which, char *argv[])
+{
+ // Free old toys contents here?
+
+ toys.which = which;
+ toys.argv = argv;
+ for (toys.argc = 0; argv[toys.argc]; toys.argc++);
+ toys.exitval = 1;
+}
+
// Run a toy.
void toy_exec(char *argv[])
{
@@ -59,12 +70,7 @@
which = toy_find(argv[0]);
if (!which) return;
- // Free old toys contents here?
-
- toys.which = which;
- toys.argv = argv;
- for (toys.argc = 0; argv[toys.argc]; toys.argc++);
- toys.exitval = 1;
+ toy_init(which, argv);
exit(toys.which->toy_main());
}