summaryrefslogtreecommitdiffstats
path: root/src/Client/PasswordReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Client/PasswordReader.cpp')
-rw-r--r--src/Client/PasswordReader.cpp19
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;
}
}