Phr0zen_Penguin

Windows/POSIX 'stdin echo' Disable/Enable

Aug 29th, 2014
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.31 KB | None | 0 0
  1. /*==================================================================================================
  2.   --------------------------------------------------------------------------------------------------
  3.   [stdin_echo.c]
  4.     Conditionally disable/enable console/terminal echo on Windows/POSIX OSes.
  5.  
  6.         (c) Damion 'Phr0z3n.dev' Tapper, 2014.
  7.         Email: [email protected]
  8.   --------------------------------------------------------------------------------------------------
  9.   ==================================================================================================*/
  10.  
  11. #define _WINDOWS    0x001
  12. #define _NIX        0x002
  13.  
  14. #define _MY_ENV WINDOWS
  15. //#define   _MY_ENV _NIX
  16.  
  17. #if _MY_ENV == WINDOWS
  18.     #include <windows.h>
  19. #elif _MY_ENV == _NIX
  20.     #include <termios.h>
  21.     #include <unistd.h>
  22. #endif
  23.  
  24. void SetStdinEcho(bool);
  25.  
  26. void SetStdinEcho(bool enable = true)
  27. {
  28. #if _MY_ENV == WINDOWS
  29.     HANDLE  hStdin = GetStdHandle(STD_INPUT_HANDLE);
  30.     DWORD   mode;
  31.  
  32.     GetConsoleMode(hStdin, &mode);
  33.  
  34.         if(!enable)
  35.             mode &= ~ENABLE_ECHO_INPUT;
  36.         else
  37.             mode |= ENABLE_ECHO_INPUT;
  38.  
  39.     SetConsoleMode(hStdin, mode);
  40. #elif _MY_ENV == _NIX
  41.     struct  termios tty;
  42.  
  43.     tcgetattr(STDIN_FILENO, &tty);
  44.  
  45.         if(!enable)
  46.             tty.c_lflag &= ~ECHO;
  47.         else
  48.             tty.c_lflag |= ECHO;
  49.  
  50.     (void)tcsetattr(STDIN_FILENO, TCSANOW, &tty);
  51. #endif
  52. }
Advertisement
Add Comment
Please, Sign In to add comment