lineedit: do not hang on error, but return error indicator.
[oweals/busybox.git] / loginutils / login.c
index 078cd68ed40c94437afe4cd4b5a434384888f156..e104fbb932d7e59beae2fdece0bbcc21e61fee5a 100644 (file)
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * 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.
  */
 #include "libbb.h"
 #include <syslog.h>
@@ -201,7 +201,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
        };
        char *fromhost;
        char username[USERNAME_SIZE];
-       const char *tmp;
+       const char *shell;
        int run_by_root;
        unsigned opt;
        int count = 0;
@@ -264,7 +264,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
 
        while (1) {
                /* flush away any type-ahead (as getty does) */
-               ioctl(0, TCFLSH, TCIFLUSH);
+               tcflush(0, TCIFLUSH);
 
                if (!username[0])
                        get_username_or_die(username, sizeof(username));
@@ -389,10 +389,10 @@ int login_main(int argc UNUSED_PARAM, char **argv)
                run_login_script(pw, full_tty);
 
        change_identity(pw);
-       tmp = pw->pw_shell;
-       if (!tmp || !*tmp)
-               tmp = DEFAULT_SHELL;
-       setup_environment(tmp,
+       shell = pw->pw_shell;
+       if (!shell || !shell[0])
+               shell = DEFAULT_SHELL;
+       setup_environment(shell,
                        (!(opt & LOGIN_OPT_p) * SETUP_ENV_CLEARENV) + SETUP_ENV_CHANGEENV,
                        pw);
 
@@ -427,7 +427,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
        signal(SIGINT, SIG_DFL);
 
        /* Exec login shell with no additional parameters */
-       run_shell(tmp, 1, NULL, NULL);
+       run_shell(shell, 1, NULL, NULL);
 
        /* return EXIT_FAILURE; - not reached */
 }