25 HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
27 if (!GetConsoleMode(hStdin, &mode)) {
28 fputs(
"GetConsoleMode failed\n", stderr);
32 mode &= ~ENABLE_ECHO_INPUT;
34 mode |= ENABLE_ECHO_INPUT;
36 if (!SetConsoleMode(hStdin, mode)) {
37 fputs(
"SetConsoleMode failed\n", stderr);
41 if (tcgetattr(STDIN_FILENO, &tty) != 0) {
42 fputs(
"tcgetattr failed\n", stderr);
46 tty.c_lflag &=
static_cast<decltype(tty.c_lflag)
>(~ECHO);
50 if (tcsetattr(STDIN_FILENO, TCSANOW, &tty) != 0) {
51 fputs(
"tcsetattr failed\n", stderr);
59 return _isatty(_fileno(stdin));
61 return isatty(fileno(stdin));
74 fds.fd = STDIN_FILENO;
76 return poll(&fds, 1, 0) == 1;
void SetStdinEcho(bool enable)