From 681ce5d2510a90d537129cea42af86cf1cc11186 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 17 Jan 2014 17:45:45 +0100 Subject: [PATCH] Fix Bug#13124. * simple.el (password-word-equivalents): New defcustom. * comint.el (comint-password-prompt-regexp): Use it. Bump version to 24.4. (comint-watch-for-password-prompt): Let-bind `case-fold-search' to t. --- lisp/ChangeLog | 8 +++++++ lisp/comint.el | 15 ++++++------- lisp/simple.el | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 8 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 25c4e9e75b..44bbc9cb4a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2014-01-17 Chong Yidong + + * simple.el (password-word-equivalents): New defcustom. + * comint.el (comint-password-prompt-regexp): Use it. Bump version + to 24.4. + (comint-watch-for-password-prompt): Let-bind `case-fold-search' + to t. (Bug#13124) + 2014-01-17 Dmitry Gutov * progmodes/ruby-mode.el (ruby-alignable-keywords): New constant. diff --git a/lisp/comint.el b/lisp/comint.el index 7407392e02..6e57fdc1c4 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -347,14 +347,12 @@ This variable is buffer-local." "Old" "old" "New" "new" "'s" "login" "Kerberos" "CVS" "UNIX" " SMB" "LDAP" "[sudo]" "Repeat" "Bad") t) " +\\)" - (regexp-opt - '("password" "Password" "passphrase" "Passphrase" - "pass phrase" "Pass phrase" "Response")) + "\\(?:" (regexp-opt password-word-equivalents) "\\|Response\\)" "\\(?:\\(?:, try\\)? *again\\| (empty for no passphrase)\\| (again)\\)?\ -\\(?: for .+\\)?:\\s *\\'") +\\(?: for [^::៖]+\\)?[::៖]\\s *\\'") "Regexp matching prompts for passwords in the inferior process. This is used by `comint-watch-for-password-prompt'." - :version "24.1" + :version "24.4" :type 'regexp :group 'comint) @@ -2318,7 +2316,8 @@ process if STRING contains a password prompt defined by `comint-password-prompt-regexp'. This function could be in the list `comint-output-filter-functions'." - (when (string-match comint-password-prompt-regexp string) + (when (let ((case-fold-search t)) + (string-match comint-password-prompt-regexp string)) (when (string-match "^[ \n\r\t\v\f\b\a]+" string) (setq string (replace-match "" t t string))) (send-invisible string))) @@ -3631,8 +3630,8 @@ This function does not need to be invoked by the end user." ;; If we see the prompt, tidy up ;; We'll look for the prompt in the original string, so nobody can ;; clobber it - (and (string-match comint-redirect-finished-regexp - (concat comint-redirect-previous-input-string + (and (string-match comint-redirect-finished-regexp + (concat comint-redirect-previous-input-string input-string)) (progn (and comint-redirect-verbose diff --git a/lisp/simple.el b/lisp/simple.el index ff32d204d1..62941d01a9 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2555,6 +2555,64 @@ which is defined in the `warnings' library.\n") (setq buffer-undo-list nil) t)) +(defcustom password-word-equivalents + '("password" "passphrase" "pass phrase" + "كلمة السر" ; ar + "গুপ্তশব্দ" ; as + "পাসওয়ার্ড" ; bn_IN + "contrasenya" ; ca + "heslo" ; cs + "adgangskode" ; da + "passwort" ; de + "pasvorto" ; eo + "contraseña" ; es + "pasahitza" ; eu + "salasana" ; fi + "mot de passe" ; fr + "પાસવર્ડ" ; gu + "ססמה" ; he + "शब्दकूट" ; hi + "lozinka" ; hr + "Jelszó: " ; hu + "パスワード" ; ja + "Пароль" ; kk + "ಗುಪ್ತಪದ" ; kn + "암호" ; ko + "ពាក្យសម្ងាត់" ; km + "slaptažodis" ; lt + "അടയാളവാക്ക്" ; ml + "गुप्तशब्द" ; mr + "passord" ; nb + "wachtwoord" ; nl + "ପ୍ରବେଶ ସଙ୍କେତ" ; or + "ਪਾਸਵਰਡ" ; pa + "hasło" ; pl + "senha" ; pt + "Пароль" ; ru + "රහස්පදය" ; si + "Heslo" ; sk + "geslo" ; sl + "lozinka" ; sr + "Лозинка" ; sr + "lösenord" ; sv + "கடவுச்சொல்" ; ta + "సంకేతపదము" ; te + "parola" ; tr + "Пароль" ; uk + "Mật khẩu" ; vi + "密码" ; zh_CN + "密碼" ; zh_TW + "iphasiwedi" ; zu + ) + "List of words equivalent to \"password\". +This is used by Shell mode and other parts of Emacs to recognize +password prompts, including prompts in languages other than +English. Different case choices should not be assumed to be +included; callers should bind `case-fold-search' to t." + :type '(repeat string) + :version "24.4" + :group 'processes) + (defvar shell-command-history nil "History list for some commands that read shell commands. -- 2.20.1