forked from enlightenment/efl
Eina: fix colors messages in MSYS2
With MSYS1 or cygwin 1.5, or DOS console, the display is done by redirecting stdout and al. So to change the colors, the Win32 API of the console must be used. On the contrary, the terminals based on mintty (like cygwin 1.8 terminal or MSYS2) the redirection is done with pipes, so the Win32 API of the console does not work when changing the colors and we can use the POSIX colors of printf. This patch is fixing the eina code which alwayss use the Win32 API of the console on Windows, even if mintty-based terminals are used
This commit is contained in:
parent
baa06ebf15
commit
79fadd184f
|
@ -185,6 +185,8 @@ static const char *_names[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
||||||
|
static Eina_Bool _eina_log_win32_is_console = EINA_FALSE;
|
||||||
/* TODO: query win32_def_attr on eina_log_init() */
|
/* TODO: query win32_def_attr on eina_log_init() */
|
||||||
static int win32_def_attr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
|
static int win32_def_attr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
|
||||||
|
|
||||||
|
@ -322,7 +324,7 @@ eina_log_print_level_name_get(int level, const char **p_name)
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
static inline void
|
static inline void
|
||||||
eina_log_print_level_name_color_get(int level,
|
eina_log_print_level_name_color_get_win32_console(int level,
|
||||||
const char **p_name,
|
const char **p_name,
|
||||||
int *p_color)
|
int *p_color)
|
||||||
{
|
{
|
||||||
|
@ -345,9 +347,9 @@ eina_log_print_level_name_color_get(int level,
|
||||||
|
|
||||||
*p_color = eina_log_win32_color_get(eina_log_level_color_get(level));
|
*p_color = eina_log_win32_color_get(eina_log_level_color_get(level));
|
||||||
}
|
}
|
||||||
#else
|
#endif
|
||||||
static inline void
|
static inline void
|
||||||
eina_log_print_level_name_color_get(int level,
|
eina_log_print_level_name_color_get_posix(int level,
|
||||||
const char **p_name,
|
const char **p_name,
|
||||||
const char **p_color)
|
const char **p_color)
|
||||||
{
|
{
|
||||||
|
@ -370,17 +372,16 @@ eina_log_print_level_name_color_get(int level,
|
||||||
|
|
||||||
*p_color = eina_log_level_color_get(level);
|
*p_color = eina_log_level_color_get(level);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DECLARE_LEVEL_NAME(level) const char *name; \
|
#define DECLARE_LEVEL_NAME(level) const char *name; \
|
||||||
eina_log_print_level_name_get(level, &name)
|
eina_log_print_level_name_get(level, &name)
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# define DECLARE_LEVEL_NAME_COLOR(level) const char *name; int color; \
|
# define DECLARE_LEVEL_NAME_COLOR_WIN32_CONSOLE(level) const char *name; int color; \
|
||||||
eina_log_print_level_name_color_get(level, &name, &color)
|
eina_log_print_level_name_color_get_win32_console(level, &name, &color)
|
||||||
#else
|
|
||||||
# define DECLARE_LEVEL_NAME_COLOR(level) const char *name, *color; \
|
|
||||||
eina_log_print_level_name_color_get(level, &name, &color)
|
|
||||||
#endif
|
#endif
|
||||||
|
#define DECLARE_LEVEL_NAME_COLOR_POSIX(level) const char *name, *color; \
|
||||||
|
eina_log_print_level_name_color_get_posix(level, &name, &color)
|
||||||
|
|
||||||
/** No threads, No color */
|
/** No threads, No color */
|
||||||
static void
|
static void
|
||||||
|
@ -423,6 +424,51 @@ eina_log_print_prefix_NOthreads_NOcolor_file_NOfunc(FILE *fp,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* No threads, color */
|
/* No threads, color */
|
||||||
|
#ifdef _WIN32
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_NOthreads_color_file_func_win32_console(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *file,
|
||||||
|
const char *fnc,
|
||||||
|
int line)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_WIN32_CONSOLE(level);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
|
||||||
|
fprintf(fp, "%s", name);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, ":");
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
eina_log_win32_color_get(d->domain_str));
|
||||||
|
fprintf(fp, "%s", d->name);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, " %s:%d ", file, line);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_INTENSITY | FOREGROUND_RED |
|
||||||
|
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, "%s()", fnc);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, " ");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_NOthreads_color_file_func_posix(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *file,
|
||||||
|
const char *fnc,
|
||||||
|
int line)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_POSIX(level);
|
||||||
|
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s %s:%d "
|
||||||
|
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
||||||
|
color, name, eina_log_pid_get(), d->domain_str, file, line, fnc);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eina_log_print_prefix_NOthreads_color_file_func(FILE *fp,
|
eina_log_print_prefix_NOthreads_color_file_func(FILE *fp,
|
||||||
const Eina_Log_Domain *d,
|
const Eina_Log_Domain *d,
|
||||||
|
@ -431,34 +477,60 @@ eina_log_print_prefix_NOthreads_color_file_func(FILE *fp,
|
||||||
const char *fnc,
|
const char *fnc,
|
||||||
int line)
|
int line)
|
||||||
{
|
{
|
||||||
DECLARE_LEVEL_NAME_COLOR(level);
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
if (_eina_log_win32_is_console)
|
||||||
color);
|
eina_log_print_prefix_NOthreads_color_file_func_win32_console(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
file,
|
||||||
|
fnc,
|
||||||
|
line);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
eina_log_print_prefix_NOthreads_color_file_func_posix(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
file,
|
||||||
|
fnc,
|
||||||
|
line);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_NOthreads_color_NOfile_func_win32_console(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *fnc)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_WIN32_CONSOLE(level);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);
|
||||||
fprintf(fp, "%s", name);
|
fprintf(fp, "%s", name);
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
fprintf(fp, ":");
|
fprintf(fp, ":");
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
eina_log_win32_color_get(d->domain_str));
|
eina_log_win32_color_get(d->domain_str));
|
||||||
fprintf(fp, "%s", d->name);
|
fprintf(fp, "%s", d->name);
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, " %s:%d ", file, line);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_INTENSITY | FOREGROUND_RED |
|
FOREGROUND_INTENSITY | FOREGROUND_RED |
|
||||||
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
fprintf(fp, "%s()", fnc);
|
fprintf(fp, "%s()", fnc);
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
fprintf(fp, " ");
|
fprintf(fp, " ");
|
||||||
#else
|
}
|
||||||
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s %s:%d "
|
|
||||||
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
|
||||||
color, name, eina_log_pid_get(), d->domain_str, file, line, fnc);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_NOthreads_color_NOfile_func_posix(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *fnc)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_POSIX(level);
|
||||||
|
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s "
|
||||||
|
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
||||||
|
color, name, eina_log_pid_get(), d->domain_str, fnc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -469,43 +541,29 @@ eina_log_print_prefix_NOthreads_color_NOfile_func(FILE *fp,
|
||||||
const char *fnc,
|
const char *fnc,
|
||||||
int line EINA_UNUSED)
|
int line EINA_UNUSED)
|
||||||
{
|
{
|
||||||
DECLARE_LEVEL_NAME_COLOR(level);
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
if (_eina_log_win32_is_console)
|
||||||
color);
|
eina_log_print_prefix_NOthreads_color_NOfile_func_win32_console(fp,
|
||||||
fprintf(fp, "%s", name);
|
d,
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
level,
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
fnc);
|
||||||
fprintf(fp, ":");
|
else
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
eina_log_win32_color_get(d->domain_str));
|
|
||||||
fprintf(fp, "%s", d->name);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_INTENSITY | FOREGROUND_RED |
|
|
||||||
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, "%s()", fnc);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, " ");
|
|
||||||
#else
|
|
||||||
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s "
|
|
||||||
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
|
||||||
color, name, eina_log_pid_get(), d->domain_str, fnc);
|
|
||||||
#endif
|
#endif
|
||||||
|
eina_log_print_prefix_NOthreads_color_NOfile_func_posix(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
fnc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
static void
|
static void
|
||||||
eina_log_print_prefix_NOthreads_color_file_NOfunc(FILE *fp,
|
eina_log_print_prefix_NOthreads_color_file_NOfunc_win32_console(FILE *fp,
|
||||||
const Eina_Log_Domain *d,
|
const Eina_Log_Domain *d,
|
||||||
Eina_Log_Level level,
|
Eina_Log_Level level,
|
||||||
const char *file,
|
const char *file,
|
||||||
const char *fnc EINA_UNUSED,
|
|
||||||
int line)
|
int line)
|
||||||
{
|
{
|
||||||
DECLARE_LEVEL_NAME_COLOR(level);
|
DECLARE_LEVEL_NAME_COLOR_WIN32_CONSOLE(level);
|
||||||
#ifdef _WIN32
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
color);
|
color);
|
||||||
fprintf(fp, "%s", name);
|
fprintf(fp, "%s", name);
|
||||||
|
@ -519,10 +577,43 @@ eina_log_print_prefix_NOthreads_color_file_NOfunc(FILE *fp,
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
fprintf(fp, " %s:%d ", file, line);
|
fprintf(fp, " %s:%d ", file, line);
|
||||||
#else
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_NOthreads_color_file_NOfunc_posix(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *file,
|
||||||
|
int line)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_POSIX(level);
|
||||||
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s %s:%d ",
|
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s %s:%d ",
|
||||||
color, name, eina_log_pid_get(), d->domain_str, file, line);
|
color, name, eina_log_pid_get(), d->domain_str, file, line);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_NOthreads_color_file_NOfunc(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *file,
|
||||||
|
const char *fnc EINA_UNUSED,
|
||||||
|
int line)
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
if (_eina_log_win32_is_console)
|
||||||
|
eina_log_print_prefix_NOthreads_color_file_NOfunc_win32_console(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
file,
|
||||||
|
line);
|
||||||
|
else
|
||||||
#endif
|
#endif
|
||||||
|
eina_log_print_prefix_NOthreads_color_file_NOfunc_posix(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
file,
|
||||||
|
line);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** threads, No color */
|
/** threads, No color */
|
||||||
|
@ -597,6 +688,66 @@ eina_log_print_prefix_threads_NOcolor_file_NOfunc(FILE *fp,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* threads, color */
|
/* threads, color */
|
||||||
|
#ifdef _WIN32
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_threads_color_file_func_win32_console(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *file,
|
||||||
|
const char *fnc,
|
||||||
|
int line,
|
||||||
|
Eina_Thread cur)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_WIN32_CONSOLE(level);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
color);
|
||||||
|
fprintf(fp, "%s", name);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
|
FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, ":");
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
eina_log_win32_color_get(d->domain_str));
|
||||||
|
fprintf(fp, "%s[T:", d->name);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
|
FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, "[T:");
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, "%lu", (unsigned long)cur);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
|
FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, "] %s:%d ", file, line);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_INTENSITY | FOREGROUND_RED |
|
||||||
|
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, "%s()", fnc);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
|
FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, " ");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_threads_color_file_func_posix(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *file,
|
||||||
|
const char *fnc,
|
||||||
|
int line,
|
||||||
|
Eina_Thread cur)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_POSIX(level);
|
||||||
|
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s[T:"
|
||||||
|
EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] %s:%d "
|
||||||
|
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
||||||
|
color, name, eina_log_pid_get() ,d->domain_str,
|
||||||
|
(unsigned long)cur, file, line, fnc);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eina_log_print_prefix_threads_color_file_func(FILE *fp,
|
eina_log_print_prefix_threads_color_file_func(FILE *fp,
|
||||||
const Eina_Log_Domain *d,
|
const Eina_Log_Domain *d,
|
||||||
|
@ -607,68 +758,89 @@ eina_log_print_prefix_threads_color_file_func(FILE *fp,
|
||||||
{
|
{
|
||||||
Eina_Thread cur;
|
Eina_Thread cur;
|
||||||
|
|
||||||
DECLARE_LEVEL_NAME_COLOR(level);
|
|
||||||
cur = SELF();
|
cur = SELF();
|
||||||
if (IS_OTHER(cur))
|
if (IS_OTHER(cur))
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
if (_eina_log_win32_is_console)
|
||||||
|
eina_log_print_prefix_threads_color_file_func_win32_console(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
file,
|
||||||
|
fnc,
|
||||||
|
line,
|
||||||
|
cur);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
eina_log_print_prefix_threads_color_file_func_posix(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
file,
|
||||||
|
fnc,
|
||||||
|
line,
|
||||||
|
cur);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
eina_log_print_prefix_NOthreads_color_file_func(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
file,
|
||||||
|
fnc,
|
||||||
|
line);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_threads_color_NOfile_func_win32_console(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *fnc,
|
||||||
|
Eina_Thread cur)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_WIN32_CONSOLE(level);
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
color);
|
color);
|
||||||
fprintf(fp, "%s", name);
|
fprintf(fp, "%s", name);
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
FOREGROUND_BLUE);
|
FOREGROUND_BLUE);
|
||||||
fprintf(fp, ":");
|
fprintf(fp, ":");
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
eina_log_win32_color_get(d->domain_str));
|
eina_log_win32_color_get(d->domain_str));
|
||||||
fprintf(fp, "%s[T:", d->name);
|
fprintf(fp, "%s[T:", d->name);
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
FOREGROUND_BLUE);
|
FOREGROUND_BLUE);
|
||||||
fprintf(fp, "[T:");
|
fprintf(fp, "[T:");
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
fprintf(fp, "%lu", (unsigned long)cur);
|
fprintf(fp, "%lu", (unsigned long)cur);
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
|
||||||
FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, "] %s:%d ", file, line);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
SetConsoleTextAttribute(GetStdHandle(
|
||||||
STD_OUTPUT_HANDLE),
|
STD_OUTPUT_HANDLE),
|
||||||
FOREGROUND_INTENSITY | FOREGROUND_RED |
|
FOREGROUND_INTENSITY | FOREGROUND_RED |
|
||||||
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
fprintf(fp, "%s()", fnc);
|
fprintf(fp, "%s()", fnc);
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
FOREGROUND_BLUE);
|
FOREGROUND_BLUE);
|
||||||
fprintf(fp, " ");
|
fprintf(fp, " ");
|
||||||
# else
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_threads_color_NOfile_func_posix(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *fnc,
|
||||||
|
Eina_Thread cur)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_POSIX(level);
|
||||||
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s[T:"
|
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s[T:"
|
||||||
EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] %s:%d "
|
EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] "
|
||||||
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
||||||
color, name, eina_log_pid_get(), d->domain_str,
|
color, name, eina_log_pid_get(), d->domain_str,
|
||||||
(unsigned long)cur, file, line, fnc);
|
(unsigned long)cur, fnc);
|
||||||
# endif
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
# ifdef _WIN32
|
|
||||||
eina_log_print_prefix_NOthreads_color_file_func(fp,
|
|
||||||
d,
|
|
||||||
level,
|
|
||||||
file,
|
|
||||||
fnc,
|
|
||||||
line);
|
|
||||||
# else
|
|
||||||
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s %s:%d "
|
|
||||||
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
|
||||||
color, name, eina_log_pid_get(), d->domain_str, file, line, fnc);
|
|
||||||
# endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -681,63 +853,81 @@ eina_log_print_prefix_threads_color_NOfile_func(FILE *fp,
|
||||||
{
|
{
|
||||||
Eina_Thread cur;
|
Eina_Thread cur;
|
||||||
|
|
||||||
DECLARE_LEVEL_NAME_COLOR(level);
|
|
||||||
cur = SELF();
|
cur = SELF();
|
||||||
if (IS_OTHER(cur))
|
if (IS_OTHER(cur))
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
if (_eina_log_win32_is_console)
|
||||||
color);
|
eina_log_print_prefix_threads_color_NOfile_func_win32_console(fp,
|
||||||
fprintf(fp, "%s", name);
|
d,
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
level,
|
||||||
STD_OUTPUT_HANDLE),
|
fnc,
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
cur);
|
||||||
FOREGROUND_BLUE);
|
else
|
||||||
fprintf(fp, ":");
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
eina_log_win32_color_get(d->domain_str));
|
|
||||||
fprintf(fp, "%s[T:", d->name);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
|
||||||
FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, "[T:");
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, "%lu", (unsigned long)cur);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_INTENSITY | FOREGROUND_RED |
|
|
||||||
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, "%s()", fnc);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
|
||||||
FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, " ");
|
|
||||||
# else
|
|
||||||
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s[T:"
|
|
||||||
EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] "
|
|
||||||
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
|
||||||
color, name, eina_log_pid_get(), d->domain_str,
|
|
||||||
(unsigned long)cur, fnc);
|
|
||||||
#endif
|
#endif
|
||||||
|
eina_log_print_prefix_threads_color_NOfile_func_posix(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
fnc,
|
||||||
|
cur);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef _WIN32
|
|
||||||
eina_log_print_prefix_NOthreads_color_NOfile_func(fp,
|
eina_log_print_prefix_NOthreads_color_NOfile_func(fp,
|
||||||
d,
|
d,
|
||||||
level,
|
level,
|
||||||
file,
|
file,
|
||||||
fnc,
|
fnc,
|
||||||
line);
|
line);
|
||||||
# else
|
}
|
||||||
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s "
|
|
||||||
EINA_COLOR_HIGH "%s()" EINA_COLOR_RESET " ",
|
#ifdef _WIN32
|
||||||
color, name, eina_log_pid_get(), d->domain_str, fnc);
|
static void
|
||||||
|
eina_log_print_prefix_threads_color_file_NOfunc_win32_console(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *file,
|
||||||
|
int line,
|
||||||
|
Eina_Thread cur)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_WIN32_CONSOLE(level);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
color);
|
||||||
|
fprintf(fp, "%s", name);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
|
FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, ":");
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
eina_log_win32_color_get(d->domain_str));
|
||||||
|
fprintf(fp, "%s[T:", d->name);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
|
FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, "[T:");
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, "%lu", (unsigned long)cur);
|
||||||
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
||||||
|
FOREGROUND_RED | FOREGROUND_GREEN |
|
||||||
|
FOREGROUND_BLUE);
|
||||||
|
fprintf(fp, "] %s:%d ", file, line);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
eina_log_print_prefix_threads_color_file_NOfunc_posix(FILE *fp,
|
||||||
|
const Eina_Log_Domain *d,
|
||||||
|
Eina_Log_Level level,
|
||||||
|
const char *file,
|
||||||
|
int line,
|
||||||
|
Eina_Thread cur)
|
||||||
|
{
|
||||||
|
DECLARE_LEVEL_NAME_COLOR_POSIX(level);
|
||||||
|
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s[T:"
|
||||||
|
EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] %s:%d ",
|
||||||
|
color, name, eina_log_pid_get(), d->domain_str,
|
||||||
|
(unsigned long)cur, file, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -750,56 +940,34 @@ eina_log_print_prefix_threads_color_file_NOfunc(FILE *fp,
|
||||||
{
|
{
|
||||||
Eina_Thread cur;
|
Eina_Thread cur;
|
||||||
|
|
||||||
DECLARE_LEVEL_NAME_COLOR(level);
|
|
||||||
cur = SELF();
|
cur = SELF();
|
||||||
if (IS_OTHER(cur))
|
if (IS_OTHER(cur))
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
if (_eina_log_win32_is_console)
|
||||||
color);
|
eina_log_print_prefix_threads_color_file_NOfunc_win32_console(fp,
|
||||||
fprintf(fp, "%s", name);
|
d,
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
level,
|
||||||
STD_OUTPUT_HANDLE),
|
file,
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
line,
|
||||||
FOREGROUND_BLUE);
|
cur);
|
||||||
fprintf(fp, ":");
|
else
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
eina_log_win32_color_get(d->domain_str));
|
|
||||||
fprintf(fp, "%s[T:", d->name);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
|
||||||
FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, "[T:");
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_GREEN | FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, "%lu", (unsigned long)cur);
|
|
||||||
SetConsoleTextAttribute(GetStdHandle(
|
|
||||||
STD_OUTPUT_HANDLE),
|
|
||||||
FOREGROUND_RED | FOREGROUND_GREEN |
|
|
||||||
FOREGROUND_BLUE);
|
|
||||||
fprintf(fp, "] %s:%d ", file, line);
|
|
||||||
# else
|
|
||||||
fprintf(fp, "%s%s<%u>" EINA_COLOR_RESET ":%s[T:"
|
|
||||||
EINA_COLOR_ORANGE "%lu" EINA_COLOR_RESET "] %s:%d ",
|
|
||||||
color, name, eina_log_pid_get(), d->domain_str,
|
|
||||||
(unsigned long)cur, file, line);
|
|
||||||
#endif
|
#endif
|
||||||
|
eina_log_print_prefix_threads_color_file_NOfunc_posix(fp,
|
||||||
|
d,
|
||||||
|
level,
|
||||||
|
file,
|
||||||
|
line,
|
||||||
|
cur);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef _WIN32
|
|
||||||
eina_log_print_prefix_NOthreads_color_file_NOfunc(fp,
|
eina_log_print_prefix_NOthreads_color_file_NOfunc(fp,
|
||||||
d,
|
d,
|
||||||
level,
|
level,
|
||||||
file,
|
file,
|
||||||
fnc,
|
fnc,
|
||||||
line);
|
line);
|
||||||
# else
|
|
||||||
fprintf(fp, "%s%s" EINA_COLOR_RESET ":%s %s:%d ",
|
|
||||||
color, name, d->domain_str, file, line);
|
|
||||||
# endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void (*_eina_log_print_prefix)(FILE *fp, const Eina_Log_Domain *d,
|
static void (*_eina_log_print_prefix)(FILE *fp, const Eina_Log_Domain *d,
|
||||||
|
@ -1281,31 +1449,7 @@ eina_log_print_unlocked(int domain,
|
||||||
if (level > d->level)
|
if (level > d->level)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
{
|
|
||||||
char *wfmt;
|
|
||||||
char *tmp;
|
|
||||||
|
|
||||||
wfmt = strdup(fmt);
|
|
||||||
if (!wfmt)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "ERR: %s: can not allocate memory\n", __FUNCTION__);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = wfmt;
|
|
||||||
while (strchr(tmp, '%'))
|
|
||||||
{
|
|
||||||
tmp++;
|
|
||||||
if (*tmp == 'z')
|
|
||||||
*tmp = 'I';
|
|
||||||
}
|
|
||||||
_print_cb(d, level, file, fnc, line, wfmt, _print_cb_data, args);
|
|
||||||
free(wfmt);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
_print_cb(d, level, file, fnc, line, fmt, _print_cb_data, args);
|
_print_cb(d, level, file, fnc, line, fmt, _print_cb_data, args);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (EINA_UNLIKELY(_abort_on_critical) &&
|
if (EINA_UNLIKELY(_abort_on_critical) &&
|
||||||
EINA_UNLIKELY(level <= _abort_level_on_critical))
|
EINA_UNLIKELY(level <= _abort_level_on_critical))
|
||||||
|
@ -1344,6 +1488,9 @@ eina_log_init(void)
|
||||||
#ifdef EINA_ENABLE_LOG
|
#ifdef EINA_ENABLE_LOG
|
||||||
const char *level, *tmp;
|
const char *level, *tmp;
|
||||||
int color_disable;
|
int color_disable;
|
||||||
|
# ifdef _WIN32
|
||||||
|
DWORD mode;
|
||||||
|
# endif
|
||||||
|
|
||||||
assert((sizeof(_names) / sizeof(_names[0])) == EINA_LOG_LEVELS);
|
assert((sizeof(_names) / sizeof(_names[0])) == EINA_LOG_LEVELS);
|
||||||
|
|
||||||
|
@ -1383,6 +1530,9 @@ eina_log_init(void)
|
||||||
_disable_color = EINA_TRUE;
|
_disable_color = EINA_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &mode))
|
||||||
|
_eina_log_win32_is_console = EINA_TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_SYSTEMD
|
#ifdef HAVE_SYSTEMD
|
||||||
|
|
Loading…
Reference in New Issue