From 262695a14dd2f0f38a69690c2a4850922b5a5fbb Mon Sep 17 00:00:00 2001 From: Anairkoen Schno Date: Sat, 27 Apr 2019 19:42:03 -0500 Subject: [PATCH] Added more proper checks for if the console doesn't support VT100 escapes --- IPA.Loader/Logging/ConsoleWindow.cs | 14 ++++++++++++-- IPA.Loader/Logging/StdoutInterceptor.cs | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/IPA.Loader/Logging/ConsoleWindow.cs b/IPA.Loader/Logging/ConsoleWindow.cs index d9822106..a9cf9469 100644 --- a/IPA.Loader/Logging/ConsoleWindow.cs +++ b/IPA.Loader/Logging/ConsoleWindow.cs @@ -15,6 +15,8 @@ namespace IPA.Logging private static SafeFileHandle outHandle; private static SafeFileHandle inHandle; + public static bool UseVTEscapes { get; private set; } = true; + internal static IntPtr OutHandle => outHandle.DangerousGetHandle(); internal static IntPtr InHandle => inHandle.DangerousGetHandle(); @@ -58,10 +60,18 @@ namespace IPA.Logging { mode |= EnableVTProcessing; if (!SetConsoleMode(handle, mode)) - throw new Win32Exception(Marshal.GetLastWin32Error()); + { + UseVTEscapes = false; + Console.Error.WriteLine("Could not enable VT100 escape code processing (maybe you're running an old Windows?): " + + new Win32Exception(Marshal.GetLastWin32Error()).Message); + } } else - throw new Win32Exception(Marshal.GetLastWin32Error()); + { + UseVTEscapes = false; + Console.Error.WriteLine("Could not enable VT100 escape code processing (maybe you're running an old Windows?): " + + new Win32Exception(Marshal.GetLastWin32Error()).Message); + } } } diff --git a/IPA.Loader/Logging/StdoutInterceptor.cs b/IPA.Loader/Logging/StdoutInterceptor.cs index 09d1cf4c..e7edf942 100644 --- a/IPA.Loader/Logging/StdoutInterceptor.cs +++ b/IPA.Loader/Logging/StdoutInterceptor.cs @@ -53,6 +53,7 @@ namespace IPA.Logging private static string ConsoleColorToForegroundSet(ConsoleColor col) { + if (!WinConsole.UseVTEscapes) return ""; string code = "0"; // reset switch (col)