diff options
| author | 2020-05-18 00:27:13 +0200 | |
|---|---|---|
| committer | 2020-05-18 00:27:13 +0200 | |
| commit | f62d64492050556b383ec3a5db66830e78f9fd56 (patch) | |
| tree | d7b212e292a040e9e4e4d703ba7b77298d1d2471 | |
| parent | 3166d0dfa402dc775298c3a3e0b1c214e5b109b1 (diff) | |
| download | libimobiledevice-f62d64492050556b383ec3a5db66830e78f9fd56.tar.gz libimobiledevice-f62d64492050556b383ec3a5db66830e78f9fd56.tar.bz2 | |
idevicesyslog: [win32] Fix color output
| -rw-r--r-- | tools/idevicesyslog.c | 42 |
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; | |||
| 73 | static int line_buffer_size = 0; | 73 | static int line_buffer_size = 0; |
| 74 | static int lp = 0; | 74 | static int lp = 0; |
| 75 | 75 | ||
| 76 | #ifdef WIN32 | ||
| 77 | static WORD COLOR_RESET = 0; | ||
| 78 | static 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 | |||
| 98 | static 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 | ||
| 97 | static void add_filter(const char* filterstr) | 128 | static 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 | ||
| 512 | int main(int argc, char *argv[]) | 547 | int 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; |
