diff options
Diffstat (limited to '')
-rw-r--r-- | win32/termios.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/win32/termios.c b/win32/termios.c index f18ff7c3b..b94f68f59 100644 --- a/win32/termios.c +++ b/win32/termios.c | |||
@@ -2,12 +2,10 @@ | |||
2 | 2 | ||
3 | int tcsetattr(int fd, int mode UNUSED_PARAM, const struct termios *t) | 3 | int tcsetattr(int fd, int mode UNUSED_PARAM, const struct termios *t) |
4 | { | 4 | { |
5 | if (terminal_mode(FALSE) & VT_INPUT) { | 5 | HANDLE h = (HANDLE)_get_osfhandle(fd); |
6 | HANDLE h = (HANDLE)_get_osfhandle(fd); | 6 | if (!SetConsoleMode(h, t->w_mode)) { |
7 | if (!SetConsoleMode(h, t->imode)) { | 7 | errno = err_win_to_posix(); |
8 | errno = err_win_to_posix(); | 8 | return -1; |
9 | return -1; | ||
10 | } | ||
11 | } | 9 | } |
12 | 10 | ||
13 | return 0; | 11 | return 0; |
@@ -15,16 +13,20 @@ int tcsetattr(int fd, int mode UNUSED_PARAM, const struct termios *t) | |||
15 | 13 | ||
16 | int tcgetattr(int fd, struct termios *t) | 14 | int tcgetattr(int fd, struct termios *t) |
17 | { | 15 | { |
18 | if (terminal_mode(FALSE) & VT_INPUT) { | 16 | HANDLE h = (HANDLE)_get_osfhandle(fd); |
19 | HANDLE h = (HANDLE)_get_osfhandle(fd); | 17 | if (!GetConsoleMode(h, &t->w_mode)) { |
20 | if (!GetConsoleMode(h, &t->imode)) { | 18 | errno = err_win_to_posix(); |
21 | errno = err_win_to_posix(); | 19 | return -1; |
22 | return -1; | ||
23 | } | ||
24 | } | 20 | } |
21 | |||
25 | t->c_cc[VINTR] = 3; // ctrl-c | 22 | t->c_cc[VINTR] = 3; // ctrl-c |
26 | t->c_cc[VEOF] = 4; // ctrl-d | 23 | t->c_cc[VEOF] = 4; // ctrl-d |
27 | 24 | ||
25 | if (t->w_mode & ENABLE_ECHO_INPUT) | ||
26 | t->c_lflag |= ECHO; | ||
27 | else | ||
28 | t->c_lflag &= ~ECHO; | ||
29 | |||
28 | return 0; | 30 | return 0; |
29 | } | 31 | } |
30 | 32 | ||