From ffbfd2c84434852f3e61d911d2517010b70a9638 Mon Sep 17 00:00:00 2001 From: TellowKrinkle Date: Fri, 10 Sep 2021 22:11:54 -0500 Subject: [PATCH] GUI: Check console color support before using it --- common/Console.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/common/Console.cpp b/common/Console.cpp index de0e50e571..4c98f6e045 100644 --- a/common/Console.cpp +++ b/common/Console.cpp @@ -26,8 +26,22 @@ static DeclareTls(int) conlog_Indent(0); static DeclareTls(ConsoleColors) conlog_Color(DefaultConsoleColor); #ifdef __POSIX__ +#include + static FILE* stdout_fp = stdout; +static bool checkSupportsColor() +{ + if (!isatty(fileno(stdout_fp))) + return false; + char* term = getenv("TERM"); + if (!term || (0 == strcmp(term, "dumb"))) + return false; + return true; // Probably supports color +} + +static bool supports_color = checkSupportsColor(); + void Console_SetStdout(FILE* fp) { stdout_fp = fp; @@ -177,6 +191,8 @@ static void __concall ConsoleStdout_Newline() static void __concall ConsoleStdout_DoSetColor(ConsoleColors color) { #if defined(__POSIX__) + if (!supports_color) + return; fprintf(stdout_fp, "\033[0m%s", GetLinuxConsoleColor(color)); fflush(stdout_fp); #endif @@ -185,9 +201,11 @@ static void __concall ConsoleStdout_DoSetColor(ConsoleColors color) static void __concall ConsoleStdout_SetTitle(const wxString& title) { #if defined(__POSIX__) - fputs("\033]0;", stdout_fp); + if (supports_color) + fputs("\033]0;", stdout_fp); fputs(title.utf8_str(), stdout_fp); - fputs("\007", stdout_fp); + if (supports_color) + fputs("\007", stdout_fp); #endif }