diff options
author | Christopher Faylor <me@cgf.cx> | 2012-05-17 06:18:41 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2012-05-17 06:18:41 +0400 |
commit | fe66a97ae47bfa1529fd3c2111a9351d85808894 (patch) | |
tree | 249d56621b130fe512eb6f885f8e3a45e7acb8e9 | |
parent | 53b7c465ed504059aeb570d612fd98fd8565094f (diff) |
* DevNotes: Add entry cgf-000009.
* smallprint.cc (__small_vsprintf): Always treat '%c' and '%C' as characters.
Don't decode them if they are > 127.
(__small_vswprintf): Ditto.
-rw-r--r-- | winsup/cygwin/ChangeLog | 7 | ||||
-rw-r--r-- | winsup/cygwin/DevNotes | 18 | ||||
-rw-r--r-- | winsup/cygwin/smallprint.cc | 33 |
3 files changed, 28 insertions, 30 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index f27762a39..a7fdb193f 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2012-05-16 Christopher Faylor <me.cygwin2012@cgf.cx> + + * DevNotes: Add entry cgf-000009. + * smallprint.cc (__small_vsprintf): Always treat '%c' and '%C' as + characters. Don't decode them if they are > 127. + (__small_vswprintf): Ditto. + 2012-05-15 Christopher Faylor <me.cygwin2012@cgf.cx> * DevNotes: Add entry cgf-000008. diff --git a/winsup/cygwin/DevNotes b/winsup/cygwin/DevNotes index da9cea13e..3b97e9e86 100644 --- a/winsup/cygwin/DevNotes +++ b/winsup/cygwin/DevNotes @@ -1,3 +1,21 @@ +2012-05-16 cgf-000009 + +<1.7.16> +- Fix broken console mouse handling. Reported here: + http://cygwin.com/ml/cygwin/2012-05/msg00360.html +</1.7.16> + +I did a cvs annotate on smallprint.cc and see that the code to translate +%characters > 127 to 0x notation was in the 1.1 revision. Then I +checked the smallprint.c predecessor. It was in the 1.1 version of that +program too, which means that this odd change has probably been around +since <= 2000. + +Since __small_sprintf is supposed to emulate sprintf, I got rid of the +special case handling. This may affect fhandler_socket::bind. If so, we +should work around this problem there rather than keeping this strange +hack in __small_printf. + 2012-05-14 cgf-000008 <1.7.16> diff --git a/winsup/cygwin/smallprint.cc b/winsup/cygwin/smallprint.cc index 1ca7ca817..e7a9f530f 100644 --- a/winsup/cygwin/smallprint.cc +++ b/winsup/cygwin/smallprint.cc @@ -146,17 +146,7 @@ __small_vsprintf (char *dst, const char *fmt, va_list ap) l_opt = true; continue; case 'c': - { - int c = va_arg (ap, int); - if (c > ' ' && c <= 127) - *dst++ = c; - else - { - *dst++ = '0'; - *dst++ = 'x'; - dst = __rn (dst, 16, 0, c, len, pad, LMASK); - } - } + *dst++ = (char) (va_arg (ap, int) & 0xff); break; case 'C': { @@ -164,14 +154,7 @@ __small_vsprintf (char *dst, const char *fmt, va_list ap) char buf[4], *c; sys_wcstombs (buf, 4, &wc, 1); for (c = buf; *c; ++c) - if (isprint (*c)) - *dst++ = *c; - else - { - *dst++ = '0'; - *dst++ = 'x'; - dst = __rn (dst, 16, 0, *c, len, pad, LMASK); - } + *dst++ = *c; } case 'E': strcpy (dst, "Win32 error "); @@ -445,17 +428,7 @@ __small_vswprintf (PWCHAR dst, const WCHAR *fmt, va_list ap) continue; case L'c': case L'C': - { - unsigned int c = va_arg (ap, unsigned int); - if (c > L' ' && c <= 127) - *dst++ = c; - else - { - *dst++ = L'0'; - *dst++ = L'x'; - dst = __wrn (dst, 16, 0, c, len, pad, LMASK); - } - } + *dst++ = va_arg (ap, unsigned); break; case L'E': wcscpy (dst, L"Win32 error "); |