From: Lennart Poettering Date: Tue, 29 Mar 2011 16:32:46 +0000 (+0200) Subject: ask-password: also accept Backspace as first keypress as silent mode switch X-Git-Tag: v21~13 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=441dfe092acb0f283f7712a80e144b4392b526a0;p=elogind.git ask-password: also accept Backspace as first keypress as silent mode switch --- diff --git a/src/ask-password-api.c b/src/ask-password-api.c index cb0559065..da967ab7a 100644 --- a/src/ask-password-api.c +++ b/src/ask-password-api.c @@ -61,6 +61,7 @@ int ask_password_tty( struct pollfd pollfd[2]; bool reset_tty = false; bool silent_mode = false; + bool dirty = false; enum { POLL_TTY, POLL_INOTIFY @@ -182,6 +183,17 @@ int ask_password_tty( backspace_chars(ttyfd, 1); p--; + } else if (!dirty && !silent_mode) { + + silent_mode = true; + + /* There are two ways to enter silent + * mode. Either by pressing backspace + * as first key (and only as first key), + * or ... */ + if (ttyfd >= 0) + loop_write(ttyfd, "(no echo) ", 10, false); + } else if (ttyfd >= 0) loop_write(ttyfd, "\a", 1, false); @@ -190,6 +202,8 @@ int ask_password_tty( backspace_chars(ttyfd, p); silent_mode = true; + /* ... or by pressing TAB at any time. */ + if (ttyfd >= 0) loop_write(ttyfd, "(no echo) ", 10, false); } else { @@ -197,6 +211,8 @@ int ask_password_tty( if (!silent_mode && ttyfd >= 0) loop_write(ttyfd, "*", 1, false); + + dirty = true; } }