mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-03-06 05:52:32 -08:00
(read-passwd): Renamed from read-password. New second arg CONFIRM.
This commit is contained in:
parent
94a13fbf01
commit
44071d6b2c
1 changed files with 31 additions and 20 deletions
51
lisp/subr.el
51
lisp/subr.el
|
|
@ -763,27 +763,38 @@ any other non-digit terminates the character code and is then used as input."))
|
|||
(setq first nil))
|
||||
code))
|
||||
|
||||
(defun read-password (prompt &optional default)
|
||||
"Read a password, echoing `.' for each character typed.
|
||||
(defun read-passwd (prompt &optional confirm default)
|
||||
"Read a password, prompting with PROMPT. Echo `.' for each character typed.
|
||||
End with RET, LFD, or ESC. DEL or C-h rubs out. C-u kills line.
|
||||
Optional DEFAULT is password to start with."
|
||||
(let ((pass nil)
|
||||
(c 0)
|
||||
(echo-keystrokes 0)
|
||||
(cursor-in-echo-area t))
|
||||
(while (progn (message "%s%s"
|
||||
prompt
|
||||
(make-string (length pass) ?.))
|
||||
(setq c (read-char))
|
||||
(and (/= c ?\r) (/= c ?\n) (/= c ?\e)))
|
||||
(if (= c ?\C-u)
|
||||
(setq pass "")
|
||||
(if (and (/= c ?\b) (/= c ?\177))
|
||||
(setq pass (concat pass (char-to-string c)))
|
||||
(if (> (length pass) 0)
|
||||
(setq pass (substring pass 0 -1))))))
|
||||
(message nil)
|
||||
(or pass default "")))
|
||||
Optional argument CONFIRM, if non-nil, then read it twice to make sure.
|
||||
Optional DEFAULT is a default password to use instead of empty input."
|
||||
(if confirm
|
||||
(let (success)
|
||||
(while (not success)
|
||||
(let ((first (read-passwd prompt nil default))
|
||||
(second (read-passwd "Confirm password: " nil default)))
|
||||
(if (equal first second)
|
||||
(setq success first)
|
||||
(message "Password not repeated accurately; please start over")
|
||||
(sit-for 1))))
|
||||
success)
|
||||
(let ((pass nil)
|
||||
(c 0)
|
||||
(echo-keystrokes 0)
|
||||
(cursor-in-echo-area t))
|
||||
(while (progn (message "%s%s"
|
||||
prompt
|
||||
(make-string (length pass) ?.))
|
||||
(setq c (read-char))
|
||||
(and (/= c ?\r) (/= c ?\n) (/= c ?\e)))
|
||||
(if (= c ?\C-u)
|
||||
(setq pass "")
|
||||
(if (and (/= c ?\b) (/= c ?\177))
|
||||
(setq pass (concat pass (char-to-string c)))
|
||||
(if (> (length pass) 0)
|
||||
(setq pass (substring pass 0 -1))))))
|
||||
(message nil)
|
||||
(or pass default ""))))
|
||||
|
||||
(defun force-mode-line-update (&optional all)
|
||||
"Force the mode-line of the current buffer to be redisplayed.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue