@@ -177,7 +177,6 @@ void text_color_init (int enable_color, int redirect_output)
177
177
{
178
178
if (redirect_output != 0 ) {
179
179
g_dw_printf_dest = stderr ;
180
- enable_color = 0 ;
181
180
} else {
182
181
g_dw_printf_dest = stdout ;
183
182
}
@@ -195,7 +194,12 @@ void text_color_init (int enable_color, int redirect_output)
195
194
COORD coord ;
196
195
DWORD nwritten ;
197
196
198
- h = GetStdHandle (STD_OUTPUT_HANDLE );
197
+ if (redirect_output != 0 ) {
198
+ h = GetStdHandle (STD_ERROR_HANDLE );
199
+ } else {
200
+ h = GetStdHandle (STD_OUTPUT_HANDLE );
201
+ }
202
+
199
203
if (h != NULL && h != INVALID_HANDLE_VALUE ) {
200
204
201
205
GetConsoleScreenBufferInfo (h , & csbi );
@@ -215,17 +219,17 @@ void text_color_init (int enable_color, int redirect_output)
215
219
int t ;
216
220
for (t = 0 ; t <= MAX_T ; t ++ ) {
217
221
text_color_init (t , redirect_output );
218
- printf ( "-t %d" , t );
219
- if (t ) printf ( " [white background] " );
220
- printf ( "\n" );
221
- printf ( "%sBlack " , t_black [t ]);
222
- printf ( "%sRed " , t_red [t ]);
223
- printf ( "%sGreen " , t_green [t ]);
224
- printf ( "%sDark-Green " , t_dark_green [t ]);
225
- printf ( "%sYellow " , t_yellow [t ]);
226
- printf ( "%sBlue " , t_blue [t ]);
227
- printf ( "%sMagenta " , t_magenta [t ]);
228
- printf ( "%sCyan \n" , t_cyan [t ]);
222
+ fprintf ( g_dw_printf_dest , "-t %d" , t );
223
+ if (t ) fprintf ( g_dw_printf_dest , " [white background] " );
224
+ fprintf ( g_dw_printf_dest , "\n" );
225
+ fprintf ( g_dw_printf_dest , "%sBlack " , t_black [t ]);
226
+ fprintf ( g_dw_printf_dest , "%sRed " , t_red [t ]);
227
+ fprintf ( g_dw_printf_dest , "%sGreen " , t_green [t ]);
228
+ fprintf ( g_dw_printf_dest , "%sDark-Green " , t_dark_green [t ]);
229
+ fprintf ( g_dw_printf_dest , "%sYellow " , t_yellow [t ]);
230
+ fprintf ( g_dw_printf_dest , "%sBlue " , t_blue [t ]);
231
+ fprintf ( g_dw_printf_dest , "%sMagenta " , t_magenta [t ]);
232
+ fprintf ( g_dw_printf_dest , "%sCyan \n" , t_cyan [t ]);
229
233
}
230
234
exit (EXIT_SUCCESS );
231
235
}
@@ -238,9 +242,9 @@ void text_color_init (int enable_color, int redirect_output)
238
242
if (t < 0 ) t = 0 ;
239
243
if (t > MAX_T ) t = MAX_T ;
240
244
241
- printf ( "%s" , t_background_white [t ]);
242
- printf ( "%s" , clear_eos );
243
- printf ( "%s" , t_black [t ]);
245
+ fprintf ( g_dw_printf_dest , "%s" , t_background_white [t ]);
246
+ fprintf ( g_dw_printf_dest , "%s" , clear_eos );
247
+ fprintf ( g_dw_printf_dest , "%s" , t_black [t ]);
244
248
}
245
249
#endif
246
250
}
@@ -291,7 +295,11 @@ void text_color_set ( enum dw_color_e c )
291
295
break ;
292
296
}
293
297
294
- h = GetStdHandle (STD_OUTPUT_HANDLE );
298
+ if (dw_printf_redirected ()) {
299
+ h = GetStdHandle (STD_ERROR_HANDLE );
300
+ } else {
301
+ h = GetStdHandle (STD_OUTPUT_HANDLE );
302
+ }
295
303
296
304
if (h != NULL && h != INVALID_HANDLE_VALUE ) {
297
305
SetConsoleTextAttribute (h , attr );
@@ -316,30 +324,30 @@ void text_color_set ( enum dw_color_e c )
316
324
317
325
default :
318
326
case DW_COLOR_INFO :
319
- printf ( "%s" , t_black [t ]);
327
+ fprintf ( g_dw_printf_dest , "%s" , t_black [t ]);
320
328
break ;
321
329
322
330
case DW_COLOR_ERROR :
323
- printf ( "%s" , t_red [t ]);
331
+ fprintf ( g_dw_printf_dest , "%s" , t_red [t ]);
324
332
break ;
325
333
326
334
case DW_COLOR_REC :
327
335
// Bright green is very difficult to read against a while background.
328
336
// Let's use dark green instead. release 1.6.
329
337
//printf ("%s", t_green[t]);
330
- printf ( "%s" , t_dark_green [t ]);
338
+ fprintf ( g_dw_printf_dest , "%s" , t_dark_green [t ]);
331
339
break ;
332
340
333
341
case DW_COLOR_DECODED :
334
- printf ( "%s" , t_blue [t ]);
342
+ fprintf ( g_dw_printf_dest , "%s" , t_blue [t ]);
335
343
break ;
336
344
337
345
case DW_COLOR_XMIT :
338
- printf ( "%s" , t_magenta [t ]);
346
+ fprintf ( g_dw_printf_dest , "%s" , t_magenta [t ]);
339
347
break ;
340
348
341
349
case DW_COLOR_DEBUG :
342
- printf ( "%s" , t_dark_green [t ]);
350
+ fprintf ( g_dw_printf_dest , "%s" , t_dark_green [t ]);
343
351
break ;
344
352
}
345
353
}
0 commit comments