Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*==================================================================================================
- --------------------------------------------------------------------------------------------------
- [stdin_echo.c]
- Conditionally disable/enable console/terminal echo on Windows/POSIX OSes.
- (c) Damion 'Phr0z3n.dev' Tapper, 2014.
- Email: [email protected]
- --------------------------------------------------------------------------------------------------
- ==================================================================================================*/
- #define _WINDOWS 0x001
- #define _NIX 0x002
- #define _MY_ENV WINDOWS
- //#define _MY_ENV _NIX
- #if _MY_ENV == WINDOWS
- #include <windows.h>
- #elif _MY_ENV == _NIX
- #include <termios.h>
- #include <unistd.h>
- #endif
- void SetStdinEcho(bool);
- void SetStdinEcho(bool enable = true)
- {
- #if _MY_ENV == WINDOWS
- HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
- DWORD mode;
- GetConsoleMode(hStdin, &mode);
- if(!enable)
- mode &= ~ENABLE_ECHO_INPUT;
- else
- mode |= ENABLE_ECHO_INPUT;
- SetConsoleMode(hStdin, mode);
- #elif _MY_ENV == _NIX
- struct termios tty;
- tcgetattr(STDIN_FILENO, &tty);
- if(!enable)
- tty.c_lflag &= ~ECHO;
- else
- tty.c_lflag |= ECHO;
- (void)tcsetattr(STDIN_FILENO, TCSANOW, &tty);
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment