Added support for being a login shell, so things like '-su' or '-sh' (stuff
authorEric Andersen <andersen@codepoet.org>
Thu, 29 Jun 2000 20:20:14 +0000 (20:20 -0000)
committerEric Andersen <andersen@codepoet.org>
Thu, 29 Jun 2000 20:20:14 +0000 (20:20 -0000)
where argv[0][0]=='-') will now always invoke the shell.  Now you can use
BusyBox as a login shell.
 -Erik

Changelog
applets/busybox.c
busybox.c

index c674ab2..11464b6 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -12,6 +12,9 @@
            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
 
index 48ca054..486ef4d 100644 (file)
@@ -479,6 +479,13 @@ int main(int argc, char **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)));
index 48ca054..486ef4d 100644 (file)
--- a/busybox.c
+++ b/busybox.c
@@ -479,6 +479,13 @@ int main(int argc, char **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)));