hush: fix incorrect PS2 dispaly and trap handling while reading command
[oweals/busybox.git] / loginutils / vlock.c
index 216b317f10b09f957793ff010875ef61e115a256..efad63ff38f08ee06bd7b1cf36c6c82e3088cfea 100644 (file)
 /* Fixed by Erik Andersen to do passwords the tinylogin way...
  * It now works with md5, sha1, etc passwords. */
 
+//usage:#define vlock_trivial_usage
+//usage:       "[-a]"
+//usage:#define vlock_full_usage "\n\n"
+//usage:       "Lock a virtual terminal. A password is required to unlock.\n"
+//usage:     "\nOptions:"
+//usage:     "\n       -a      Lock all VTs"
+
 #include "libbb.h"
 
 #ifdef __linux__
@@ -93,16 +100,17 @@ int vlock_main(int argc UNUSED_PARAM, char **argv)
        term.c_lflag &= ~(ECHO | ECHOCTL);
        tcsetattr_stdin_TCSANOW(&term);
 
-       do {
+       while (1) {
                printf("Virtual console%s locked by %s.\n",
-                               option_mask32 /*o_lock_all*/ ? "s" : "",
-                               pw->pw_name);
+                               /* "s" if -a, else "": */ "s" + !option_mask32,
+                               pw->pw_name
+               );
                if (correct_password(pw)) {
                        break;
                }
-               bb_do_delay(FAIL_DELAY);
-               puts("Password incorrect");
-       } while (1);
+               bb_do_delay(LOGIN_FAIL_DELAY);
+               puts("Incorrect password");
+       }
 
 #ifdef __linux__
        ioctl(STDIN_FILENO, VT_SETMODE, &ovtm);