]> git.eshelyaron.com Git - emacs.git/commitdiff
(comint-output-filter-functions): Add comint-watch-for-password-prompt.
authorRichard M. Stallman <rms@gnu.org>
Sun, 17 Oct 2004 06:51:10 +0000 (06:51 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 17 Oct 2004 06:51:10 +0000 (06:51 +0000)
(comint-read-noecho): Function deleted.
(send-invisible): Use read-passwd.

lisp/comint.el

index 8b2c779ecd3837f7b1c3c6de3e1a1ee3c7a85b6c..cfbd618c89678b6dc9dc4db9d187d43c2e3a4430 100644 (file)
@@ -372,7 +372,7 @@ history list.  Default is to save anything that isn't all whitespace.")
   "Special hook run before input is sent to the process.
 These functions get one argument, a string containing the text to send.")
 
-(defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom)
+(defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)
   "Functions to call after output is inserted into the buffer.
 One possible function is `comint-postoutput-scroll-to-bottom'.
 These functions get one argument, a string containing the text as originally
@@ -1901,65 +1901,7 @@ prompt skip is done by skipping text matching the regular expression
 
 ;; These three functions are for entering text you don't want echoed or
 ;; saved -- typically passwords to ftp, telnet, or somesuch.
-;; Just enter m-x send-invisible and type in your line, or add
-;; `comint-watch-for-password-prompt' to `comint-output-filter-functions'.
-
-(defun comint-read-noecho (prompt &optional stars)
-  "Read a single line of text from user without echoing, and return it.
-Prompt with argument PROMPT, a string.  Optional argument STARS causes
-input to be echoed with '*' characters on the prompt line.  Input ends with
-RET, LFD, or ESC.  DEL or C-h rubs out.  C-u kills line.  C-g aborts (if
-`inhibit-quit' is set because e.g. this function was called from a process
-filter and C-g is pressed, this function returns nil rather than a string).
-
-Note that the keystrokes comprising the text can still be recovered
-\(temporarily) with \\[view-lossage].  Some people find this worrisome (see,
-however, `clear-this-command-keys').
-Once the caller uses the password, it can erase the password
-by doing (clear-string STRING)."
-  (let ((ans "")
-       (newans nil)
-       (c 0)
-       (echo-keystrokes 0)
-       (cursor-in-echo-area t)
-       (message-log-max nil)
-       (done nil))
-    (while (not done)
-      (if stars
-         (message "%s%s" prompt (make-string (length ans) ?*))
-       (message "%s" prompt))
-      ;; Use this instead of `read-char' to avoid "Non-character input-event".
-      (setq c (read-char-exclusive))
-      (cond ((= c ?\C-g)
-            ;; This function may get called from a process filter, where
-            ;; inhibit-quit is set.  In later versions of emacs read-char
-            ;; may clear quit-flag itself and return C-g.  That would make
-            ;; it impossible to quit this loop in a simple way, so
-            ;; re-enable it here (for backward-compatibility the check for
-            ;; quit-flag below would still be necessary, so this seems
-            ;; like the simplest way to do things).
-            (setq quit-flag t
-                  done t))
-           ((or (= c ?\r) (= c ?\n) (= c ?\e))
-            (setq done t))
-           ((= c ?\C-u)
-            (clear-string ans)
-            (setq ans ""))
-           ((and (/= c ?\b) (/= c ?\177))
-            (setq newans (concat ans (char-to-string c)))
-            (clear-string ans)
-            (setq ans newans))
-           ((> (length ans) 0)
-            (aset ans (1- (length ans)) 0)
-            (setq ans (substring ans 0 -1)))))
-    (if quit-flag
-       ;; Emulate a true quit, except that we have to return a value.
-       (prog1
-           (setq quit-flag nil)
-         (message "Quit")
-         (beep t))
-      (message "")
-      ans)))
+;; Just enter m-x send-invisible and type in your line.
 
 (defun send-invisible (&optional prompt)
   "Read a string without echoing.
@@ -1970,7 +1912,7 @@ Security bug: your string can still be temporarily recovered with
   (interactive "P")                    ; Defeat snooping via C-x ESC ESC
   (let ((proc (get-buffer-process (current-buffer))))
     (if proc
-       (let ((str (comint-read-noecho (or prompt "Non-echoed text: ") t)))
+       (let ((str (read-passwd (or prompt "Non-echoed text: "))))
          (if (stringp str)
              (progn
                (comint-snapshot-last-prompt)