From 6e9cde8ac17ce01011d8889b7af39422c02f75da Mon Sep 17 00:00:00 2001 From: Calvin Rose Date: Sun, 30 Apr 2023 10:36:42 -0500 Subject: [PATCH] Add feature check for windows version shell.c Tried to get console working on windows 7 and below --- src/mainclient/shell.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/mainclient/shell.c b/src/mainclient/shell.c index c1812d75..05c428e7 100644 --- a/src/mainclient/shell.c +++ b/src/mainclient/shell.c @@ -146,9 +146,13 @@ static void setup_console_output(void) { HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); DWORD dwMode = 0; GetConsoleMode(hOut, &dwMode); - dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + if (IsWindows10OrGreater()) { + dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + } SetConsoleMode(hOut, dwMode); - SetConsoleOutputCP(65001); + if (IsValidCodePage(65001)) { + SetConsoleOutputCP(65001); + } } /* Ansi terminal raw mode */ @@ -160,8 +164,10 @@ static int rawmode(void) { dwMode &= ~ENABLE_LINE_INPUT; dwMode &= ~ENABLE_INSERT_MODE; dwMode &= ~ENABLE_ECHO_INPUT; - dwMode |= ENABLE_VIRTUAL_TERMINAL_INPUT; - dwMode &= ~ENABLE_PROCESSED_INPUT; + if (IsWindows10OrGreater()) { + dwMode |= ENABLE_VIRTUAL_TERMINAL_INPUT; + dwMode &= ~ENABLE_PROCESSED_INPUT; + } if (!SetConsoleMode(hOut, dwMode)) return 1; gbl_israwmode = 1; return 0; @@ -176,8 +182,10 @@ static void norawmode(void) { dwMode |= ENABLE_LINE_INPUT; dwMode |= ENABLE_INSERT_MODE; dwMode |= ENABLE_ECHO_INPUT; - dwMode &= ~ENABLE_VIRTUAL_TERMINAL_INPUT; - dwMode |= ENABLE_PROCESSED_INPUT; + if (IsWindows10OrGreater()) { + dwMode &= ~ENABLE_VIRTUAL_TERMINAL_INPUT; + dwMode |= ENABLE_PROCESSED_INPUT; + } SetConsoleMode(hOut, dwMode); gbl_israwmode = 0; }