diff lisp/comint.el @ 53391:ab9195f48a6f

(comint-watch-for-password-prompt): Pass `string' as arg to send-invisible (send-invisible): Doc fix. The argument is now a prompt, not the string to send. (comint-read-noecho): Doc fix.
author Eli Zaretskii <eliz@is.elta.co.il>
date Mon, 29 Dec 2003 13:42:37 +0000
parents bb2708b976f1
children 9a9d11c249b9
line wrap: on
line diff
--- a/lisp/comint.el	Mon Dec 29 13:31:16 2003 +0000
+++ b/lisp/comint.el	Mon Dec 29 13:42:37 2003 +0000
@@ -1901,7 +1901,8 @@
 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 worrysome.
+\(temporarily) with \\[view-lossage].  Some people find this worrysome (see,
+however, `clear-this-command-keys').
 Once the caller uses the password, it can erase the password
 by doing (clear-string STRING)."
   (let ((ans "")
@@ -1948,24 +1949,22 @@
       (message "")
       ans)))
 
-(defun send-invisible (str)
+(defun send-invisible (&optional prompt)
   "Read a string without echoing.
 Then send it to the process running in the current buffer.
 The string is sent using `comint-input-sender'.
 Security bug: your string can still be temporarily recovered with
-\\[view-lossage]."
+\\[view-lossage]; `clear-this-command-keys' can fix that."
   (interactive "P")			; Defeat snooping via C-x ESC ESC
   (let ((proc (get-buffer-process (current-buffer))))
-    (cond ((not proc)
-	   (error "Current buffer has no process"))
-	  ((stringp str)
-	   (comint-snapshot-last-prompt)
-	   (funcall comint-input-sender proc str))
-	  (t
-	   (let ((str (comint-read-noecho "Non-echoed text: " t)))
-	     (if (stringp str)
-		 (send-invisible str)
-	       (message "Warning: text will be echoed")))))))
+    (if proc
+	(let ((str (comint-read-noecho (or prompt "Non-echoed text: ") t)))
+	  (if (stringp str)
+	      (progn
+		(comint-snapshot-last-prompt)
+		(funcall comint-input-sender proc str))
+	    (message "Warning: text will be echoed")))
+      (error "Current buffer has no process"))))
 
 (defun comint-watch-for-password-prompt (string)
   "Prompt in the minibuffer for password and send without echoing.
@@ -1977,8 +1976,7 @@
   (when (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)))
-    (let ((pw (comint-read-noecho string t)))
-      (send-invisible pw))))
+    (send-invisible string)))
 
 ;; Low-level process communication