From: Bruno Haible Date: Sat, 12 Dec 2009 13:46:27 +0000 (+0100) Subject: localcharset: Add comment. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bdd5d7e82925592731fd33e92f861f30711fca8a;p=pspp localcharset: Add comment. --- diff --git a/ChangeLog b/ChangeLog index 7aaf2de3b2..110f697987 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-12-12 Bruno Haible + + * lib/localcharset.c (locale_charset): Add comment about use of GetACP. + 2009-12-11 Eric Blake setenv: relax requirement in light of POSIX ruling diff --git a/lib/localcharset.c b/lib/localcharset.c index c8873b565f..b70fa215b2 100644 --- a/lib/localcharset.c +++ b/lib/localcharset.c @@ -449,7 +449,19 @@ locale_charset (void) static char buf[2 + 10 + 1]; - /* Woe32 has a function returning the locale's codepage as a number. */ + /* Woe32 has a function returning the locale's codepage as a number. + When the output goes to a console window, in Windows 95, it would have + been appropriate to use GetOEMCP() instead of GetACP(). But this has + been corrected: In Windows XP SP3, consoles accept output in the + GetACP() encoding. The GetConsoleOutputCP() function still returns + the same as GetOEMCP() (not GetACP()!), but the font handling in the + console actually uses the GetACP() encoding. If you want to "correct" + this by calling SetConsoleOutputCP(GetACP()), then for a TrueType font + it has no visible effect on the displayed glyphs, whereas when a raster + font is in use, the console performs an extra conversion from GetOEMCP() + to GetACP() encoding, thus changing the effective codepage of the + console from GetACP() to GetOEMCP()! In summary, GetConsoleOutputCP() + and SetConsoleOutputCP() are now completely broken. */ sprintf (buf, "CP%u", GetACP ()); codeset = buf;