Module: wine Branch: master Commit: d90f29d817517b7c7bd6737f268598f0ccd5295a URL: http://source.winehq.org/git/wine.git/?a=commit;h=d90f29d817517b7c7bd6737f26... Author: Ken Thomases <ken(a)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(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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=d90f29d817517b7c7bd673...