libarchive: open_zipped() does not need to check extensions for e.g. gzip
[oweals/busybox.git] / loginutils / vlock.c
index 216b317f10b09f957793ff010875ef61e115a256..44b14e6bc460387c0e6ec23ed7714808e6934c3a 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:     "\n       -a      Lock all VTs"
+
 #include "libbb.h"
 
 #ifdef __linux__
@@ -93,16 +99,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);
-               if (correct_password(pw)) {
+                               /* "s" if -a, else "": */ "s" + !option_mask32,
+                               pw->pw_name
+               );
+               if (ask_and_check_password(pw) > 0) {
                        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);