• Ken Thomases's avatar
    kernel32: Overhaul the locale determination on the Mac. · d90f29d8
    Ken Thomases authored
    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: 's avatarKen Thomases <ken@codeweavers.com>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    d90f29d8
locale.c 182 KB