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@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Showing
Please
register
or
sign in
to comment