I noticed that the reverse color bug http://sourceware.org/bugzilla/show_bug.cgi?id=514 shows up again in recent cygwin1.dll updates. My previous patch is still in the source but additional code apparently has the same effect of rendering output unreadable; the effect is the following: * foreground is set bright * screen mode is set to reverse * cygwin wrongly assumes that the reverse foreground colour (which actually used to be the non-bright background color) should be set to bright, which is obviously a wrong idea and often results in a contrast that renders the output almost unreadable
The attached shell script test514 demonstrates the bug. The attached patch is an attempt to fix the bug again. Unfortunately, I could not compile it due to the following mysterious make error: make[4]: Entering directory `/usr/src/cygwin-1.5.22-patch/i686-pc-cygwin/newlib' rm -f libm.a ln libm/libm.a libm.a >/dev/null 2>/dev/null || cp libm/libm.a libm.a rm -rf libc.a libg.a tmp mkdir tmp cd tmp; \ ar x ../libm.a lib_a-s_isinf.o lib_a-sf_isinf.o lib_a-s_isnan.o lib_a-sf_isnan.o lib_a-s_isinfd.o lib_a-sf_isinff.o lib_a-s_isnand.o lib_a-sf_isnanf.o lib_a-s_nan.o lib_a-sf_nan.o lib_a-s_ldexp.o lib_a-sf_ldexp.o lib_a-s_frexp.o lib_a-sf_frexp.o lib_a-s_modf.o lib_a-sf_modf.o lib_a-s_scalbn.o lib_a-sf_scalbn.o lib_a-s_finite.o lib_a-sf_finite.o lib_a-s_copysign.o lib_a-sf_copysign.o lib_a-s_infconst.o ; \ ar x ../libc/libc.a ; \ ar rc ../libc.a *.o /bin/sh: line 3: /bin/ar: Argument list too long make[4]: *** [libc.a] Error 126 I would appreciate if someone (who can successfully compile cygwin1.dll) could check the patch, please, and the result. Thanks a lot. Thomas 2006-11-22 Thomas Wolff <[EMAIL PROTECTED]> * fhandler_console.cc (set_color): Avoid (again) inappropriate intensity interchanging that used to render reverse output unreadable when (non-reversed) text is bright. See http://sourceware.org/bugzilla/show_bug.cgi?id=514
--- cygwin-1.5.22-1/winsup/cygwin/fhandler_console.cc 2006-07-03 17:29:10.001000000 +0200 +++ cygwin-1.5.22-patch/winsup/cygwin/fhandler_console.cc 2006-11-22 17:37:15.518677900 +0100 @@ -948,6 +948,8 @@ dev_console::set_color (HANDLE h) (save_fg & FOREGROUND_BLUE ? BACKGROUND_BLUE : 0) | (save_fg & FOREGROUND_INTENSITY ? BACKGROUND_INTENSITY : 0); } + + /* apply attributes */ if (underline) win_fg = underline_color; /* emulate blink with bright background */ @@ -956,7 +958,12 @@ dev_console::set_color (HANDLE h) if (intensity == INTENSITY_INVISIBLE) win_fg = win_bg; else if (intensity == INTENSITY_BOLD) - win_fg |= FOREGROUND_INTENSITY; + /* apply foreground intensity only in non-reverse mode! */ + if (reverse) + win_bg |= BACKGROUND_INTENSITY; + else + win_fg |= FOREGROUND_INTENSITY; + current_win32_attr = win_fg | win_bg; if (h) SetConsoleTextAttribute (h, current_win32_attr);
test514
Description: Binary data