From bf011f4df2b534396719acddf772e55ccb9f1485 Mon Sep 17 00:00:00 2001 From: girst Date: Sat, 5 Jan 2019 19:08:55 +0100 Subject: [PATCH] fix: don't overwrite stored termios structure this function was originally intended to only be called once, but when adding the ex-commands this assumption was violated. checking for .c_lflag is not perfect, but there should be at least _something_ in there after tcgetattr. (static variables are zero-initialized) --- mines.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mines.c b/mines.c index 75d4c21..8f4ac2a 100644 --- a/mines.c +++ b/mines.c @@ -911,7 +911,8 @@ void raw_mode(int enable) { struct termios raw_term_mode; if (enable) { - tcgetattr(STDIN_FILENO, &saved_term_mode); + if (saved_term_mode.c_lflag == 0)/*don't overwrite stored mode*/ + tcgetattr(STDIN_FILENO, &saved_term_mode); raw_term_mode = saved_term_mode; raw_term_mode.c_lflag &= ~(ICANON | ECHO); raw_term_mode.c_cc[VMIN] = 1 ; -- 2.39.3