From 8c24ef7845f70d10c0c6ca82c881b0c9ecd41b62 Mon Sep 17 00:00:00 2001 From: Shachar Shemesh Date: Fri, 16 Jul 2004 23:44:18 +0000 Subject: [PATCH] System default locale in Windows determines the ANSI encoding (LC_CTYPE on Unix). --- dlls/kernel/locale.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dlls/kernel/locale.c b/dlls/kernel/locale.c index 81b8e458a01..c225e374de4 100644 --- a/dlls/kernel/locale.c +++ b/dlls/kernel/locale.c @@ -505,13 +505,13 @@ static int charset_cmp( const void *name, const void *entry ) /*********************************************************************** * init_default_lcid */ -static LCID init_default_lcid( UINT *unix_cp ) +static LCID init_default_lcid( UINT *unix_cp, const char *env_str ) { char *buf, *lang,*country,*charset,*dialect,*next; LCID ret = 0; if ((lang = getenv( "LC_ALL" )) || - (lang = getenv( "LANGUAGE" )) || + (env_str && (lang = getenv( env_str ))) || (lang = getenv( "LANG" ))) { if (!strcmp(lang,"POSIX") || !strcmp(lang,"C")) goto done; @@ -2483,11 +2483,13 @@ void LOCALE_Init(void) const union cptable *unix_cp ); UINT ansi_cp = 1252, oem_cp = 437, mac_cp = 10000, unix_cp = ~0U; - LCID lcid = init_default_lcid( &unix_cp ); + LCID lcid = init_default_lcid( &unix_cp, NULL ); - NtSetDefaultLocale( FALSE, lcid ); NtSetDefaultLocale( TRUE, lcid ); + lcid = init_default_lcid( &unix_cp, "LC_CTYPE" ); + NtSetDefaultLocale( FALSE, lcid ); + ansi_cp = get_lcid_codepage(lcid); GetLocaleInfoW( lcid, LOCALE_IDEFAULTMACCODEPAGE | LOCALE_RETURN_NUMBER, (LPWSTR)&mac_cp, sizeof(mac_cp)/sizeof(WCHAR) ); -- 2.11.4.GIT