mirror of
https://github.com/reactos/reactos.git
synced 2026-06-20 18:16:13 +08:00
[KERNEL32] Implement InvalidateNLSCache
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
|
||||
/* #define DONT_USE_REGISTRY */
|
||||
|
||||
static BOOL s_bIsGannenCached = FALSE;
|
||||
static DWORD s_JapaneseEraCount = 0;
|
||||
static JAPANESE_ERA s_JapaneseEraTable[JAPANESE_ERA_MAX]
|
||||
#ifdef DONT_USE_REGISTRY
|
||||
@@ -34,6 +35,12 @@ BOOL NLS_RegEnumValue(HANDLE hKey, UINT ulIndex,
|
||||
LPWSTR szValueName, ULONG valueNameSize,
|
||||
LPWSTR szValueData, ULONG valueDataSize);
|
||||
|
||||
void JapaneseEra_ClearCache(void)
|
||||
{
|
||||
s_bIsGannenCached = FALSE;
|
||||
s_JapaneseEraCount = 0;
|
||||
}
|
||||
|
||||
static INT JapaneseEra_Compare(const void *e1, const void *e2)
|
||||
{
|
||||
PCJAPANESE_ERA pEra1 = (PCJAPANESE_ERA)e1;
|
||||
@@ -61,9 +68,9 @@ BOOL JapaneseEra_IsFirstYearGannen(void)
|
||||
HANDLE KeyHandle;
|
||||
DWORD dwIndex;
|
||||
WCHAR szName[32], szValue[32];
|
||||
static BOOL s_bIsCached = FALSE, s_bFirstIsGannen = TRUE;
|
||||
static BOOL s_bFirstIsGannen = TRUE;
|
||||
|
||||
if (s_bIsCached)
|
||||
if (s_bIsGannenCached)
|
||||
return s_bFirstIsGannen;
|
||||
|
||||
KeyHandle = NLS_RegOpenKey(NULL, L"\\Registry\\Machine\\System\\"
|
||||
@@ -71,6 +78,7 @@ BOOL JapaneseEra_IsFirstYearGannen(void)
|
||||
if (!KeyHandle)
|
||||
return TRUE;
|
||||
|
||||
s_bFirstIsGannen = TRUE;
|
||||
for (dwIndex = 0; dwIndex < 16; ++dwIndex)
|
||||
{
|
||||
if (!NLS_RegEnumValue(KeyHandle, dwIndex, szName, sizeof(szName),
|
||||
@@ -88,7 +96,7 @@ BOOL JapaneseEra_IsFirstYearGannen(void)
|
||||
|
||||
NtClose(KeyHandle);
|
||||
|
||||
s_bIsCached = TRUE;
|
||||
s_bIsGannenCached = TRUE;
|
||||
|
||||
return s_bFirstIsGannen;
|
||||
#endif
|
||||
|
||||
@@ -20,3 +20,4 @@ typedef const JAPANESE_ERA *PCJAPANESE_ERA;
|
||||
|
||||
BOOL JapaneseEra_IsFirstYearGannen(void);
|
||||
PCJAPANESE_ERA JapaneseEra_Find(const SYSTEMTIME *pst OPTIONAL);
|
||||
void JapaneseEra_ClearCache(void);
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
DEBUG_CHANNEL(nls);
|
||||
|
||||
#include "lcformat_private.h"
|
||||
#ifdef __REACTOS__
|
||||
#include "japanese.h"
|
||||
#endif
|
||||
|
||||
#define REG_SZ 1
|
||||
extern int wine_fold_string(int flags, const WCHAR *src, int srclen, WCHAR *dst, int dstlen);
|
||||
@@ -3326,8 +3329,13 @@ BOOL WINAPI EnumSystemGeoID(GEOCLASS geoclass, GEOID parent, GEO_ENUMPROC enumpr
|
||||
*/
|
||||
BOOL WINAPI InvalidateNLSCache(void)
|
||||
{
|
||||
#ifdef __REACTOS__
|
||||
JapaneseEra_ClearCache();
|
||||
return TRUE;
|
||||
#else
|
||||
FIXME("() stub\n");
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Reference in New Issue
Block a user