idevicesyslog: [win32] Fix color output
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 int line_buffer_size = 0;
 static int lp = 0;
 
+#ifdef WIN32
+static WORD COLOR_RESET = 0;
+static HANDLE h_stdout = INVALID_HANDLE_VALUE;
+
+#define COLOR_NORMAL        COLOR_RESET
+#define COLOR_DARK          FOREGROUND_INTENSITY
+#define COLOR_RED           FOREGROUND_RED |FOREGROUND_INTENSITY
+#define COLOR_DARK_RED      FOREGROUND_RED
+#define COLOR_GREEN         FOREGROUND_GREEN | FOREGROUND_INTENSITY
+#define COLOR_DARK_GREEN    FOREGROUND_GREEN
+#define COLOR_YELLOW        FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY
+#define COLOR_DARK_YELLOW   FOREGROUND_GREEN | FOREGROUND_RED
+#define COLOR_BLUE          FOREGROUND_BLUE | FOREGROUND_INTENSITY
+#define COLOR_DARK_BLUE     FOREGROUND_BLUE
+#define COLOR_MAGENTA       FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY
+#define COLOR_DARK_MAGENTA  FOREGROUND_BLUE | FOREGROUND_RED
+#define COLOR_CYAN          FOREGROUND_BLUE | FOREGROUND_GREEN
+#define COLOR_BRIGHT_CYAN   FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY
+#define COLOR_DARK_CYAN     FOREGROUND_BLUE | FOREGROUND_GREEN
+#define COLOR_WHITE         FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY
+#define COLOR_DARK_WHITE    FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE
+
+static void TEXT_COLOR(WORD attr)
+{
+	if (use_colors) {
+		SetConsoleTextAttribute(h_stdout, attr);
+	}	
+}
+#else
+
 #define COLOR_RESET         "\e[m"
 #define COLOR_NORMAL        "\e[0m"
 #define COLOR_DARK          "\e[2m"
@@ -93,6 +123,7 @@
 #define COLOR_DARK_WHITE    "\e[0;37m"
 
 #define TEXT_COLOR(x) if (use_colors) { fwrite(x, 1, sizeof(x)-1, stdout); }
+#endif
 
 static void add_filter(const char* filterstr)
 {
@@ -298,7 +329,11 @@
 				/* log level */
 				char* level_start = p;
 				char* level_end = p;
+#ifdef WIN32
+				WORD level_color = COLOR_NORMAL;
+#else
 				const char* level_color = NULL;
+#endif
 				if (!strncmp(p, "<Notice>:", 9)) {
 					level_end += 9;
 					level_color = COLOR_GREEN;
@@ -511,6 +546,13 @@
 
 int main(int argc, char *argv[])
 {
+#ifdef WIN32
+	CONSOLE_SCREEN_BUFFER_INFO csbi;
+	h_stdout = GetStdHandle(STD_OUTPUT_HANDLE);
+	if (GetConsoleScreenBufferInfo(h_stdout, &csbi)) {
+		COLOR_RESET = csbi.wAttributes;
+	}
+#endif
 	int include_filter = 0;
 	int exclude_filter = 0;
 	int include_kernel = 0;