ReactOS 0.4.16-dev-319-g6cf4263
locale_list.c File Reference
#include "locale_list.h"
Include dependency graph for locale_list.c:

Go to the source code of this file.

Functions

static LOCALE_LIST_NODELocaleList_Append (DWORD dwId, const WCHAR *pszName)
 
VOID LocaleList_Destroy (VOID)
 
LOCALE_LIST_NODELocaleList_Create (VOID)
 
LOCALE_LIST_NODELocaleList_GetByHkl (HKL hkl)
 
LOCALE_LIST_NODELocaleList_GetFirst (VOID)
 

Variables

static LOCALE_LIST_NODE_LocaleList = NULL
 

Function Documentation

◆ LocaleList_Append()

static LOCALE_LIST_NODE * LocaleList_Append ( DWORD  dwId,
const WCHAR pszName 
)
static

Definition at line 15 of file locale_list.c.

16{
17 LOCALE_LIST_NODE *pCurrent;
18 LOCALE_LIST_NODE *pNew;
19
20 if (pszName == NULL)
21 return NULL;
22
23 pCurrent = _LocaleList;
24
26 if (pNew == NULL)
27 return NULL;
28
29 ZeroMemory(pNew, sizeof(LOCALE_LIST_NODE));
30
31 pNew->pszName = _wcsdup(pszName);
32 if (pNew->pszName == NULL)
33 {
34 free(pNew);
35 return NULL;
36 }
37
38 pNew->dwId = dwId;
39
40 if (pCurrent == NULL)
41 {
42 _LocaleList = pNew;
43 }
44 else
45 {
46 while (pCurrent->pNext != NULL)
47 {
48 pCurrent = pCurrent->pNext;
49 }
50
51 pNew->pPrev = pCurrent;
52 pCurrent->pNext = pNew;
53 }
54
55 return pNew;
56}
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
static LOCALE_LIST_NODE * _LocaleList
Definition: locale_list.c:11
_Check_return_ _CRTIMP wchar_t *__cdecl _wcsdup(_In_z_ const wchar_t *_Str)
struct _LOCALE_LIST_NODE * pPrev
Definition: locale_list.h:11
struct _LOCALE_LIST_NODE * pNext
Definition: locale_list.h:12
#define ZeroMemory
Definition: winbase.h:1737

Referenced by LocaleList_Create().

◆ LocaleList_Create()

LOCALE_LIST_NODE * LocaleList_Create ( VOID  )

Definition at line 84 of file locale_list.c.

85{
86 WCHAR szValue[MAX_PATH];
87 DWORD dwIndex;
89 HKEY hKey;
90
92 L"SYSTEM\\CurrentControlSet\\Control\\Nls\\Language",
93 0,
96 {
97 return NULL;
98 }
99
100 dwSize = ARRAYSIZE(szValue);
101 dwIndex = 0;
102
103 while (RegEnumValueW(hKey, dwIndex, szValue, &dwSize,
105 {
107 DWORD dwId;
108
109 dwId = DWORDfromString(szValue);
110
111 if (GetLocaleInfoW(LOWORD(dwId),
114 {
116 }
117
118 dwSize = ARRAYSIZE(szValue);
119 ++dwIndex;
120 }
121
123
124 return _LocaleList;
125}
#define MAX_STR_LEN
Definition: defines.h:43
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
static DWORD DWORDfromString(const WCHAR *pszString)
Definition: input.h:80
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2830
#define MAX_PATH
Definition: compat.h:34
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
Definition: locale.c:1666
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
static LOCALE_LIST_NODE * LocaleList_Append(DWORD dwId, const WCHAR *pszName)
Definition: locale_list.c:15
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
#define KEY_ENUMERATE_SUB_KEYS
Definition: nt_native.h:1019
#define L(x)
Definition: ntvdm.h:50
#define LOWORD(l)
Definition: pedump.c:82
static const WCHAR szName[]
Definition: powrprof.c:45
#define LOCALE_SLANGUAGE
Definition: winnls.h:26
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by OnInitSettingsPage().

◆ LocaleList_Destroy()

VOID LocaleList_Destroy ( VOID  )

Definition at line 60 of file locale_list.c.

61{
62 LOCALE_LIST_NODE *pCurrent;
63
64 if (_LocaleList == NULL)
65 return;
66
67 pCurrent = _LocaleList;
68
69 while (pCurrent != NULL)
70 {
71 LOCALE_LIST_NODE *pNext = pCurrent->pNext;
72
73 free(pCurrent->pszName);
74 free(pCurrent);
75
76 pCurrent = pNext;
77 }
78
80}

Referenced by OnDestroySettingsPage().

◆ LocaleList_GetByHkl()

LOCALE_LIST_NODE * LocaleList_GetByHkl ( HKL  hkl)

Definition at line 129 of file locale_list.c.

130{
131 LOCALE_LIST_NODE *pCurrent;
132
133 for (pCurrent = _LocaleList; pCurrent != NULL; pCurrent = pCurrent->pNext)
134 {
135 if (LOWORD(pCurrent->dwId) == LOWORD(hkl))
136 {
137 return pCurrent;
138 }
139 }
140
141 return NULL;
142}
HKL hkl
Definition: msctf.idl:650

Referenced by InputList_Create().

◆ LocaleList_GetFirst()

LOCALE_LIST_NODE * LocaleList_GetFirst ( VOID  )

Definition at line 146 of file locale_list.c.

147{
148 return _LocaleList;
149}

Referenced by OnInitAddDialog().

Variable Documentation

◆ _LocaleList