Ken Thomases : kernel32: Overhaul the locale determination on the Mac.

Alexandre Julliard julliard at winehq.org
Thu Jun 16 10:20:56 CDT 2016


Module: wine
Branch: master
Commit: d90f29d817517b7c7bd6737f268598f0ccd5295a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d90f29d817517b7c7bd6737f268598f0ccd5295a

Author: Ken Thomases <ken at codeweavers.com>
Date:   Wed Jun 15 14:34:04 2016 -0500

kernel32: Overhaul the locale determination on the Mac.

The C library locale is inadequate for conveying the Mac user settings between
LOCALE_Init() and setup_unix_locales().  The set of locales supported by the C
library can't express the combinations allowed in user settings.

Setting LANG to a user-settings-derived locale when there's no corresponding C
library locale is actually worse than leaving it unset.  It will prevent the
C library from honoring the LC_* variables (other than LC_ALL).  That's why
Terminal.app won't set LANG in that case, it just sets LC_CTYPE=UTF-8.  This
commit makes Wine follow similar logic in not setting LANG if the C library
doesn't support the Mac user settings.

Rather, it uses a wrapper around setlocale() to query the locale.  That wrapper
returns a value representing the Mac user settings if the C library comes up
empty.  It also has logic to handle Terminal's setting LC_CTYPE=UTF-8, since
parse_locale_name() can't handle that properly.

Signed-off-by: Ken Thomases <ken at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/locale.c | 206 +++++++++++++++++++++++++++++++++++--------------
 1 file changed, 150 insertions(+), 56 deletions(-)

Diff:   http://source.winehq.org/git/wine.git/?a=commitdiff;h=d90f29d817517b7c7bd6737f268598f0ccd5295a



More information about the wine-cvs mailing list