summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2020-05-18 00:27:13 +0200
committerGravatar Nikias Bassen2020-05-18 00:27:13 +0200
commitf62d64492050556b383ec3a5db66830e78f9fd56 (patch)
treed7b212e292a040e9e4e4d703ba7b77298d1d2471
parent3166d0dfa402dc775298c3a3e0b1c214e5b109b1 (diff)
downloadlibimobiledevice-f62d64492050556b383ec3a5db66830e78f9fd56.tar.gz
libimobiledevice-f62d64492050556b383ec3a5db66830e78f9fd56.tar.bz2
idevicesyslog: [win32] Fix color output
-rw-r--r--tools/idevicesyslog.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/idevicesyslog.c b/tools/idevicesyslog.c
index 36cf420..8fd91c4 100644
--- a/tools/idevicesyslog.c
+++ b/tools/idevicesyslog.c
@@ -73,6 +73,36 @@ static char *line = NULL;
73static int line_buffer_size = 0; 73static int line_buffer_size = 0;
74static int lp = 0; 74static int lp = 0;
75 75
76#ifdef WIN32
77static WORD COLOR_RESET = 0;
78static HANDLE h_stdout = INVALID_HANDLE_VALUE;
79
80#define COLOR_NORMAL COLOR_RESET
81#define COLOR_DARK FOREGROUND_INTENSITY
82#define COLOR_RED FOREGROUND_RED |FOREGROUND_INTENSITY
83#define COLOR_DARK_RED FOREGROUND_RED
84#define COLOR_GREEN FOREGROUND_GREEN | FOREGROUND_INTENSITY
85#define COLOR_DARK_GREEN FOREGROUND_GREEN
86#define COLOR_YELLOW FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY
87#define COLOR_DARK_YELLOW FOREGROUND_GREEN | FOREGROUND_RED
88#define COLOR_BLUE FOREGROUND_BLUE | FOREGROUND_INTENSITY
89#define COLOR_DARK_BLUE FOREGROUND_BLUE
90#define COLOR_MAGENTA FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY
91#define COLOR_DARK_MAGENTA FOREGROUND_BLUE | FOREGROUND_RED
92#define COLOR_CYAN FOREGROUND_BLUE | FOREGROUND_GREEN
93#define COLOR_BRIGHT_CYAN FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY
94#define COLOR_DARK_CYAN FOREGROUND_BLUE | FOREGROUND_GREEN
95#define COLOR_WHITE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY
96#define COLOR_DARK_WHITE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE
97
98static void TEXT_COLOR(WORD attr)
99{
100 if (use_colors) {
101 SetConsoleTextAttribute(h_stdout, attr);
102 }
103}
104#else
105
76#define COLOR_RESET "\e[m" 106#define COLOR_RESET "\e[m"
77#define COLOR_NORMAL "\e[0m" 107#define COLOR_NORMAL "\e[0m"
78#define COLOR_DARK "\e[2m" 108#define COLOR_DARK "\e[2m"
@@ -93,6 +123,7 @@ static int lp = 0;
93#define COLOR_DARK_WHITE "\e[0;37m" 123#define COLOR_DARK_WHITE "\e[0;37m"
94 124
95#define TEXT_COLOR(x) if (use_colors) { fwrite(x, 1, sizeof(x)-1, stdout); } 125#define TEXT_COLOR(x) if (use_colors) { fwrite(x, 1, sizeof(x)-1, stdout); }
126#endif
96 127
97static void add_filter(const char* filterstr) 128static void add_filter(const char* filterstr)
98{ 129{
@@ -298,7 +329,11 @@ static void syslog_callback(char c, void *user_data)
298 /* log level */ 329 /* log level */
299 char* level_start = p; 330 char* level_start = p;
300 char* level_end = p; 331 char* level_end = p;
332#ifdef WIN32
333 WORD level_color = COLOR_NORMAL;
334#else
301 const char* level_color = NULL; 335 const char* level_color = NULL;
336#endif
302 if (!strncmp(p, "<Notice>:", 9)) { 337 if (!strncmp(p, "<Notice>:", 9)) {
303 level_end += 9; 338 level_end += 9;
304 level_color = COLOR_GREEN; 339 level_color = COLOR_GREEN;
@@ -511,6 +546,13 @@ static void print_usage(int argc, char **argv, int is_error)
511 546
512int main(int argc, char *argv[]) 547int main(int argc, char *argv[])
513{ 548{
549#ifdef WIN32
550 CONSOLE_SCREEN_BUFFER_INFO csbi;
551 h_stdout = GetStdHandle(STD_OUTPUT_HANDLE);
552 if (GetConsoleScreenBufferInfo(h_stdout, &csbi)) {
553 COLOR_RESET = csbi.wAttributes;
554 }
555#endif
514 int include_filter = 0; 556 int include_filter = 0;
515 int exclude_filter = 0; 557 int exclude_filter = 0;
516 int include_kernel = 0; 558 int include_kernel = 0;