Module: wine Branch: master Commit: 60c562446c0218aabcb327fb3f7aa731434634d2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=60c562446c0218aabcb327fb3f...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Oct 12 11:47:34 2007 +0200
kernel32: Get rid of the NLS_RegOpenSubKey function, its behavior is broken.
---
dlls/kernel32/locale.c | 45 +++++++++++++++++++++++---------------------- 1 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index 73ca344..6624f81 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -62,7 +62,6 @@ static const union cptable *mac_cptable; static const union cptable *unix_cptable; /* NULL if UTF8 */
static HANDLE NLS_RegOpenKey(HANDLE hRootKey, LPCWSTR szKeyName); -static HANDLE NLS_RegOpenSubKey(HANDLE hRootKey, LPCWSTR szKeyName);
static const WCHAR szNlsKeyName[] = { 'M','a','c','h','i','n','e','\','S','y','s','t','e','m','\', @@ -70,6 +69,25 @@ static const WCHAR szNlsKeyName[] = { 'C','o','n','t','r','o','l','\','N','l','s','\0' };
+static const WCHAR szLocaleKeyName[] = { + 'M','a','c','h','i','n','e','\','S','y','s','t','e','m','\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\', + 'C','o','n','t','r','o','l','\','N','l','s','\','L','o','c','a','l','e',0 +}; + +static const WCHAR szCodepageKeyName[] = { + 'M','a','c','h','i','n','e','\','S','y','s','t','e','m','\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\', + 'C','o','n','t','r','o','l','\','N','l','s','\','C','o','d','e','p','a','g','e',0 +}; + +static const WCHAR szLangGroupsKeyName[] = { + 'M','a','c','h','i','n','e','\','S','y','s','t','e','m','\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\', + 'C','o','n','t','r','o','l','\','N','l','s','\', + 'L','a','n','g','u','a','g','e',' ','G','r','o','u','p','s',0 +}; + /* Charset to codepage map, sorted by name. */ static const struct charset_entry { @@ -630,7 +648,6 @@ static BOOL locale_update_registry( HKEY hkey, const WCHAR *name, LCID lcid, */ void LOCALE_InitRegistry(void) { - static const WCHAR CodepageW[] = {'C','o','d','e','p','a','g','e',0}; static const WCHAR acpW[] = {'A','C','P',0}; static const WCHAR oemcpW[] = {'O','E','M','C','P',0}; static const WCHAR maccpW[] = {'M','A','C','C','P',0}; @@ -720,7 +737,7 @@ void LOCALE_InitRegistry(void)
if (locale_update_registry( hkey, lc_ctypeW, lcid_LC_CTYPE, NULL, 0 )) { - HKEY nls_key = NLS_RegOpenSubKey( NLS_RegOpenKey( 0, szNlsKeyName ), CodepageW ); + HKEY nls_key = NLS_RegOpenKey( 0, szCodepageKeyName );
for (i = 0; i < sizeof(update_cp_values)/sizeof(update_cp_values[0]); i++) { @@ -2928,16 +2945,6 @@ static HANDLE NLS_RegOpenKey(HANDLE hRootKey, LPCWSTR szKeyName) return hkey; }
-static HANDLE NLS_RegOpenSubKey(HANDLE hRootKey, LPCWSTR szKeyName) -{ - HANDLE hKey = NLS_RegOpenKey(hRootKey, szKeyName); - - if (hRootKey) - NtClose( hRootKey ); - - return hKey; -} - static BOOL NLS_RegEnumSubKey(HANDLE hKey, UINT ulIndex, LPWSTR szKeyName, ULONG keyNameSize) { @@ -3051,9 +3058,6 @@ static BOOL NLS_GetLanguageGroupName(LGRPID lgrpid, LPWSTR szName, ULONG nameSiz }
/* Registry keys for NLS related information */ -static const WCHAR szLangGroupsKeyName[] = { - 'L','a','n','g','u','a','g','e',' ','G','r','o','u','p','s','\0' -};
static const WCHAR szCountryListName[] = { 'M','a','c','h','i','n','e','\','S','o','f','t','w','a','r','e','\', @@ -3101,7 +3105,7 @@ static BOOL NLS_EnumSystemLanguageGroups(ENUMLANGUAGEGROUP_CALLBACKS *lpProcs) return FALSE; }
- hKey = NLS_RegOpenSubKey( NLS_RegOpenKey( 0, szNlsKeyName ), szLangGroupsKeyName ); + hKey = NLS_RegOpenKey( 0, szLangGroupsKeyName );
if (!hKey) FIXME("NLS registry key not found. Please apply the default registry file 'wine.inf'\n"); @@ -3234,7 +3238,7 @@ BOOL WINAPI IsValidLanguageGroup(LGRPID lgrpid, DWORD dwFlags) case LGRPID_INSTALLED: case LGRPID_SUPPORTED:
- hKey = NLS_RegOpenSubKey( NLS_RegOpenKey( 0, szNlsKeyName ), szLangGroupsKeyName ); + hKey = NLS_RegOpenKey( 0, szLangGroupsKeyName );
sprintfW( szValueName, szFormat, lgrpid );
@@ -3272,9 +3276,6 @@ typedef struct /* Internal implementation of EnumLanguageGrouplocalesA/W */ static BOOL NLS_EnumLanguageGroupLocales(ENUMLANGUAGEGROUPLOCALE_CALLBACKS *lpProcs) { - static const WCHAR szLocaleKeyName[] = { - 'L','o','c','a','l','e','\0' - }; static const WCHAR szAlternateSortsKeyName[] = { 'A','l','t','e','r','n','a','t','e',' ','S','o','r','t','s','\0' }; @@ -3296,7 +3297,7 @@ static BOOL NLS_EnumLanguageGroupLocales(ENUMLANGUAGEGROUPLOCALE_CALLBACKS *lpPr return FALSE; }
- hKey = NLS_RegOpenSubKey( NLS_RegOpenKey( 0, szNlsKeyName ), szLocaleKeyName ); + hKey = NLS_RegOpenKey( 0, szLocaleKeyName );
if (!hKey) WARN("NLS registry key not found. Please apply the default registry file 'wine.inf'\n");