where argv[0][0]=='-') will now always invoke the shell. Now you can use
BusyBox as a login shell.
-Erik
Fix thanks to Arne Bernin <arne@matrix.loopback.org>
* Added support for "sh -c command args...", thanks to
Marius Groeger <mgroeger@sysgo.de>
+ * Added support for being a login shell, so things like
+ '-su' or '-sh' (stuff where argv[0][0]=='-') will now always
+ invoke the shell. Now you can use BusyBox as a login shell.
-Erik Andersen
*argv = name;
+#ifdef BB_SH
+ /* Add in a special case hack -- whenever **argv == '-'
+ * (i.e. '-su' or '-sh') always invoke the shell */
+ if (**argv == '-')
+ exit(((*(shell_main)) (argc, argv)));
+#endif
+
while (a->name != 0) {
if (strcmp(name, a->name) == 0) {
exit(((*(a->main)) (argc, argv)));
*argv = name;
+#ifdef BB_SH
+ /* Add in a special case hack -- whenever **argv == '-'
+ * (i.e. '-su' or '-sh') always invoke the shell */
+ if (**argv == '-')
+ exit(((*(shell_main)) (argc, argv)));
+#endif
+
while (a->name != 0) {
if (strcmp(name, a->name) == 0) {
exit(((*(a->main)) (argc, argv)));