summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2014-06-26 15:00:42 -0400
committerGlenn Morris <rgm@gnu.org>2014-06-26 15:00:42 -0400
commit64c3533166e1fa517422f89f953cfdaea6ee7bf0 (patch)
treeb317a5770db12cd74bbef35757965878b88b158e
parent2493e35c369caabf6a65e376fd0399e95b588bfd (diff)
downloademacs-64c3533166e1fa517422f89f953cfdaea6ee7bf0.tar.gz
Warn about read-passwd in batch mode
* doc/lispref/minibuf.texi (Intro to Minibuffers): Batch mode is basic. (Reading a Password): Mention batch mode. * lisp/subr.el (read-passwd): Warn about batch mode. Fixes: debbugs:17839
-rw-r--r--doc/lispref/ChangeLog5
-rw-r--r--doc/lispref/minibuf.texi7
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/subr.el7
4 files changed, 20 insertions, 3 deletions
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 4610c33796a..6b673e7f329 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,8 @@
+2014-06-26 Glenn Morris <rgm@gnu.org>
+
+ * minibuf.texi (Intro to Minibuffers): Batch mode is basic.
+ (Reading a Password): Mention batch mode. (Bug#17839)
+
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* positions.texi (Screen Lines): Clarify how columns are counted
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 5b4e29c57a3..4a94f41d732 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -101,7 +101,9 @@ the minibuffer is in a separate frame. @xref{Minibuffers and Frames}.
When Emacs is running in batch mode, any request to read from the
minibuffer actually reads a line from the standard input descriptor that
-was supplied when Emacs was started.
+was supplied when Emacs was started. This supports only basic input:
+none of the special minibuffer features (history, completion,
+password hiding, etc.) are available in batch mode.
@node Text from Minibuffer
@section Reading Text Strings with the Minibuffer
@@ -2123,7 +2125,8 @@ function @code{read-passwd}.
@defun read-passwd prompt &optional confirm default
This function reads a password, prompting with @var{prompt}. It does
not echo the password as the user types it; instead, it echoes @samp{.}
-for each character in the password.
+for each character in the password. (Note that in batch mode, the
+input is not hidden.)
The optional argument @var{confirm}, if non-@code{nil}, says to read the
password twice and insist it must be the same both times. If it isn't
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6c8f118c8a3..0cc5b7fe71c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,7 @@
+2014-06-26 Glenn Morris <rgm@gnu.org>
+
+ * subr.el (read-passwd): Warn about batch mode. (Bug#17839)
+
2014-06-26 Daiki Ueno <ueno@gnu.org>
* emacs-lisp/package.el (package--check-signature):
diff --git a/lisp/subr.el b/lisp/subr.el
index 700c072a81b..ac0e130b4e0 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2006,6 +2006,7 @@ If optional CONFIRM is non-nil, read the password twice to make sure.
Optional DEFAULT is a default password to use instead of empty input.
This function echoes `.' for each character that the user types.
+Note that in batch mode, the input is not hidden!
Once the caller uses the password, it can erase the password
by doing (clear-string STRING)."
@@ -2045,7 +2046,11 @@ by doing (clear-string STRING)."
(add-hook 'after-change-functions hide-chars-fun nil 'local))
(unwind-protect
(let ((enable-recursive-minibuffers t))
- (read-string prompt nil t default)) ; t = "no history"
+ (read-string
+ (if noninteractive
+ (format "%s[INPUT WILL NOT BE HIDDEN!] " prompt) ; bug#17839
+ prompt)
+ nil t default)) ; t = "no history"
(when (buffer-live-p minibuf)
(with-current-buffer minibuf
;; Not sure why but it seems that there might be cases where the