Make Windows client read password without echo again

Commit 8c3b8d10 replaced the getpass() for Windows by a generic
ersatz_getpass().  This lost the "switch off echo" feature, with the
excuse that it doesn't work for me (MinGW & Wine).  Turns out it works
under real Windows.  Restore the feature.
This commit is contained in:
Markus Armbruster 2009-04-23 20:38:15 +02:00
parent b1e6004148
commit eb1041f130

View file

@ -52,11 +52,22 @@ ersatz_getpass(char *prompt)
static char buf[128]; static char buf[128];
char *p; char *p;
size_t len; size_t len;
#ifdef _WIN32
DWORD mode;
HANDLE input_handle = GetStdHandle(STD_INPUT_HANDLE);
printf("Note: your input is echoed to the screen\n"); if (GetConsoleMode(input_handle, &mode))
SetConsoleMode(input_handle, mode & ~ENABLE_ECHO_INPUT);
else
#endif
printf("Note: your input is echoed to the screen\n");
printf("Your name? "); printf("Your name? ");
fflush(stdout); fflush(stdout);
p = fgets(buf, sizeof(buf), stdin); p = fgets(buf, sizeof(buf), stdin);
#ifdef _WIN32
if (GetConsoleMode(input_handle, &mode))
SetConsoleMode(input_handle, mode | ENABLE_ECHO_INPUT);
#endif
if (!p) if (!p)
return NULL; return NULL;
len = strlen(p); len = strlen(p);