]> granicus.if.org Git - jq/commitdiff
Possibly enable color output on Windows (#1494)
authorJason Hood <jadoxa@yahoo.com.au>
Tue, 12 Feb 2019 08:34:37 +0000 (18:34 +1000)
committerNico Williams <nico@cryptonector.com>
Sun, 17 Feb 2019 02:40:41 +0000 (20:40 -0600)
Windows 10 supports color output, but it must be explicitly enabled;
ANSICON provides support for other versions.  Enable color if either of
those are available.  Resolves #1494.

src/main.c

index ebfddf9a3dbc564ea46b8fcfe2183dac64a0fd08..233d130b245f2a20b5912d5ed32bb58bfc1d04da 100644 (file)
@@ -538,6 +538,17 @@ int main(int argc, char* argv[]) {
   /* Disable color by default on Windows builds as Windows
      terminals tend not to display it correctly */
     dumpopts |= JV_PRINT_COLOR;
+#else
+    // Unless ANSICON is installed, or it's Windows 10
+    if (getenv("ANSICON") != NULL)
+      dumpopts |= JV_PRINT_COLOR;
+    else {
+      DWORD mode;
+      HANDLE con = GetStdHandle(STD_OUTPUT_HANDLE);
+      if (GetConsoleMode(con, &mode) &&
+         SetConsoleMode(con, mode | 4/*ENABLE_VIRTUAL_TERMINAL_PROCESSING*/))
+       dumpopts |= JV_PRINT_COLOR;
+    }
 #endif
   }
 #endif