diff options
Diffstat (limited to 'src/Client/PasswordReader.cpp')
-rw-r--r-- | src/Client/PasswordReader.cpp | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/Client/PasswordReader.cpp b/src/Client/PasswordReader.cpp index 8d549f5..cb77ad5 100644 --- a/src/Client/PasswordReader.cpp +++ b/src/Client/PasswordReader.cpp @@ -33,20 +33,11 @@ namespace Mad { namespace Client { Core::String PasswordReader::readPassword(const Core::String &prompt) { - std::string password; - #ifdef _WIN32 DWORD mode; HANDLE handle = GetStdHandle(STD_INPUT_HANDLE); GetConsoleMode(handle, &mode); SetConsoleMode(handle, mode & ~(ENABLE_ECHO_INPUT)); - - std::cout << prompt.extract() << std::flush; - std::getline(std::cin, password); - std::cout << std::endl; - - SetConsoleMode(handle, mode); - #else struct termios termold, termnew; @@ -55,15 +46,19 @@ Core::String PasswordReader::readPassword(const Core::String &prompt) { termnew = termold; termnew.c_lflag &= ~ECHO; tcsetattr(STDIN_FILENO, TCSAFLUSH, &termnew); +#endif - std::cout << prompt.extract() << std::flush; - std::getline(std::cin, password); + std::cout << prompt << std::flush; + Core::String password = Core::String::getline(std::cin); std::cout << std::endl; +#ifdef _WIN32 + SetConsoleMode(handle, mode); +#else tcsetattr(STDIN_FILENO, TCSAFLUSH, &termold); #endif - return password.c_str(); + return password; } } |