Ken Thomases : kernel32: Strip modifiers from the Mac locale so setlocale can parse it.
Module: wine Branch: master Commit: 59bf036c80470a55ea742ff7fcc376abc02adfb6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=59bf036c80470a55ea742ff7fc... Author: Ken Thomases <ken(a)codeweavers.com> Date: Thu Aug 7 19:00:00 2008 -0500 kernel32: Strip modifiers from the Mac locale so setlocale can parse it. The CFLocale API can produce locale identifiers with modifiers, such as "pl_PL(a)currency=EUR". However, the Mac setlocale() can't understand such locale strings. --- dlls/kernel32/locale.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index 5fdb307..0366894 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -2867,12 +2867,15 @@ void LOCALE_Init(void) CFArrayRef preferred_locales, all_locales; CFStringRef user_language_string_ref = NULL; char user_locale[50]; + char* p; CFLocaleRef user_locale_ref = CFLocaleCopyCurrent(); CFStringRef user_locale_string_ref = CFLocaleGetIdentifier( user_locale_ref ); CFStringGetCString( user_locale_string_ref, user_locale, sizeof(user_locale), kCFStringEncodingUTF8 ); CFRelease( user_locale_ref ); + /* Strip modifiers because setlocale() can't parse them. */ + if (p = strchr( user_locale, '@' )) *p = 0; if (!strchr( user_locale, '.' )) strcat( user_locale, ".UTF-8" ); unix_cp = CP_UTF8; /* default to utf-8 even if we don't get a valid locale */ setenv( "LANG", user_locale, 0 );
participants (1)
-
Alexandre Julliard