X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fask-password-api.c;h=da967ab7a1a638b10163fef471755a2652809d05;hp=cb0559065d8ed4808ede95a3fd3d7e07d896823a;hb=cb39ed3fdeb102a921e862a23b90607b5242f94e;hpb=58fc840b8325395d24ab70e84cb69880c6daa9ee 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; } }