Commit 16509d3a authored by James Darnley's avatar James Darnley Committed by Michael Niedermayer

log: allow color highlighting in Cygwin's mintty

Configure will detect the availability of the Windows' console functions and set
HAVE_SETCONSOLETEXTATTRIBUTE.  Meaning av_log will use those functions to
control colours.  When ffmpeg is run in Cygwin's mintty terminal emulator it
will not use colour highlighting in this case.

Mintty responds to the usual escape code colours (it even supports 256 colours).
Windows' cmd.exe does not.  Fortunately it seems that Cygwin's emulation layer
now translates the basic 16 colours into Windows' Console command functions.

That means that we can have av_log use the standard colour commands and let
ffmpeg print colours in both mintty and cmd.
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 634636eb
...@@ -50,7 +50,7 @@ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; ...@@ -50,7 +50,7 @@ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static int av_log_level = AV_LOG_INFO; static int av_log_level = AV_LOG_INFO;
static int flags; static int flags;
#if HAVE_SETCONSOLETEXTATTRIBUTE #if defined(_WIN32) && !defined(__MINGW32CE__) && HAVE_SETCONSOLETEXTATTRIBUTE
#include <windows.h> #include <windows.h>
static const uint8_t color[16 + AV_CLASS_CATEGORY_NB] = { static const uint8_t color[16 + AV_CLASS_CATEGORY_NB] = {
[AV_LOG_PANIC /8] = 12, [AV_LOG_PANIC /8] = 12,
...@@ -115,7 +115,7 @@ static int use_color = -1; ...@@ -115,7 +115,7 @@ static int use_color = -1;
static void check_color_terminal(void) static void check_color_terminal(void)
{ {
#if HAVE_SETCONSOLETEXTATTRIBUTE #if defined(_WIN32) && !defined(__MINGW32CE__) && HAVE_SETCONSOLETEXTATTRIBUTE
CONSOLE_SCREEN_BUFFER_INFO con_info; CONSOLE_SCREEN_BUFFER_INFO con_info;
con = GetStdHandle(STD_ERROR_HANDLE); con = GetStdHandle(STD_ERROR_HANDLE);
use_color = (con != INVALID_HANDLE_VALUE) && !getenv("NO_COLOR") && use_color = (con != INVALID_HANDLE_VALUE) && !getenv("NO_COLOR") &&
...@@ -146,7 +146,7 @@ static void colored_fputs(int level, int tint, const char *str) ...@@ -146,7 +146,7 @@ static void colored_fputs(int level, int tint, const char *str)
if (use_color < 0) if (use_color < 0)
check_color_terminal(); check_color_terminal();
#if HAVE_SETCONSOLETEXTATTRIBUTE #if defined(_WIN32) && !defined(__MINGW32CE__) && HAVE_SETCONSOLETEXTATTRIBUTE
if (use_color && level != AV_LOG_INFO/8) if (use_color && level != AV_LOG_INFO/8)
SetConsoleTextAttribute(con, background | color[level]); SetConsoleTextAttribute(con, background | color[level]);
fputs(str, stderr); fputs(str, stderr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment