added utility to hide console echo for entering passwords

This commit is contained in:
Daniel Larimer 2014-02-15 14:06:35 -05:00
parent ded475f45a
commit 2743b56b56
2 changed files with 54 additions and 0 deletions

View file

@ -0,0 +1,8 @@
#pragma once
namespace fc
{
/** enables / disables echoing of console input, useful for
* entering passwords on the console.
*/
void set_console_echo( bool enable_echo );
} // namespace fc

46
src/io/console.cpp Normal file
View file

@ -0,0 +1,46 @@
#include <iostream>
#include <string>
namespace fc {
#ifdef WIN32
#include <windows.h>
void set_console_echo( bool enable_echo )
{
auto stdin_handle = GetStdHandle( STD_INPUT_HANDLE );
DWORD mode = 0;
GetConsoleMode( stdin_handle, &mode );
if( enable_echo )
{
SetConsoleMode( stdin_handle, mode | ENABLE_ECHO_INPUT );
}
else
{
SetConsoleMode( stdin_handle, mode & (~ENABLE_ECHO_INPUT) );
}
}
#else // NOT WIN32
#include <termios.h>
#include <unistd.h>
void set_console_echo( bool enable_echo )
{
termios oldt;
tcgetattr(STDIN_FILENO, &oldt);
termios newt = oldt;
if( enable_echo )
{
newt.c_lflag |= ~ECHO;
}
else
{
newt.c_lflag &= ~ECHO;
}
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
}
#endif // WIN32
} // namespace fc