udhcpc: fix a problem with binary-encoded options #2
[oweals/busybox.git] / loginutils / sulogin.c
index 4ffefe933b3a31decd6c2bf5c447b9afa5269960..bd2b09eed899cd9dfa6a9010a01363987954aa11 100644 (file)
@@ -2,9 +2,15 @@
 /*
  * Mini sulogin implementation for busybox
  *
- * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
+//usage:#define sulogin_trivial_usage
+//usage:       "[-t N] [TTY]"
+//usage:#define sulogin_full_usage "\n\n"
+//usage:       "Single user login\n"
+//usage:     "\n       -t N    Timeout"
+
 #include "libbb.h"
 #include <syslog.h>
 
@@ -51,9 +57,6 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
        /* Clear dangerous stuff, set PATH */
        sanitize_env_if_suid();
 
-// bb_ask() already handles this
-//     signal(SIGALRM, catchalarm);
-
        pwd = getpwuid(0);
        if (!pwd) {
                goto auth_error;
@@ -91,24 +94,22 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
                if (r == 0) {
                        break;
                }
-               bb_do_delay(FAIL_DELAY);
-               bb_error_msg("login incorrect");
+               bb_do_delay(LOGIN_FAIL_DELAY);
+               bb_info_msg("Login incorrect");
        }
        memset(cp, 0, strlen(cp));
 //     signal(SIGALRM, SIG_DFL);
 
        bb_info_msg("System Maintenance Mode");
 
-       USE_SELINUX(renew_current_security_context());
+       IF_SELINUX(renew_current_security_context());
 
        shell = getenv("SUSHELL");
        if (!shell)
                shell = getenv("sushell");
-       if (!shell) {
-               shell = "/bin/sh";
-               if (pwd->pw_shell[0])
-                       shell = pwd->pw_shell;
-       }
+       if (!shell)
+               shell = pwd->pw_shell;
+
        /* Exec login shell with no additional parameters. Never returns. */
        run_shell(shell, 1, NULL, NULL);