30#define WIN32_NO_STATUS
31#define WINNORMALIZEAPI
43#define CALINFO_MAX_YEAR 2029
93 { 37,
L"IBM EBCDIC US Canada" },
94 { 424,
L"IBM EBCDIC Hebrew" },
95 { 437,
L"OEM United States" },
96 { 500,
L"IBM EBCDIC International" },
97 { 708,
L"Arabic ASMO" },
98 { 720,
L"Arabic (Transparent ASMO)" },
99 { 737,
L"OEM Greek 437G" },
100 { 775,
L"OEM Baltic" },
101 { 850,
L"OEM Multilingual Latin 1" },
102 { 852,
L"OEM Slovak Latin 2" },
103 { 855,
L"OEM Cyrillic" },
104 { 856,
L"Hebrew PC" },
105 { 857,
L"OEM Turkish" },
106 { 860,
L"OEM Portuguese" },
107 { 861,
L"OEM Icelandic" },
108 { 862,
L"OEM Hebrew" },
109 { 863,
L"OEM Canadian French" },
110 { 864,
L"OEM Arabic" },
111 { 865,
L"OEM Nordic" },
112 { 866,
L"OEM Russian" },
113 { 869,
L"OEM Greek" },
114 { 874,
L"ANSI/OEM Thai" },
115 { 875,
L"IBM EBCDIC Greek" },
116 { 878,
L"Russian KOI8" },
117 { 932,
L"ANSI/OEM Japanese Shift-JIS" },
118 { 936,
L"ANSI/OEM Simplified Chinese GBK" },
119 { 949,
L"ANSI/OEM Korean Unified Hangul" },
120 { 950,
L"ANSI/OEM Traditional Chinese Big5" },
121 { 1006,
L"IBM Arabic" },
122 { 1026,
L"IBM EBCDIC Latin 5 Turkish" },
123 { 1250,
L"ANSI Eastern Europe" },
124 { 1251,
L"ANSI Cyrillic" },
125 { 1252,
L"ANSI Latin 1" },
126 { 1253,
L"ANSI Greek" },
127 { 1254,
L"ANSI Turkish" },
128 { 1255,
L"ANSI Hebrew" },
129 { 1256,
L"ANSI Arabic" },
130 { 1257,
L"ANSI Baltic" },
131 { 1258,
L"ANSI/OEM Viet Nam" },
132 { 1361,
L"Korean Johab" },
133 { 10000,
L"Mac Roman" },
134 { 10001,
L"Mac Japanese" },
135 { 10002,
L"Mac Traditional Chinese" },
136 { 10003,
L"Mac Korean" },
137 { 10004,
L"Mac Arabic" },
138 { 10005,
L"Mac Hebrew" },
139 { 10006,
L"Mac Greek" },
140 { 10007,
L"Mac Cyrillic" },
141 { 10008,
L"Mac Simplified Chinese" },
142 { 10010,
L"Mac Romanian" },
143 { 10017,
L"Mac Ukrainian" },
144 { 10021,
L"Mac Thai" },
145 { 10029,
L"Mac Latin 2" },
146 { 10079,
L"Mac Icelandic" },
147 { 10081,
L"Mac Turkish" },
148 { 10082,
L"Mac Croatian" },
149 { 20127,
L"US-ASCII (7bit)" },
150 { 20866,
L"Russian KOI8" },
151 { 20932,
L"EUC-JP" },
152 { 20949,
L"Korean Wansung" },
153 { 21866,
L"Ukrainian KOI8" },
154 { 28591,
L"ISO 8859-1 Latin 1" },
155 { 28592,
L"ISO 8859-2 Latin 2 (East European)" },
156 { 28593,
L"ISO 8859-3 Latin 3 (South European)" },
157 { 28594,
L"ISO 8859-4 Latin 4 (Baltic old)" },
158 { 28595,
L"ISO 8859-5 Cyrillic" },
159 { 28596,
L"ISO 8859-6 Arabic" },
160 { 28597,
L"ISO 8859-7 Greek" },
161 { 28598,
L"ISO 8859-8 Hebrew" },
162 { 28599,
L"ISO 8859-9 Latin 5 (Turkish)" },
163 { 28600,
L"ISO 8859-10 Latin 6 (Nordic)" },
164 { 28601,
L"ISO 8859-11 Latin (Thai)" },
165 { 28603,
L"ISO 8859-13 Latin 7 (Baltic)" },
166 { 28604,
L"ISO 8859-14 Latin 8 (Celtic)" },
167 { 28605,
L"ISO 8859-15 Latin 9 (Euro)" },
168 { 28606,
L"ISO 8859-16 Latin 10 (Balkan)" },
169 { 65000,
L"65000 (UTF-7)" },
170 { 65001,
L"65001 (UTF-8)" }
176 { 0x00c6,
'A',
'E',0 },
177 { 0x00de,
'T',
'H',0 },
178 { 0x00df,
's',
's',0 },
179 { 0x00e6,
'a',
'e',0 },
180 { 0x00fe,
't',
'h',0 },
181 { 0x0132,
'I',
'J',0 },
182 { 0x0133,
'i',
'j',0 },
183 { 0x0152,
'O',
'E',0 },
184 { 0x0153,
'o',
'e',0 },
185 { 0x01c4,
'D',0x017d,0 },
186 { 0x01c5,
'D',0x017e,0 },
187 { 0x01c6,
'd',0x017e,0 },
188 { 0x01c7,
'L',
'J',0 },
189 { 0x01c8,
'L',
'j',0 },
190 { 0x01c9,
'l',
'j',0 },
191 { 0x01ca,
'N',
'J',0 },
192 { 0x01cb,
'N',
'j',0 },
193 { 0x01cc,
'n',
'j',0 },
194 { 0x01e2, 0x0100,0x0112,0 },
195 { 0x01e3, 0x0101,0x0113,0 },
196 { 0x01f1,
'D',
'Z',0 },
197 { 0x01f2,
'D',
'z',0 },
198 { 0x01f3,
'd',
'z',0 },
199 { 0x01fc, 0x00c1,0x00c9,0 },
200 { 0x01fd, 0x00e1,0x00e9,0 },
201 { 0x05f0, 0x05d5,0x05d5,0 },
202 { 0x05f1, 0x05d5,0x05d9,0 },
203 { 0x05f2, 0x05d9,0x05d9,0 },
204 { 0xfb00,
'f',
'f',0 },
205 { 0xfb01,
'f',
'i',0 },
206 { 0xfb02,
'f',
'l',0 },
207 { 0xfb03,
'f',
'f',
'i',0 },
208 { 0xfb04,
'f',
'f',
'l',0 },
209 { 0xfb05, 0x017f,
't',0 },
210 { 0xfb06,
's',
't',0 },
334#define FLAG_HAS_3_BYTE_WEIGHTS 0x01
335#define FLAG_REVERSEDIACRITICS 0x10
336#define FLAG_DOUBLECOMPRESSION 0x20
337#define FLAG_INVERSECASING 0x40
370#define CASE_FULLWIDTH 0x01
371#define CASE_FULLSIZE 0x02
372#define CASE_SUBSCRIPT 0x08
373#define CASE_UPPER 0x10
374#define CASE_KATAKANA 0x20
375#define CASE_COMPR_2 0x40
376#define CASE_COMPR_4 0x80
377#define CASE_COMPR_6 0xc0
432 0, 0, { (
DWORD_PTR)(__FILE__
": locale_section") }
469 geo_header = (
struct geo_header *)((
char *)
header +
header->geoids);
470 geo_ids = (
const struct geo_id *)((
char *)geo_header + geo_header->ids_offset);
471 geo_index = (
const struct geo_index *)((
char *)geo_header + geo_header->index_offset);
518 last_compr =
sort.compressions +
sort.compr_count - 1;
520 for (
i = 0;
i < 7;
i++)
table += last_compr->
len[
i] * ((
i + 5) / 2);
570 if (ch1 >=
'a' && ch1 <=
'z') ch1 -=
'a' -
'A';
571 else if (ch1 ==
'_') ch1 =
'-';
572 if (ch2 >=
'a' && ch2 <=
'z') ch2 -=
'a' -
'A';
573 else if (ch2 ==
'_') ch2 =
'-';
574 if (!ch1 || ch1 != ch2)
return ch1 - ch2;
644 const NLS_LOCALE_LCNAME_INDEX *
entry;
664 const NLS_LOCALE_LCNAME_INDEX *
entry;
665 const NLS_LOCALE_DATA *
locale;
699 size =
sizeof(guidstr);
726 const NLS_LOCALE_LCID_INDEX *
entry;
727 const NLS_LOCALE_DATA *
locale;
754 if (
type & LOCALE_RETURN_NUMBER)
787 entry->status = CACHED;
804 switch (
entry->status)
821 entry->status = MISSING;
824 entry->status = CACHED;
848 if (!(
type & LOCALE_RETURN_NUMBER))
856 case LOCALE_IDEFAULTEBCDICCODEPAGE:
885 if (
type & LOCALE_RETURN_NUMBER)
888 if (
ret == -1)
return ret;
907 if (
type & LOCALE_RETURN_NUMBER)
952 if (
type & LOCALE_RETURN_NUMBER)
980 if (
type & CAL_RETURN_NUMBER)
1002 if (
str[0] !=
'd' ||
str[1] !=
'd' ||
str[2] !=
'd')
return str;
1004 while (
str[1] ==
'd')
str++;
1049 return L"Stroke Count";
1051 return L"Pronunciation";
1057 case 5:
return L"Surname";
1063 return L"Traditional";
1071 return L"Dictionary";
1081 return L"Maths Alphanumerics";
1094 return L"Dictionary";
1101 return L"International";
1103 return L"Traditional";
1115 static const WCHAR spermille[] = { 0x2030, 0 };
1116 static const BYTE ipossignposn[] = { 3, 3, 4, 2, 1, 1, 3, 4, 1, 3, 4, 2, 4, 3, 3, 1 };
1117 static const BYTE inegsignposn[] = { 0, 3, 4, 2, 0, 1, 3, 4, 1, 3, 4, 2, 4, 3, 0, 0 };
1118 static const BYTE inegsymprecedes[] = { 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, };
1147 case LOCALE_SLOCALIZEDCOUNTRYNAME:
1264 if (*
str ==
'M')
break;
1265 val = (*
str ==
'y' ? 2 : 1);
1275 if (*
str ==
'M')
break;
1276 val = (*
str ==
'y' ? 2 : 1);
1367 locale->sabbrevgenitivemonth :
locale->sabbrevmonthname,
1435 case LOCALE_SDURATION:
1438 case LOCALE_SKEYBOARDSTOINSTALL:
1441 case LOCALE_SSHORTESTDAYNAME1:
1442 case LOCALE_SSHORTESTDAYNAME2:
1443 case LOCALE_SSHORTESTDAYNAME3:
1444 case LOCALE_SSHORTESTDAYNAME4:
1445 case LOCALE_SSHORTESTDAYNAME5:
1446 case LOCALE_SSHORTESTDAYNAME6:
1447 case LOCALE_SSHORTESTDAYNAME7:
1451 case LOCALE_SISO639LANGNAME2:
1454 case LOCALE_SISO3166CTRYNAME2:
1460 case LOCALE_SPOSINFINITY:
1463 case LOCALE_SNEGINFINITY:
1466 case LOCALE_SSCRIPTS:
1469 case LOCALE_SPARENT:
1472 case LOCALE_SCONSOLEFALLBACKNAME:
1485 case LOCALE_SENGLISHDISPLAYNAME:
1553 case LOCALE_SYEARMONTH:
1557 case LOCALE_SENGCURRNAME:
1560 case LOCALE_SNATIVECURRNAME:
1567 case LOCALE_IPAPERSIZE:
1589 locale->sabbrevgenitivemonth :
locale->sabbrevmonthname,
1600 case LOCALE_IDEFAULTEBCDICCODEPAGE:
1603 case LOCALE_SSORTNAME:
1607 case LOCALE_IDIGITSUBSTITUTION:
1620 unsigned int i,
val = 0;
1623 if (
type & CAL_RETURN_NUMBER)
1632 for (
i = 0;
i <
ids[0];
i++)
if (
ids[1 +
i] ==
id)
break;
1705 else if ((
type & CAL_RETURN_GENITIVE_NAMES) &&
locale->sgenitivemonth)
val =
locale->sgenitivemonth;
1723 else if ((
type & CAL_RETURN_GENITIVE_NAMES) &&
locale->sabbrevgenitivemonth)
val =
locale->sabbrevgenitivemonth;
1727 case CAL_SYEARMONTH:
1731 case CAL_ITWODIGITYEARMAX:
1734 case CAL_SSHORTESTDAYNAME1:
1735 case CAL_SSHORTESTDAYNAME2:
1736 case CAL_SSHORTESTDAYNAME3:
1737 case CAL_SSHORTESTDAYNAME4:
1738 case CAL_SSHORTESTDAYNAME5:
1739 case CAL_SSHORTESTDAYNAME6:
1740 case CAL_SSHORTESTDAYNAME7:
1758 case CAL_SRELATIVELONGDATE:
1762 case CAL_SENGLISHERANAME:
1763 case CAL_SENGLISHABBREVERANAME:
1826 FIXME(
"type %u is not supported\n",
type );
1861#define UPDATE(val,entry) update_registry_value( LOCALE_NOUSEROVERRIDE | (val), (entry).subkey, (entry).value )
1914 USHORT *ansi_ptr, *oem_ptr;
1917 const WCHAR *user_locale_name;
1973 count =
sizeof(bufferW);
1976 if (!
wcscmp( bufferW, user_locale_name ))
return;
1977 TRACE(
"updating registry, locale changed %s -> %s\n",
1980 else TRACE(
"updating registry, locale changed none -> %s\n",
debugstr_w(user_locale_name) );
2000 return ch +
table[
table[
table[ch >> 8] + ((ch >> 4) & 0x0f)] + (ch & 0x0f)];
2006 unsigned int off =
table[
table[256 + (high - 0xd800)] + ((low >> 5) & 0x1f)] + 2 * (low & 0x1f);
2007 return 0x10000 + ((high - 0xd800) << 10) + (low - 0xdc00) +
MAKELONG(
table[off],
table[off+1] );
2013 return table[0] >= 0x500;
2024 dst[
pos] = 0xd800 | (ch >> 10);
2025 dst[
pos + 1] = 0xdc00 | (ch & 0x3ff);
2037 ptr =
sort.ctype_idx + ((
const WORD *)
ptr)[(ch >> 4) & 0x0f] + (ch & 0x0f);
2103 BYTE off = level1[ch / 128];
2105 if (!off || off >= 0xfb)
return rol( off, 5 );
2106 return level2[(off - 1) * 128 + ch % 128];
2139 len = pairs[
pos].dst >> 13;
2169 if (ch[0] == ch1 && ch[1] == ch2)
return ch[2];
2229 ERR(
"too many codepages\n" );
2251 int pos = (low + high) / 2;
2316 case MAP_EXPAND_LIGATURES:
2370 for (
i = 0;
i <
len;
i++)
2372 unsigned char c =
src[
i];
2373 dst[
i] = (
c < 0x20) ?
c :
c + 0xf000;
2386 static const signed char base64_decoding_table[] =
2388 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2390 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
2391 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
2392 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2393 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
2394 -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2395 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
2400 DWORD byte_pair = 0;
2411 if (pos >= dstlen) goto overflow; \
2417 while (
src < source_end)
2422 if (
src >= source_end)
break;
2433 signed char sextet = *
src;
2449 sextet = base64_decoding_table[sextet];
2459 byte_pair = (byte_pair << 6) | sextet;
2469 while (
src < source_end);
2509 return (
code >= 0xe000 &&
code <= 0xf8ff);
2515 if (
info->DBCSOffsets)
2523 if (
info->DBCSOffsets[off +
src[1]] ==
info->UniDefaultChar &&
2524 ((
src[0] << 8) |
src[1]) !=
info->TransUniDefaultChar)
break;
2529 if (
info->MultiByteTable[*
src] ==
info->UniDefaultChar && *
src !=
info->TransUniDefaultChar)
2538 if (
info->MultiByteTable[*
src] ==
info->UniDefaultChar && *
src !=
info->TransUniDefaultChar)
2554 const WCHAR *decomp;
2555 unsigned int decomp_len;
2557 if (
info->DBCSOffsets)
2563 if ((off =
info->DBCSOffsets[*
src]))
2569 ch =
info->DBCSOffsets[off + *
src];
2571 else ch =
info->UniDefaultChar;
2573 else ch =
info->MultiByteTable[*
src];
2581 if ((off =
info->DBCSOffsets[*
src]))
2587 ch =
info->DBCSOffsets[off + *
src];
2589 else ch =
info->UniDefaultChar;
2591 else ch =
info->MultiByteTable[*
src];
2595 if (
len < decomp_len)
break;
2612 ch =
info->MultiByteTable[*
src];
2615 if (
len < decomp_len)
break;
2710 if ((off =
info->DBCSOffsets[*
src]))
2718 else *
dst =
info->UniDefaultChar;
2735 const unsigned char *
str = (
const unsigned char *)
src;
2751 if (
info->DBCSOffsets)
2768 if (defchar ||
used)
2775 for (
i = 0;
i <
len;
i++)
2797 static const char directly_encodable[] =
2799 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
2800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2801 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,
2802 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
2803 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2804 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
2805 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2806 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2808#define ENCODABLE(ch) ((ch) <= 0x7a && directly_encodable[(ch)])
2810 static const char base64_encoding_table[] =
2811 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
2816 if (defchar ||
used)
2831 if (pos >= dstlen) goto overflow; \
2837 while (
src < source_end)
2852 unsigned int offset = 0, byte_pair = 0;
2857 byte_pair = (byte_pair << 16) | *
src;
2862 OUTPUT( base64_encoding_table[(byte_pair >>
offset) & 0x3f] );
2871 byte_pair <<= (6 -
offset);
2872 OUTPUT( base64_encoding_table[byte_pair & 0x3f] );
2915 const char *
table =
info->WideCharTable;
3010 const unsigned char *
table =
info->WideCharTable;
3012 if (wch >= 0x10000)
return 0;
3014 return (
info->MultiByteTable[
table[wch]] == wch);
3021 const unsigned short *
table =
info->WideCharTable;
3024 if (wch >= 0x10000)
return 0;
3028 if (ch >> 8)
return info->DBCSOffsets[
info->DBCSOffsets[ch >> 8] + (ch & 0xff)] == wch;
3029 return info->MultiByteTable[ch] == wch;
3038 const char *
table =
info->WideCharTable;
3039 const char def = defchar ? *defchar : (
char)
info->DefaultChar;
3043 unsigned int composed;
3134 WCHAR wch, defchar_value;
3135 unsigned int composed;
3140 if (!defchar[1]) defchar_value = (
unsigned char)defchar[0];
3141 else defchar_value = ((
unsigned char)defchar[0] << 8) | (
unsigned char)defchar[1];
3163 if (
res & 0xff00)
i++;
3171 if (defchar_value & 0xff00)
i++;
3188 res = defchar_value;
3191 if (
res & 0xff00)
i++;
3214 res = defchar_value;
3231 res = defchar_value;
3258 if (!defchar) defchar = (
const char *)&
info->DefaultChar;
3264 if (
info->DBCSOffsets)
3282 if (
key->len >=
key->max)
return;
3283 if (
key->len >=
key->size)
3298 for (
i = 0;
i <
key->len / 2;
i++)
3393 if (!compr_tables[0])
3395 compr_tables[0] =
sort.compr_data +
compr->offset;
3396 for (
i = 1;
i < 8;
i++)
3399 for (
i = maxlen - 2;
i >= 0;
i--)
3411 static const WCHAR zeroes[] =
3413 0x0030, 0x0660, 0x06f0, 0x0966, 0x09e6, 0x0a66, 0x0ae6, 0x0b66, 0x0be6, 0x0c66,
3414 0x0ce6, 0x0d66, 0x0e50, 0x0ed0, 0x0f20, 0x1040, 0x1090, 0x17e0, 0x1810, 0x1946,
3415 0x1bb0, 0x1c40, 0x1c50, 0xa620, 0xa8d0, 0xa900, 0xaa50, 0xff10
3422 if (zeroes[
pos] <= ch && zeroes[
pos] + 9 >= ch)
return zeroes[
pos];
3444 for (lzero = 0; lzero <
len; lzero++)
if (
values[lzero])
break;
3476 if (prev.
primary <= 1)
continue;
3478 case_weight = prev.
_case & case_mask;
3482 case_weight &= ~CASE_FULLWIDTH;
3485 extra1 = 4 +
weights->primary;
3501#define HANGUL_SBASE 0xac00
3502#define HANGUL_LCOUNT 19
3503#define HANGUL_VCOUNT 21
3504#define HANGUL_TCOUNT 28
3508 int leading_idx = 0x115f - 0x1100;
3509 int vowel_idx = 0x1160 - 0x1100;
3510 int trailing_idx = -1;
3511 BYTE leading_off, vowel_off, trailing_off;
3514 BYTE filler_mask = 0;
3519 else if (
src[
pos] >= 0xa960 &&
src[
pos] <= 0xa97c) leading_idx =
src[
pos++] - (0xa960 - 0x100);
3525 else if (
src[
pos] >= 0xd7b0 &&
src[
pos] <= 0xd7c6) vowel_idx =
src[
pos++] - (0xd7b0 - 0x11d);
3532 else if (
src[
pos] >= 0xd7cb &&
src[
pos] <= 0xd7fb) trailing_idx =
src[
pos++] - (0xd7cb - 0x134);
3535 if (!
sort.jamo[leading_idx].is_old && !
sort.jamo[vowel_idx].is_old &&
3536 (trailing_idx == -1 || !
sort.jamo[trailing_idx].is_old))
3540 vowel_idx = 0x1160 - 0x1100;
3544 leading_off =
max(
sort.jamo[leading_idx].leading,
sort.jamo[vowel_idx].leading );
3545 vowel_off =
max(
sort.jamo[leading_idx].vowel,
sort.jamo[vowel_idx].vowel );
3546 trailing_off =
max(
sort.jamo[leading_idx].trailing,
sort.jamo[vowel_idx].trailing );
3547 if (trailing_idx != -1) trailing_off =
max( trailing_off,
sort.jamo[trailing_idx].trailing );
3550 if (leading_idx == 0x115f - 0x1100 || vowel_idx == 0x1160 - 0x1100)
3577 return pos +
key->len + 1;
3593 BYTE *primary_buf,
UINT primary_size )
3596 BYTE *secondary_buf =
s->buffer;
3597 UINT secondary_size;
3601 s->key_primary.buf = primary_buf;
3602 s->key_primary.size = primary_size;
3606 secondary_size =
sizeof(
s->buffer) / 3;
3607 s->key_diacritic.buf = secondary_buf;
3608 s->key_diacritic.size = secondary_size;
3609 secondary_buf += secondary_size;
3611 else secondary_size =
sizeof(
s->buffer) / 2;
3613 s->key_case.buf = secondary_buf;
3614 s->key_case.size = secondary_size;
3615 s->key_special.buf = secondary_buf + secondary_size;
3616 s->key_special.size = secondary_size;
3618 s->key_primary.max =
srclen * 8;
3620 s->key_special.max =
srclen * 4;
3621 s->key_extra[2].max =
s->key_extra[3].max =
srclen;
3624 s->key_diacritic.max =
srclen * 3;
3625 s->key_extra[0].max =
s->key_extra[1].max =
srclen;
3636 for (
i =
s->key_diacritic.len;
i > 0;
i--)
if (
s->key_diacritic.buf[
i - 1] > 2)
break;
3637 s->key_diacritic.len =
i;
3639 for (
i =
s->key_case.len;
i > 0;
i--)
if (
s->key_case.buf[
i - 1] > 2)
break;
3640 s->key_case.len =
i;
3642 if (!
s->key_extra[2].len)
return FALSE;
3644 for (
i = 0;
i < 4;
i++)
3646 for (
j =
s->key_extra[
i].len;
j > 0;
j--)
if (
s->key_extra[
i].buf[
j - 1] != ignore[
i])
break;
3647 s->key_extra[
i].len =
j;
3731 short len = -((
s->key_primary.len +
s->primary_pos) / 2) - 1;
3780 BYTE primary_buf[256];
3783 BYTE case_mask = 0x3f;
3785 const WCHAR *compr_tables[8];
3787 compr_tables[0] =
NULL;
3831 const WCHAR *src1,
int srclen1,
const WCHAR *src2,
int srclen2 )
3837 int i,
ret,
len, pos1 = 0, pos2 = 0;
3838 BOOL have_extra1, have_extra2;
3839 BYTE case_mask = 0x3f;
3841 const WCHAR *compr_tables[8];
3843 compr_tables[0] =
NULL;
3852 while (pos1 < srclen1 || pos2 < srclen2)
3854 while (pos1 < srclen1 && !
s1.key_primary.len)
3858 while (pos2 < srclen2 && !
s2.key_primary.len)
3862 if (!(
len =
min(
s1.key_primary.len,
s2.key_primary.len )))
break;
3863 if ((
ret =
memcmp( primary1, primary2,
len )))
goto done;
3866 s1.key_primary.len -=
len;
3867 s2.key_primary.len -=
len;
3868 s1.primary_pos +=
len;
3869 s2.primary_pos +=
len;
3872 if ((
ret =
s1.key_primary.len -
s2.key_primary.len))
goto done;
3880 if (have_extra1 && have_extra2)
3882 for (
i = 0;
i < 4;
i++)
3885 else if ((
ret = have_extra1 - have_extra2))
goto done;
3903 BYTE primary_val[256];
3905 BOOL have_extra, have_extra_val;
3906 BYTE case_mask = 0x3f;
3908 const WCHAR *compr_tables[8];
3910 compr_tables[0] =
NULL;
3920 while (
pos < valuelen)
3930 while (
pos <
len &&
s.primary_pos <=
val.key_primary.len)
3932 while (
pos <
len && !
s.key_primary.len)
3936 if (
s.primary_pos +
s.key_primary.len >
val.key_primary.len ||
3937 memcmp( primary,
val.key_primary.buf +
s.primary_pos,
s.key_primary.len ))
3942 s.primary_pos +=
s.key_primary.len;
3943 s.key_primary.len = 0;
3945 if (
s.primary_pos <
val.key_primary.len)
continue;
3951 if (have_extra && have_extra_val)
3953 for (
i = 0;
i < 4;
i++)
3956 else if (have_extra || have_extra_val)
goto next;
3966 s.key_primary.len =
s.key_diacritic.len =
s.key_case.len =
s.key_special.len = 0;
3967 s.key_extra[0].len =
s.key_extra[1].len =
s.key_extra[2].len =
s.key_extra[3].len = 0;
4009 else if (
src[1] == 0xff9e)
4012 if ((*
src >= 0xff76 && *
src <= 0xff84) ||
4013 (*
src >= 0xff8a && *
src <= 0xff8e) ||
4016 else if (*
src == 0xff73)
4018 else if (*
src == 0xff9c)
4020 else if (*
src == 0x30f0)
4022 else if (*
src == 0x30f1)
4024 else if (*
src == 0xff66)
4029 else if (
src[1] == 0xff9f)
4031 if (*
src >= 0xff8a && *
src <= 0xff8e)
4066 const WCHAR *decomp;
4067 unsigned int i,
j,
len;
4093 static const BYTE katakana_map[] =
4095 0x01, 0x00, 0x01, 0x00,
4096 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
4097 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
4098 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,
4099 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4100 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02,
4101 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00,
4102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4104 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x08,
4105 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x01
4120 dst[
pos + 1] = (
k == 2) ? 0xff9f : 0xff9e;
4142 if ((
flags & LCMAP_TITLECASE) == LCMAP_TITLECASE)
4226 static const int month_lengths[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
4229 if (
tf->Month <
compare->wMonth)
return -1;
4230 if (
tf->Month >
compare->wMonth)
return 1;
4242 last = month_lengths[
tf->Month - 1] +
4243 (
tf->Month == 2 && (!(
tf->Year % 4) && (
tf->Year % 100 || !(
tf->Year % 400))));
4250 dayinsecs = ((
tf->Day * 24 +
tf->Hour) * 60 +
tf->Minute) * 60 +
tf->Second;
4251 return dayinsecs -
limit;
4258 BOOL before_standard_date, after_daylight_date;
4265 if (
info->StandardDate.wMonth == 0 ||
4266 (
info->StandardDate.wYear == 0 &&
4267 (
info->StandardDate.wDay < 1 ||
info->StandardDate.wDay > 5 ||
4268 info->DaylightDate.wDay < 1 ||
info->DaylightDate.wDay > 5)))
4282 if (
tf.Year == year)
4285 before_standard_date =
tf.Year < year;
4292 if (
tf.Year == year)
4295 after_daylight_date =
tf.Year > year;
4297 if (
info->DaylightDate.wMonth <
info->StandardDate.wMonth)
4348 type &= ~CAL_RETURN_NUMBER;
4426 case DATE_YEARMONTH:
4447 for (
i = 0;
ret &&
i < calendars[0];
i++)
4449 if (calendars[
i + 1] == 1)
continue;
4460 case DATE_YEARMONTH:
4467 calendars[
i + 1], unicode,
ex, exex,
lparam );
4496 value_len =
sizeof(
value);
4587 value_len =
sizeof(
value);
4598 char nameA[10], descrA[80];
4678 if (
flags & ~(MUI_LANGUAGE_ID | MUI_LANGUAGE_NAME))
4690 if (
flags & MUI_LANGUAGE_NAME)
4740 if (
version)
FIXME(
"unexpected version parameter\n" );
4744 if (
flags & ~supported_flags)
4758 if (len1 < 0) len1 =
lstrlenW(str1);
4759 if (len2 < 0) len2 =
lstrlenW(str2);
4772 const char *str2,
int len2 )
4775 WCHAR *buf2W = buf1W + 130;
4777 INT len1W = 0, len2W = 0,
ret;
4792 if (len1 < 0) len1 =
strlen(str1);
4793 if (len2 < 0) len2 =
strlen(str2);
4799 if (len1W) str1W = buf1W;
4821 if (len2W) str2W = buf2W;
4853 const WCHAR *str2,
int len2 )
4856 const NLS_LOCALE_LCID_INDEX *
entry;
4871 WARN(
"unknown locale %04lx\n",
lcid );
4896 if (len1 < 0) len1 =
lstrlenW( str1 );
4897 if (len2 < 0) len2 =
lstrlenW( str2 );
4999 tz.DynamicDaylightTimeDisabled =
TRUE;
5003 info->DynamicDaylightTimeDisabled =
FALSE;
5058 if (
class != GEOCLASS_ALL &&
geo_ids[
i].
class !=
class)
continue;
5158 if (wanted_flags && !(
flags & wanted_flags))
continue;
5193 const NLS_LOCALE_LCID_INDEX *
entry;
5208 WARN(
"unknown locale %04lx\n",
lcid );
5233 if (
version)
FIXME(
"unexpected version parameter\n" );
5278 src_size -= val_size;
5279 if (src_size < 0)
return -1;
5393 TRACE(
"(0x%lx,%p,%#lx,0x%lx,%p,%lu,%p)\n",
flags,
source, msgid,
langid,
buffer,
size,
args );
5419 result, 65536, &retsize );
5475 TRACE(
"(0x%lx,%p,%#lx,0x%lx,%p,%lu,%p)\n",
flags,
source, msgid,
langid,
buffer,
size,
args );
5539 return retsize /
sizeof(
WCHAR) - 1;
5614 const NLS_LOCALE_DATA *
locale;
5652 0, 0, { (
DWORD_PTR)(__FILE__
": tzname_section") }
5734#define MUI_SIGNATURE 0xfecdfecd
5774 if (
size <
sizeof(*mui) ||
5795 DWORD off, mui_size,
type = MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL;
5804 info->dwVersion != MUI_FILEINFO_VERSION)))
5811 if (!
flags)
flags = MUI_QUERY_TYPE | MUI_QUERY_CHECKSUM;
5826 if (mui->
file_type & (MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN >> 1))
5827 type = MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN;
5828 else if (mui->
file_type & (MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI >> 1))
5829 type = MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI;
5831 if (
type == MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL)
5837 *
size =
sizeof(*info);
5848 info->dwVersion = MUI_FILEINFO_VERSION;
5854 if (
flags & MUI_QUERY_LANGUAGE_NAME)
5856 off +=
type == MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN ?
5859 if (
flags & MUI_QUERY_RESOURCE_TYPES)
5861 if (
type == MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN)
5865 if (off <
sizeof(*
info)) off =
sizeof(*info);
5878 info->dwVersion = MUI_FILEINFO_VERSION;
5880 if (
flags & MUI_QUERY_CHECKSUM)
5885 if (
flags & MUI_QUERY_LANGUAGE_NAME)
5891 mui->fallback_lang_size);
5892 off += mui->fallback_lang_size;
5894 if (
type == MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI && mui->
lang_off)
5897 memcpy(
info->abBuffer, ((
BYTE *)mui) + mui->lang_off, mui->lang_size);
5898 off += mui->lang_size;
5901 if (
flags & MUI_QUERY_RESOURCE_TYPES &&
type & MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN)
5907 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->ln_type_id_off, mui->ln_type_id_size);
5908 off += mui->ln_type_id_size;
5913 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->ln_type_name_off, mui->ln_type_name_size);
5914 off += mui->ln_type_name_size;
5920 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->mui_type_id_off, mui->mui_type_id_size);
5921 off += mui->mui_type_id_size;
5926 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->mui_type_name_off, mui->mui_type_name_size);
5927 off += mui->mui_type_name_size;
5930 else if(
flags & MUI_QUERY_RESOURCE_TYPES)
5936 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->ln_type_id_off, mui->ln_type_id_size);
5937 off += mui->ln_type_id_size;
5942 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->ln_type_name_off, mui->ln_type_name_size);
5943 off += mui->ln_type_name_size;
5961 debugstr_w(language), languagelen, muipath, muipathlen, enumerator );
6012 const NLS_LOCALE_DATA *
locale;
6059 const NLS_LOCALE_DATA *
locale;
6131 if (
info->dwNLSVersionInfoSize <
sizeof(*
info) &&
6140 info->dwNLSVersion =
info->dwDefinedVersion =
sort.version;
6141 if (
info->dwNLSVersionInfoSize >=
sizeof(*
info))
6144 info->guidCustomVersion = sortid->
id;
6330 dynamic = &local_info;
6368 info->StandardBias =
data.std_bias;
6369 info->DaylightBias =
data.dlt_bias;
6370 info->StandardDate =
data.std_date;
6371 info->DaylightDate =
data.dlt_date;
6436 WARN(
"Unknown geoclass %ld\n", geoclass);
6757 if (
info->dwNLSVersionInfoSize !=
sizeof(*
info) &&
6767 for (
i = 0;
i <
len;
i++)
6798 if (
info->dwNLSVersionInfoSize <
sizeof(*
info) &&
6846 if (!once++)
FIXME(
"unsupported lparam %Ix\n",
handle );
6857 TRACE(
"(%s,0x%08lx,%s,%d,%p,%d)\n",
6860 flags &= ~LOCALE_USE_CP_ACP;
6871 if (
flags & LCMAP_HASH)
6876 if (
flags & LCMAP_SORTHANDLE)
6878 FIXME(
"LCMAP_SORTHANDLE not supported\n" );
6895 INT ret = 0, srclenW, dstlenW;
6907 if (srclenW) srcW = bufW;
6938 if (!dstlenW)
goto done;
6963 const NLS_LOCALE_LCID_INDEX *
entry;
6978 WARN(
"unknown locale %04lx\n",
lcid );
7092 static const WCHAR valid[] =
L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
7103 for (
p = tmp +
wcslen(tmp) - 1;
p >= tmp;
p--)
if (*
p ==
'-' || *
p ==
'_')
break;
7104 if (
p <= tmp)
break;
7193 while (*
str ==
'h' || *
str ==
'H') *
str++ = (*
data ==
'0' ?
'h' :
'H');
7428 TRACE(
"geo_name %p, count %d.\n", geo_name,
count );
7430 if (
count && !geo_name)
7444 if (geo && geo->
id != 39070)
7467 const struct geo_id *geo;
7482 UINT last_digit = grouping % 10;
7487 if (last_digit == 0)
7492 if (grouping % 10 == 0)
7498 *
p++ =
'0' + grouping % 10;
7506 if (last_digit != 0)
7510 if (last_digit == ~0)
7588 while (grouping[0] ==
'0' && grouping[1] ==
';')
7597 limit = *grouping -
'0';
7598 if (grouping[1] ==
';')
7607 if (grouping[0] ==
'0' && grouping[1] !=
';')
7641 else if (lzero) *(--
end) =
'0';
7649 WCHAR *
num, fmt_decimal[4], fmt_thousand[4], fmt_neg[5], grouping[24], output[256];
7650 const WCHAR *decimal_sep = fmt_decimal, *thousand_sep = fmt_thousand;
7676 decimal_sep =
format->lpDecimalSep;
7677 thousand_sep =
format->lpThousandSep;
7680 lzero =
format->LeadingZero;
7682 if (!decimal_sep || !thousand_sep)
7696 decimal_sep, thousand_sep, grouping,
digits, lzero )))
7743 WCHAR *
num, fmt_decimal[4], fmt_thousand[4], fmt_symbol[13], fmt_neg[5], grouping[20], output[256];
7744 const WCHAR *decimal_sep = fmt_decimal, *thousand_sep = fmt_thousand, *symbol = fmt_symbol;
7773 decimal_sep =
format->lpDecimalSep;
7774 thousand_sep =
format->lpThousandSep;
7775 symbol =
format->lpCurrencySymbol;
7778 lzero =
format->LeadingZero;
7779 pos_order =
format->PositiveOrder;
7780 neg_order =
format->NegativeOrder;
7781 if (!decimal_sep || !thousand_sep || !symbol)
7795 decimal_sep, thousand_sep, grouping,
digits, lzero )))
7947 case DATE_YEARMONTH:
8005 if (
format[
i] !=
'd')
continue;
8074 if (
time.wMilliseconds > 999 ||
time.wSecond > 59 ||
time.wMinute > 59 ||
time.wHour > 23)
8179 TRACE(
"(%04lx,%lx,%s,%p,%p,%d)\n",
lcid,
flags,
debugstr_w(
value),
format,
buffer,
len );
8199 TRACE(
"(%s,%lx,%s,%p,%p,%d)\n",
debugstr_w(
name),
flags,
debugstr_w(
value),
format,
buffer,
len );
8218 TRACE(
"(%04lx,%lx,%s,%p,%p,%d)\n",
lcid,
flags,
debugstr_w(
value),
format,
buffer,
len );
8238 TRACE(
"(%s,%lx,%s,%p,%p,%d)\n",
debugstr_w(
name),
flags,
debugstr_w(
value),
format,
buffer,
len );
8250 WCHAR formatW[128], output[128];
8253 TRACE(
"(0x%04lx,0x%08lx,%p,%s,%p,%d)\n",
lcid,
flags,
time,
debugstr_a(
format),
buffer,
len );
8286 TRACE(
"(%04lx,%lx,%p,%s,%p,%d)\n",
lcid,
flags, systime,
debugstr_w(
format),
buffer,
len );
8306 TRACE(
"(%s,%lx,%p,%s,%p,%d)\n",
debugstr_w(
name),
flags, systime,
debugstr_w(
format),
buffer,
len );
8318 WCHAR formatW[128], output[128];
8321 TRACE(
"(0x%04lx,0x%08lx,%p,%s,%p,%d)\n",
lcid,
flags,
time,
debugstr_a(
format),
buffer,
len );
8354 TRACE(
"(%04lx,%lx,%p,%s,%p,%d)\n",
lcid,
flags, systime,
debugstr_w(
format),
buffer,
len );
8374 TRACE(
"(%s,%lx,%p,%s,%p,%d)\n",
debugstr_w(
name),
flags, systime,
debugstr_w(
format),
buffer,
len );
BOOL WINAPI EnumSystemLocalesEx(LOCALE_ENUMPROCEX proc, DWORD flags, LPARAM lparam, LPVOID reserved)
INT WINAPI GetLocaleInfoEx(LPCWSTR locale, LCTYPE info, LPWSTR buffer, INT len)
#define CAL_SABBREVERASTRING
int WINAPI LCIDToLocaleName(_In_ LCID Locale, _Out_writes_opt_(cchName) LPWSTR lpName, _In_ int cchName, _In_ DWORD dwFlags)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR nameW[]
static BOOL expand(LPINT ac, LPTSTR **arg, LPCTSTR pattern)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define RegCloseKey(hKey)
_In_ fcb _In_ chunk _In_ uint64_t _In_ uint64_t _In_ bool _In_opt_ void _In_opt_ PIRP _In_ LIST_ENTRY _In_ uint8_t compression
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
LONG RegLoadMUIStringW(IN HKEY hKey, IN LPCWSTR pszValue OPTIONAL, OUT LPWSTR pszOutBuf, IN DWORD cbOutBuf, OUT LPDWORD pcbData OPTIONAL, IN DWORD Flags, IN LPCWSTR pszDirectory OPTIONAL)
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
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)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegSetKeyValueW(IN HKEY hKey, IN LPCWSTR lpSubKey OPTIONAL, IN LPCWSTR lpValueName OPTIONAL, IN DWORD dwType, IN LPCVOID lpData OPTIONAL, IN DWORD cbData)
static __inline BOOL set_ntstatus(NTSTATUS status)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define GetEnvironmentVariableW(x, y, z)
static __inline const char * debugstr_an(const char *s, int n)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR version[]
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
VOID WINAPI GetLocalTime(OUT LPSYSTEMTIME lpSystemTime)
LCID WINAPI LocaleNameToLCID(_In_ LPCWSTR lpName, _In_ DWORD dwFlags)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
GEOID WINAPI GetUserGeoID(GEOCLASS GeoClass)
#define LOCALE_NAME_USER_DEFAULT
LCID WINAPI GetThreadLocale(void)
BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW lpfnLocaleEnum, DWORD dwFlags)
INT WINAPI LCMapStringA(LCID lcid, DWORD flags, LPCSTR src, INT srclen, LPSTR dst, INT dstlen)
BOOL WINAPI GetFileMUIInfo(DWORD flags, PCWSTR path, FILEMUIINFO *info, DWORD *size)
INT WINAPI ResolveLocaleName(LPCWSTR name, LPWSTR localename, INT len)
BOOL WINAPI IsDBCSLeadByte(BYTE testchar)
static UINT get_lcid_codepage(LCID lcid)
BOOL WINAPI GetStringTypeA(LCID locale, DWORD type, LPCSTR src, INT count, LPWORD chartype)
BOOL WINAPI EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW pLangGrpEnumProc, DWORD dwFlags, LONG_PTR lParam)
BOOL WINAPI IsValidLanguageGroup(LGRPID lgrpid, DWORD dwFlags)
BOOL WINAPI EnumSystemCodePagesW(CODEPAGE_ENUMPROCW lpfnCodePageEnum, DWORD flags)
BOOL WINAPI GetFileMUIPath(DWORD flags, PCWSTR filepath, PWSTR language, PULONG languagelen, PWSTR muipath, PULONG muipathlen, PULONGLONG enumerator)
INT WINAPI NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, INT cwSrcLength, LPWSTR lpDstString, INT cwDstLength)
LANGID WINAPI GetSystemDefaultLangID(void)
BOOL WINAPI IsValidCodePage(UINT codepage)
INT WINAPI CompareStringA(LCID lcid, DWORD flags, LPCSTR str1, INT len1, LPCSTR str2, INT len2)
INT WINAPI IdnToUnicode(DWORD dwFlags, LPCWSTR lpASCIICharStr, INT cchASCIIChar, LPWSTR lpUnicodeCharStr, INT cchUnicodeChar)
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
BOOL WINAPI SetUserGeoID(GEOID GeoID)
LANGID WINAPI GetUserDefaultUILanguage(void)
DWORD WINAPI VerLanguageNameW(DWORD wLang, LPWSTR szLang, DWORD nSize)
BOOL WINAPI GetSystemPreferredUILanguages(DWORD flags, ULONG *count, WCHAR *buffer, ULONG *size)
BOOL WINAPI GetCPInfoExW(UINT codepage, DWORD dwFlags, LPCPINFOEXW cpinfo)
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
BOOL WINAPI GetCPInfo(UINT codepage, LPCPINFO cpinfo)
static const union cptable * get_codepage_table(unsigned int codepage)
INT WINAPI GetGeoInfoW(GEOID geoid, GEOTYPE geotype, LPWSTR data, int data_len, LANGID lang)
BOOL WINAPI IsValidLocaleName(LPCWSTR locale)
INT WINAPI IdnToAscii(DWORD dwFlags, LPCWSTR lpUnicodeCharStr, INT cchUnicodeChar, LPWSTR lpASCIICharStr, INT cchASCIIChar)
BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW pUILangEnumProc, DWORD dwFlags, LONG_PTR lParam)
BOOL WINAPI EnumSystemLocalesA(LOCALE_ENUMPROCA lpfnLocaleEnum, DWORD dwFlags)
DWORD WINAPI VerLanguageNameA(DWORD wLang, LPSTR szLang, DWORD nSize)
INT WINAPI LCMapStringEx(LPCWSTR locale, DWORD flags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen, LPNLSVERSIONINFO version, LPVOID reserved, LPARAM handle)
LANGID WINAPI GetSystemDefaultUILanguage(void)
BOOL WINAPI GetStringTypeW(DWORD type, LPCWSTR src, INT count, LPWORD chartype)
BOOL WINAPI IsValidLocale(LCID lcid, DWORD flags)
INT WINAPI GetSystemDefaultLocaleName(LPWSTR localename, INT len)
BOOL WINAPI IsDBCSLeadByteEx(UINT codepage, BYTE testchar)
INT WINAPI FoldStringW(DWORD dwFlags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen)
BOOL WINAPI GetThreadPreferredUILanguages(DWORD flags, ULONG *count, WCHAR *buf, ULONG *size)
LCID WINAPI GetUserDefaultLCID(void)
INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2, LPNLSVERSIONINFO version, LPVOID reserved, LPARAM lParam)
BOOL WINAPI EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW pLangGrpLcEnumProc, LGRPID lgrpid, DWORD dwFlags, LONG_PTR lParam)
LANGID WINAPI GetUserDefaultLangID(void)
LCID WINAPI GetSystemDefaultLCID(void)
BOOL WINAPI GetStringTypeExW(LCID locale, DWORD type, LPCWSTR src, INT count, LPWORD chartype)
BOOL WINAPI IsNormalizedString(NORM_FORM NormForm, LPCWSTR lpString, INT cwLength)
INT WINAPI LCMapStringW(LCID lcid, DWORD flags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen)
BOOL WINAPI SetThreadPreferredUILanguages(DWORD flags, PCZZWSTR buffer, PULONG count)
BOOL WINAPI EnumSystemGeoID(GEOCLASS geoclass, GEOID parent, GEO_ENUMPROC enumproc)
UINT WINAPI GetOEMCP(void)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
LCID WINAPI ConvertDefaultLocale(LCID lcid)
BOOL WINAPI SetLocaleInfoW(LCID lcid, LCTYPE lctype, LPCWSTR data)
INT WINAPI IdnToNameprepUnicode(DWORD dwFlags, LPCWSTR lpUnicodeCharStr, INT cchUnicodeChar, LPWSTR lpNameprepCharStr, INT cchNameprepChar)
INT WINAPI GetUserDefaultLocaleName(LPWSTR localename, int buffersize)
BOOL WINAPI DECLSPEC_HOTPATCH EnumDateFormatsExEx(DATEFMT_ENUMPROCEXEX proc, const WCHAR *locale, DWORD flags, LPARAM lparam)
static int mbstowcs_codepage(const CPTABLEINFO *info, DWORD flags, const char *src, int srclen, WCHAR *dst, int dstlen)
static struct registry_entry entry_idigits
static const NLS_LOCALE_DATA * get_locale_data(UINT idx)
static BOOL remove_unneeded_weights(const struct sortguid *sortid, struct sortkey_state *s)
BOOL WINAPI DECLSPEC_HOTPATCH IsNLSDefinedString(NLS_FUNCTION func, DWORD flags, NLSVERSIONINFO *info, const WCHAR *str, int len)
static int mbstowcs_decompose(const CPTABLEINFO *info, const unsigned char *src, int srclen, WCHAR *dst, int dstlen)
static int get_compression_weights(UINT compression, const WCHAR *compr_tables[8], const WCHAR *src, int srclen, union char_weights *weights)
static int wcstombs_sbcs(const CPTABLEINFO *info, const WCHAR *src, unsigned int srclen, char *dst, unsigned int dstlen)
static int compare_locale_names(const WCHAR *n1, const WCHAR *n2)
static int put_utf16(WCHAR *dst, int pos, int dstlen, unsigned int ch)
static void load_locale_nls(void)
static int locale_return_data(const WCHAR *data, int datalen, LCTYPE type, WCHAR *buffer, int len)
@ SCRIPT_EASTASIA_SPECIAL
static HMODULE kernelbase_handle
INT WINAPI SetCalendarInfoW(LCID lcid, CALID calendar, CALTYPE type, const WCHAR *data)
static void reverse_sortkey(struct sortkey *key)
static struct registry_entry entry_inegcurr
static struct registry_entry entry_smonthousandsep
BOOL WINAPI DECLSPEC_HOTPATCH EnumCalendarInfoExW(CALINFO_ENUMPROCEXW proc, LCID lcid, CALID id, CALTYPE type)
static int check_invalid_chars(const CPTABLEINFO *info, const unsigned char *src, int srclen)
static int get_geo_info(const struct geo_id *geo, enum SYSGEOTYPE type, WCHAR *buffer, int len, LANGID lang)
static int wcstombs_cpsymbol(DWORD flags, const WCHAR *src, int srclen, char *dst, int dstlen, const char *defchar, BOOL *used)
static struct registry_entry entry_imeasure
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumSystemLanguageGroups(LANGUAGEGROUP_ENUMPROCW proc, DWORD flags, LONG_PTR param, BOOL unicode)
static int mbstowcs_sbcs(const CPTABLEINFO *info, const unsigned char *src, int srclen, WCHAR *dst, int dstlen)
static const struct sortguid ** locale_sorts
static int get_pattern_len(const WCHAR *pattern, const WCHAR *accept)
static struct registry_entry entry_inegnumber
static int mbstowcs_utf8(DWORD flags, const char *src, int srclen, WCHAR *dst, int dstlen)
static const NLS_LOCALE_LCNAME_INDEX * lcnames_index
static int get_locale_info(const NLS_LOCALE_DATA *locale, LCID lcid, LCTYPE type, WCHAR *buffer, int len)
static struct registry_entry entry_scurrency
static int append_extra_kana_weights(struct sortkey keys[4], const WCHAR *src, int pos, UINT except, BYTE case_mask, union char_weights *weights)
int WINAPI GetNumberFormatW(LCID lcid, DWORD flags, const WCHAR *value, const NUMBERFMTW *format, WCHAR *buffer, int len)
BOOL WINAPI DECLSPEC_HOTPATCH EnumDateFormatsExW(DATEFMT_ENUMPROCEXW proc, LCID lcid, DWORD flags)
static struct registry_entry entry_sgrouping
static int wcstombs_codepage(const CPTABLEINFO *info, DWORD flags, const WCHAR *src, int srclen, char *dst, int dstlen, const char *defchar, BOOL *used)
INT WINAPI DECLSPEC_HOTPATCH GetGeoInfoEx(WCHAR *location, GEOTYPE type, WCHAR *data, int data_count)
DWORD WINAPI DECLSPEC_HOTPATCH FormatMessageA(DWORD flags, const void *source, DWORD msgid, DWORD langid, char *buffer, DWORD size, va_list *args)
BOOL WINAPI DECLSPEC_HOTPATCH SetProcessPreferredUILanguages(DWORD flags, PCZZWSTR buffer, ULONG *count)
BOOL WINAPI DECLSPEC_HOTPATCH EnumDateFormatsW(DATEFMT_ENUMPROCW proc, LCID lcid, DWORD flags)
static const struct geo_id * geo_ids
static BYTE get_char_props(const struct norm_table *info, unsigned int ch)
BOOL WINAPI DECLSPEC_HOTPATCH GetTimeZoneInformationForYear(USHORT year, DYNAMIC_TIME_ZONE_INFORMATION *dynamic, TIME_ZONE_INFORMATION *info)
#define UPDATE(val, entry)
static int mbstowcs_dbcs(const CPTABLEINFO *info, const unsigned char *src, int srclen, WCHAR *dst, int dstlen)
static void append_normal_weights(const struct sortguid *sortid, struct sortkey *key_primary, struct sortkey *key_diacritic, struct sortkey *key_case, union char_weights weights, DWORD flags)
static const NLS_LOCALE_LCID_INDEX * find_lcid_entry(LCID lcid)
static int find_substring(const struct sortguid *sortid, DWORD flags, const WCHAR *src, int srclen, const WCHAR *value, int valuelen, int *reslen)
static BOOL validate_mui_resource(struct mui_resource *mui, DWORD size)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharPunctW(WCHAR wc)
static int map_to_fullwidth(const USHORT *table, const WCHAR *src, int srclen, WCHAR *dst, int dstlen)
static struct registry_entry entry_sshortdate
int WINAPI GetTimeFormatW(LCID lcid, DWORD flags, const SYSTEMTIME *systime, const WCHAR *format, WCHAR *buffer, int len)
static struct registry_entry entry_icurrdigits
int WINAPI GetNumberFormatEx(const WCHAR *name, DWORD flags, const WCHAR *value, const NUMBERFMTW *format, WCHAR *buffer, int len)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharSpaceW(WCHAR wc)
int WINAPI GetDateFormatEx(const WCHAR *name, DWORD flags, const SYSTEMTIME *systime, const WCHAR *format, WCHAR *buffer, int len, const WCHAR *calendar)
static void update_registry_value(UINT type, const WCHAR *subkey, const WCHAR *value)
static BOOL set_registry_entry(struct registry_entry *entry, const WCHAR *data)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharAlphaW(WCHAR wc)
static BOOL call_enum_date_func(DATEFMT_ENUMPROCW proc, const NLS_LOCALE_DATA *locale, DWORD flags, DWORD str, WCHAR *buffer, CALID id, BOOL unicode, BOOL ex, BOOL exex, LPARAM lparam)
DWORD WINAPI DECLSPEC_HOTPATCH GetTimeZoneInformation(TIME_ZONE_INFORMATION *info)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharDigitW(WCHAR wc)
INT WINAPI GetUserDefaultGeoName(LPWSTR geo_name, int count)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharLowerA(CHAR c)
static CPTABLEINFO ansi_cpinfo
static struct registry_entry entry_icountry
static struct registry_entry entry_smondecimalsep
static int append_weights(const struct sortguid *sortid, DWORD flags, const WCHAR *src, int srclen, int pos, BYTE case_mask, UINT except, const WCHAR *compr_tables[8], struct sortkey_state *s, BOOL is_compare)
static void grouping_to_string(UINT grouping, WCHAR *buffer)
static int compare_tzdate(const TIME_FIELDS *tf, const SYSTEMTIME *compare)
static struct registry_entry entry_smongrouping
static const UINT * find_compression(const WCHAR *src, const WCHAR *table, int count, int len)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharXDigitW(WCHAR wc)
static int wcstombs_sbcs_slow(const CPTABLEINFO *info, DWORD flags, const WCHAR *src, unsigned int srclen, char *dst, unsigned int dstlen, const char *defchar, BOOL *used)
static const WCHAR ligatures[][5]
static int append_digit_weights(struct sortkey *key, const WCHAR *src, UINT srclen)
static int cal_return_number(UINT val, CALTYPE type, WCHAR *buffer, int len, DWORD *value)
static int map_remove_ignored(DWORD flags, const WCHAR *src, int srclen, WCHAR *dst, int dstlen)
static CRITICAL_SECTION_DEBUG critsect_debug
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumCalendarInfo(CALINFO_ENUMPROCW proc, const NLS_LOCALE_DATA *locale, CALID id, CALTYPE type, BOOL unicode, BOOL ex, BOOL exex, LPARAM lparam)
INT WINAPI DECLSPEC_HOTPATCH FindStringOrdinal(DWORD flag, const WCHAR *src, INT src_size, const WCHAR *val, INT val_size, BOOL ignore_case)
int WINAPI GetCurrencyFormatEx(const WCHAR *name, DWORD flags, const WCHAR *value, const CURRENCYFMTW *format, WCHAR *buffer, int len)
static int locale_return_grouping(DWORD pos, LCTYPE type, WCHAR *buffer, int len)
static const WCHAR world_subkey[]
static int get_calendar_info(const NLS_LOCALE_DATA *locale, CALID id, CALTYPE type, WCHAR *buffer, int len, DWORD *value)
static struct registry_entry entry_sdecimal
static int is_valid_dbcs_mapping(const CPTABLEINFO *info, DWORD flags, unsigned int wch)
BOOL WINAPI DECLSPEC_HOTPATCH GetNLSVersion(NLS_FUNCTION func, LCID lcid, NLSVERSIONINFO *info)
DWORD WINAPI DECLSPEC_HOTPATCH GetDynamicTimeZoneInformation(DYNAMIC_TIME_ZONE_INFORMATION *info)
static int map_to_halfwidth(const USHORT *table, const WCHAR *src, int srclen, WCHAR *dst, int dstlen)
static WCHAR compose_chars(WCHAR ch1, WCHAR ch2)
static NTSTATUS expand_ligatures(const WCHAR *src, int srclen, WCHAR *dst, int *dstlen)
static void load_sortdefault_nls(void)
static const struct sortguid * get_language_sort(const WCHAR *name)
static int wcstombs_dbcs(const CPTABLEINFO *info, const WCHAR *src, unsigned int srclen, char *dst, unsigned int dstlen)
static int compare_sortkeys(const struct sortkey *key1, const struct sortkey *key2, BOOL shorter_wins)
static struct registry_entry entry_slist
static int compare_string(const struct sortguid *sortid, DWORD flags, const WCHAR *src1, int srclen1, const WCHAR *src2, int srclen2)
const NLS_LOCALE_DATA *WINAPI NlsValidateLocale(LCID *lcid, ULONG flags)
static const NLS_LOCALE_DATA * get_locale_by_name(const WCHAR *name, LCID *lcid)
static const NLS_LOCALE_LCNAME_INDEX * find_lcname_entry(const WCHAR *name)
static struct registry_entry entry_spositivesign
BOOL WINAPI DECLSPEC_HOTPATCH IsCharAlphaNumericW(WCHAR wc)
static int wcstombs_utf7(DWORD flags, const WCHAR *src, int srclen, char *dst, int dstlen, const char *defchar, BOOL *used)
static WCHAR * prepend_str(WCHAR *end, const WCHAR *str)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharSpaceA(CHAR c)
static struct registry_entry entry_snativedigits
static const struct sortguid * current_locale_sort
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumDateFormats(DATEFMT_ENUMPROCW proc, const NLS_LOCALE_DATA *locale, DWORD flags, BOOL unicode, BOOL ex, BOOL exex, LPARAM lparam)
static void append_nonspace_weights(struct sortkey *key, union char_weights weights, DWORD flags)
static const WCHAR * get_decomposition(WCHAR ch, unsigned int *ret_len)
static NTSTATUS fold_string(DWORD flags, const WCHAR *src, int srclen, WCHAR *dst, int *dstlen)
static CRITICAL_SECTION_DEBUG tzname_section_debug
const struct jamo_sort * jamo
static struct @514 cached_tzname
static unsigned int casemap_high(const USHORT *table, WCHAR high, WCHAR low)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharAlphaNumericA(CHAR c)
static const struct calendar * get_calendar_data(const NLS_LOCALE_DATA *locale, UINT id)
const struct sortguid * guids
BOOL WINAPI DECLSPEC_HOTPATCH GetNLSVersionEx(NLS_FUNCTION func, const WCHAR *locale, NLSVERSIONINFOEX *info)
static struct registry_entry entry_s2359
BOOL WINAPI DECLSPEC_HOTPATCH EnumCalendarInfoExEx(CALINFO_ENUMPROCEXEX proc, LPCWSTR locale, CALID id, LPCWSTR reserved, CALTYPE type, LPARAM lparam)
static struct registry_entry entry_sthousand
static const struct @512 codepage_names[]
BOOL WINAPI DECLSPEC_HOTPATCH EnumCalendarInfoW(CALINFO_ENUMPROCW proc, LCID lcid, CALID id, CALTYPE type)
static struct registry_entry entry_ifirstdayofweek
static int locale_return_number(UINT val, LCTYPE type, WCHAR *buffer, int len)
static BOOL table_has_high_planes(const USHORT *table)
#define FLAG_HAS_3_BYTE_WEIGHTS
static CRITICAL_SECTION tzname_section
static unsigned int geo_ids_count
static DWORD get_timezone_id(const TIME_ZONE_INFORMATION *info, LARGE_INTEGER time, BOOL is_local)
static int locale_return_reg_number(struct registry_entry *entry, LCTYPE type, WCHAR *buffer, int len)
static int mbstowcs_cpsymbol(DWORD flags, const char *src, int srclen, WCHAR *dst, int dstlen)
static int get_currency_format(const NLS_LOCALE_DATA *locale, DWORD flags, const WCHAR *value, const CURRENCYFMTW *format, WCHAR *buffer, int len)
void init_locale(HMODULE module)
static int is_valid_sbcs_mapping(const CPTABLEINFO *info, DWORD flags, unsigned int wch)
#define FLAG_REVERSEDIACRITICS
static void append_sortkey(struct sortkey *key, BYTE val)
int WINAPI GetTimeFormatEx(const WCHAR *name, DWORD flags, const SYSTEMTIME *systime, const WCHAR *format, WCHAR *buffer, int len)
const struct sort_expansion * expansions
static NTSTATUS fold_digits(const WCHAR *src, int srclen, WCHAR *dst, int *dstlen)
static const WCHAR * get_ligature(WCHAR wc)
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumSystemCodePages(CODEPAGE_ENUMPROCW proc, DWORD flags, BOOL unicode)
static int mbstowcs_utf7(DWORD flags, const char *src, int srclen, WCHAR *dst, int dstlen)
static unsigned int nb_codepages
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumTimeFormats(TIMEFMT_ENUMPROCW proc, const NLS_LOCALE_DATA *locale, DWORD flags, BOOL unicode, BOOL ex, LPARAM lparam)
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumUILanguages(UILANGUAGE_ENUMPROCW proc, DWORD flags, LONG_PTR param, BOOL unicode)
static struct registry_entry entry_idigitsubstitution
static struct registry_entry entry_slongdate
static WCHAR * format_number(WCHAR *end, const WCHAR *value, const WCHAR *decimal_sep, const WCHAR *thousand_sep, const WCHAR *grouping, UINT digits, BOOL lzero)
static void free_sortkey_state(struct sortkey_state *s)
static const struct sortguid * find_sortguid(const GUID *guid)
static struct registry_entry entry_icurrency
DWORD WINAPI DECLSPEC_HOTPATCH GetDynamicTimeZoneInformationEffectiveYears(const DYNAMIC_TIME_ZONE_INFORMATION *info, DWORD *first, DWORD *last)
BOOL WINAPI DECLSPEC_HOTPATCH SystemTimeToTzSpecificLocalTime(const TIME_ZONE_INFORMATION *info, const SYSTEMTIME *system, SYSTEMTIME *local)
static CPTABLEINFO codepages[128]
static int get_sortkey(const struct sortguid *sortid, DWORD flags, const WCHAR *src, int srclen, BYTE *dst, int dstlen)
INT WINAPI DECLSPEC_HOTPATCH GetCalendarInfoW(LCID lcid, CALID calendar, CALTYPE type, WCHAR *buffer, INT len, DWORD *value)
static struct registry_entry entry_icalendartype
static int get_number_format(const NLS_LOCALE_DATA *locale, DWORD flags, const WCHAR *value, const NUMBERFMTW *format, WCHAR *buffer, int len)
static void map_byterev(const WCHAR *src, int len, WCHAR *dst)
DWORD WINAPI DECLSPEC_HOTPATCH FormatMessageW(DWORD flags, const void *source, DWORD msgid, DWORD langid, WCHAR *buffer, DWORD size, va_list *args)
static int compression_size(int len)
BOOL WINAPI DECLSPEC_HOTPATCH EnumTimeFormatsEx(TIMEFMT_ENUMPROCEX proc, const WCHAR *locale, DWORD flags, LPARAM lparam)
static struct registry_entry entry_sintlsymbol
static WCHAR * locale_replace_separator(WCHAR *buffer, const WCHAR *sep)
static CRITICAL_SECTION locale_section
static int wcstombs_dbcs_slow(const CPTABLEINFO *info, DWORD flags, const WCHAR *src, unsigned int srclen, char *dst, unsigned int dstlen, const char *defchar, BOOL *used)
static const NLS_LOCALE_HEADER * locale_table
static int locale_return_string(DWORD pos, LCTYPE type, WCHAR *buffer, int len)
static struct registry_entry entry_ipapersize
static int locale_return_strarray_concat(DWORD pos, LCTYPE type, WCHAR *buffer, int len)
static int lcmap_string(const struct sortguid *sortid, DWORD flags, const WCHAR *src, int srclen, WCHAR *dst, int dstlen)
static WCHAR get_digit_zero_char(WCHAR ch)
static struct registry_entry entry_ilzero
BOOL WINAPI DECLSPEC_HOTPATCH IsCharUpperW(WCHAR wc)
static const struct geo_id * find_geo_name_entry(const WCHAR *name)
const struct sort_compression * compressions
static int get_time_format(const NLS_LOCALE_DATA *locale, DWORD flags, const SYSTEMTIME *systime, const WCHAR *format, WCHAR *buffer, int len)
static const WCHAR * locale_strings
BOOL WINAPI DECLSPEC_HOTPATCH IsCharLowerW(WCHAR wc)
static struct registry_entry entry_syearmonth
BOOL WINAPI DECLSPEC_HOTPATCH IsCharUpperA(CHAR c)
BOOL WINAPI SetUserGeoName(PWSTR geo_name)
static void update_locale_registry(void)
static const struct geo_id * find_geo_id_entry(GEOID id)
static const NLS_LOCALE_DATA * system_locale
static struct registry_entry entry_snegativesign
int WINAPI GetCurrencyFormatW(LCID lcid, DWORD flags, const WCHAR *value, const CURRENCYFMTW *format, WCHAR *buffer, int len)
static void append_expansion_weights(const struct sortguid *sortid, struct sortkey *key_primary, struct sortkey *key_diacritic, struct sortkey *key_case, union char_weights weights, DWORD flags, BOOL is_compare)
static struct registry_entry entry_sshorttime
INT WINAPI DECLSPEC_HOTPATCH CompareStringOrdinal(const WCHAR *str1, INT len1, const WCHAR *str2, INT len2, BOOL ignore_case)
INT WINAPI DECLSPEC_HOTPATCH GetCalendarInfoEx(const WCHAR *name, CALID calendar, const WCHAR *reserved, CALTYPE type, WCHAR *buffer, INT len, DWORD *value)
static WORD get_char_type(DWORD type, WCHAR ch)
static CPTABLEINFO oem_cpinfo
INT WINAPI DECLSPEC_HOTPATCH FindNLSStringEx(const WCHAR *locale, DWORD flags, const WCHAR *src, int srclen, const WCHAR *value, int valuelen, int *found, NLSVERSIONINFO *version, void *reserved, LPARAM handle)
static int put_sortkey(BYTE *dst, int dstlen, int pos, const struct sortkey *key, BYTE terminator)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharCntrlW(WCHAR wc)
static const WCHAR * get_message(DWORD flags, const void *src, UINT id, UINT lang, BOOL ansi, WCHAR **buffer)
static struct registry_entry entry_ifirstweekofyear
static int nonspace_ignored(WCHAR ch)
BOOL WINAPI DECLSPEC_HOTPATCH SetTimeZoneInformation(const TIME_ZONE_INFORMATION *info)
static struct registry_entry entry_stimeformat
int WINAPI GetDateFormatW(LCID lcid, DWORD flags, const SYSTEMTIME *systime, const WCHAR *format, WCHAR *buffer, int len)
int WINAPI GetDateFormatA(LCID lcid, DWORD flags, const SYSTEMTIME *time, const char *format, char *buffer, int len)
static int locale_return_strarray(DWORD pos, WORD idx, LCTYPE type, WCHAR *buffer, int len)
static struct norm_table * norm_info
static WCHAR * find_format(WCHAR *str, const WCHAR *accept)
static int wcstombs_utf8(DWORD flags, const WCHAR *src, int srclen, char *dst, int dstlen, const char *defchar, BOOL *used)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharAlphaA(CHAR c)
BOOL WINAPI DECLSPEC_HOTPATCH TzSpecificLocalTimeToSystemTime(const TIME_ZONE_INFORMATION *info, const SYSTEMTIME *local, SYSTEMTIME *system)
INT WINAPI DECLSPEC_HOTPATCH FindNLSString(LCID lcid, DWORD flags, const WCHAR *src, int srclen, const WCHAR *value, int valuelen, int *found)
static unsigned int geo_index_count
DWORD WINAPI DECLSPEC_HOTPATCH IsValidNLSVersion(NLS_FUNCTION func, const WCHAR *locale, NLSVERSIONINFOEX *info)
static int is_private_use_area_char(WCHAR code)
static union char_weights get_char_weights(WCHAR c, UINT except)
BOOL WINAPI DECLSPEC_HOTPATCH IsCharBlankW(WCHAR wc)
static const WCHAR * get_locale_sortname(LCID lcid)
int WINAPI GetTimeFormatA(LCID lcid, DWORD flags, const SYSTEMTIME *time, const char *format, char *buffer, int len)
static void init_sortkey_state(struct sortkey_state *s, DWORD flags, UINT srclen, BYTE *primary_buf, UINT primary_size)
static int get_date_format(const NLS_LOCALE_DATA *locale, DWORD flags, const SYSTEMTIME *systime, const WCHAR *format, WCHAR *buffer, int len)
static struct registry_entry entry_s1159
static UINT get_locale_codepage(const NLS_LOCALE_DATA *locale, ULONG flags)
BOOL WINAPI DECLSPEC_HOTPATCH GetProcessPreferredUILanguages(DWORD flags, ULONG *count, WCHAR *buffer, ULONG *size)
DWORD WINAPI DECLSPEC_HOTPATCH EnumDynamicTimeZoneInformation(DWORD index, DYNAMIC_TIME_ZONE_INFORMATION *info)
BOOL WINAPI DECLSPEC_HOTPATCH EnumTimeFormatsW(TIMEFMT_ENUMPROCW proc, LCID lcid, DWORD flags)
static int append_hangul_weights(struct sortkey *key, const WCHAR *src, int srclen, UINT except)
static const NLS_LOCALE_LCID_INDEX * lcids_index
static int locale_return_reg_string(struct registry_entry *entry, LCTYPE type, WCHAR *buffer, int len)
static int casemap_string(const USHORT *table, const WCHAR *src, int srclen, WCHAR *dst, int dstlen)
static const NLS_LOCALE_DATA * user_locale
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumLanguageGroupLocales(LANGGROUPLOCALE_ENUMPROCW proc, LGRPID id, DWORD flags, LONG_PTR param, BOOL unicode)
INT WINAPI DECLSPEC_HOTPATCH LoadStringW(HINSTANCE instance, UINT resource_id, LPWSTR buffer, INT buflen)
BOOLEAN RtlTimeToTimeFields(IN PLARGE_INTEGER Time, IN PTIME_FIELDS TimeFields)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei width
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLenum GLenum GLvoid * values
GLuint64EXT GLuint GLuint GLenum GLenum GLuint GLuint GLenum GLuint GLuint key1
GLuint GLdouble GLdouble GLint GLint order
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
#define WC_COMPOSITECHECK
#define WC_ERR_INVALID_CHARS
#define MB_ERR_INVALID_CHARS
#define WC_NO_BEST_FIT_CHARS
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
NTSYSAPI NTSTATUS WINAPI RtlGetLocaleFileMappingAddress(void **, LCID *, LARGE_INTEGER *)
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION *)
NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPWSTR, UCHAR, BOOLEAN, BOOLEAN, BOOLEAN, __ms_va_list *, LPWSTR, ULONG)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG, ULONG, void *, void **, SIZE_T *)
int const JOCTET unsigned int datalen
static const int digits[]
BOOL WINAPI GetUserPreferredUILanguages(DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer)
NTSTATUS NTAPI RtlUnicodeToUTF8N(CHAR *utf8_dest, ULONG utf8_bytes_max, ULONG *utf8_bytes_written, const WCHAR *uni_src, ULONG uni_bytes)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
#define sprintf(buf, format,...)
static PEXPLICIT_ACCESSW *static HMODULE hmod
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
static DWORD LPDWORD LPCSTR DWORD srclen
static DWORD LPDWORD reslen
static const WCHAR invalid[]
NTSYSAPI NTSTATUS NTAPI RtlSetTimeZoneInformation(_In_ PRTL_TIME_ZONE_INFORMATION TimeZoneInformation)
_Must_inspect_result_ NTSYSAPI LONG NTAPI RtlCompareUnicodeStrings(_In_reads_(String1Length) PCWCH String1, _In_ SIZE_T String1Length, _In_reads_(String2Length) PCWCH String2, _In_ SIZE_T String2Length, _In_ BOOLEAN CaseInSensitive)
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlQueryTimeZoneInformation(_Out_ PRTL_TIME_ZONE_INFORMATION TimeZoneInformation)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlFindMessage(_In_ PVOID BaseAddress, _In_ ULONG Type, _In_ ULONG Language, _In_ ULONG MessageId, _Out_ PMESSAGE_RESOURCE_ENTRY *MessageResourceEntry)
#define MESSAGE_RESOURCE_UNICODE
#define TIME_ZONE_ID_UNKNOWN
#define TIME_ZONE_ID_STANDARD
#define TIME_ZONE_ID_DAYLIGHT
_Use_decl_annotations_ NTSTATUS NTAPI RtlMultiByteToUnicodeN(_Out_ PWCH UnicodeString, _In_ ULONG UnicodeSize, _Out_opt_ PULONG ResultSize, _In_ PCCH MbString, _In_ ULONG MbSize)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define REG_OPTION_NON_VOLATILE
#define HEAP_REALLOC_IN_PLACE_ONLY
#define LOCALE_NAME_MAX_LENGTH
#define SORT_CHINESE_PRCP
#define SORT_JAPANESE_UNICODE
#define LOCALE_CUSTOM_UNSPECIFIED
#define LOCALE_USER_DEFAULT
#define LOCALE_CUSTOM_DEFAULT
#define SORTIDFROMLCID(lcid)
#define SORT_CHINESE_UNICODE
#define SORT_JAPANESE_RADICALSTROKE
#define LOCALE_SYSTEM_DEFAULT
#define SORT_HUNGARIAN_TECHNICAL
#define SORT_KOREAN_UNICODE
#define SORT_CHINESE_BOPOMOFO
#define SORT_JAPANESE_XJIS
#define MAKELCID(lgid, srtid)
#define SORT_INVARIANT_MATH
#define SORT_GERMAN_PHONE_BOOK
#define SORT_GEORGIAN_MODERN
#define SORT_CHINESE_RADICALSTROKE
#define LOCALE_CUSTOM_UI_DEFAULT
_NullNull_terminated_ CONST WCHAR * PCZZWSTR
NTSTATUS NTAPI NtQueryInstallUILanguage(OUT LANGID *LanguageId)
NTSTATUS NTAPI NtQueryDefaultLocale(IN BOOLEAN UserProfile, OUT PLCID DefaultLocaleId)
NTSTATUS NTAPI NtQuerySystemTime(OUT PLARGE_INTEGER SystemTime)
#define STATUS_NO_UNICODE_TRANSLATION
#define STATUS_SOME_NOT_MAPPED
#define STATUS_INVALID_PARAMETER_1
#define IsEqualGUID(rguid1, rguid2)
static unsigned __int64 next
#define RtlUTF8ToUnicodeN
#define offsetof(TYPE, MEMBER)
int __cdecl system(_In_opt_z_ const char *_Command)
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP size_t __cdecl wcsspn(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define LANGIDFROMLCID(l)
#define SUBLANG_CHINESE_TRADITIONAL
#define SUBLANG_CHINESE_HONGKONG
#define SUBLANG_SPANISH_MODERN
#define DECLSPEC_HOTPATCH
VOID NTAPI RtlInitCodePageTable(IN PUSHORT TableBase, OUT PCPTABLEINFO CodePageTable)
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
SOCKET WSAAPI accept(IN SOCKET s, OUT LPSOCKADDR addr, OUT INT FAR *addrlen)
LIST_ENTRY ProcessLocksList
BYTE LeadByte[MAX_LEADBYTES]
BYTE DefaultChar[MAX_DEFAULTCHAR]
BYTE DefaultChar[MAX_DEFAULTCHAR]
WCHAR CodePageName[MAX_PATH]
BYTE LeadByte[MAX_LEADBYTES]
DWORD dwNLSVersionInfoSize
BYTE service_checksum[16]
enum registry_entry::@515 status
struct sortkey key_special
struct sortkey key_diacritic
struct sortkey key_primary
struct sortkey key_extra[4]
#define STATUS_INVALID_PARAMETER
#define STATUS_OBJECT_NAME_NOT_FOUND
static int __cdecl compr(const void *a, const void *b)
static const WCHAR lang[]
static UINT WPARAM LPARAM BOOL ansi
DWORD WINAPI GetLastError(void)
#define FORMAT_MESSAGE_FROM_STRING
#define FORMAT_MESSAGE_MAX_WIDTH_MASK
#define LOAD_LIBRARY_AS_IMAGE_RESOURCE
#define LOAD_LIBRARY_AS_DATAFILE
#define FORMAT_MESSAGE_IGNORE_INSERTS
#define FORMAT_MESSAGE_FROM_SYSTEM
#define TIME_ZONE_ID_INVALID
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
#define FORMAT_MESSAGE_FROM_HMODULE
#define HRESULT_FACILITY(hr)
#define HRESULT_SEVERITY(hr)
#define ERROR_BAD_EXE_FORMAT
#define ERROR_MUI_INVALID_RC_CONFIG
#define ERROR_NO_UNICODE_TRANSLATION
#define ERROR_INVALID_FLAGS
#define LOCALE_IREADINGLAYOUT
#define IS_SURROGATE_PAIR(high, low)
#define LOCALE_USE_CP_ACP
#define LCMAP_LINGUISTIC_CASING
#define LOCALE_SABBREVMONTHNAME10
#define LOCALE_SMONTHNAME12
#define LOCALE_ICURRDIGITS
#define LOCALE_INEGATIVEPERCENT
#define LOCALE_IDEFAULTCODEPAGE
#define LCID_ALTERNATE_SORTS
#define LOCALE_ALLOW_NEUTRAL_NAMES
#define LOCALE_SMONTHNAME5
#define CAL_SABBREVMONTHNAME8
#define LOCALE_SNATIVEDISPLAYNAME
#define CAL_SABBREVMONTHNAME6
#define CAL_SABBREVMONTHNAME12
#define LOCALE_SOPENTYPELANGUAGETAG
#define LOCALE_SABBREVMONTHNAME9
BOOL(CALLBACK * LOCALE_ENUMPROCEX)(LPWSTR, DWORD, LPARAM)
BOOL(CALLBACK * LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR)
enum _NORM_FORM NORM_FORM
#define LOCALE_NEUTRALDATA
#define LOCALE_SABBREVMONTHNAME11
#define LOCALE_SABBREVDAYNAME5
#define LOCALE_SABBREVDAYNAME2
#define LOCALE_INEGSEPBYSPACE
#define LOCALE_SABBREVMONTHNAME2
#define LOCALE_INEGSIGNPOSN
BOOL(CALLBACK * CALINFO_ENUMPROCW)(LPWSTR)
#define LOCALE_SMONTHNAME13
#define CAL_SABBREVMONTHNAME9
#define CAL_SABBREVMONTHNAME10
#define LOCALE_SMONTHNAME3
#define LOCALE_SSHORTTIME
#define LINGUISTIC_IGNORECASE
#define LCMAP_SIMPLIFIED_CHINESE
#define LOCALE_SMONTHNAME11
#define LOCALE_SMONTHNAME8
#define CAL_SABBREVMONTHNAME7
#define LCMAP_TRADITIONAL_CHINESE
#define IS_HIGH_SURROGATE(ch)
#define LOCALE_SMONTHNAME4
#define LOCALE_FONTSIGNATURE
BOOL(CALLBACK * TIMEFMT_ENUMPROCEX)(LPWSTR, LPARAM)
#define LOCALE_SNATIVECTRYNAME
BOOL(CALLBACK * UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR)
#define LOCALE_SENGLANGUAGE
#define CAL_SABBREVDAYNAME7
#define LOCALE_SABBREVMONTHNAME13
#define CAL_SABBREVDAYNAME5
#define LOCALE_IFIRSTWEEKOFYEAR
#define LOCALE_IPOSITIVEPERCENT
#define CAL_SABBREVMONTHNAME11
#define LOCALE_SLOCALIZEDDISPLAYNAME
BOOL(CALLBACK * DATEFMT_ENUMPROCW)(LPWSTR)
#define LOCALE_SNATIVELANGNAME
#define CAL_SABBREVMONTHNAME1
#define LOCALE_SMONTHNAME7
BOOL(CALLBACK * DATEFMT_ENUMPROCEXEX)(LPWSTR, CALID, LPARAM)
#define LOCALE_SSORTLOCALE
#define NORM_IGNOREKANATYPE
#define NORM_LINGUISTIC_CASING
#define LOCALE_ALTERNATE_SORTS
#define LOCALE_IINTLCURRDIGITS
#define CAL_SABBREVMONTHNAME3
#define LOCALE_SSHORTDATE
#define GEOID_NOT_AVAILABLE
BOOL(CALLBACK * GEO_ENUMPROC)(GEOID)
BOOL(CALLBACK * LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR)
#define NORM_IGNORENONSPACE
#define LOCALE_SRELATIVELONGDATE
BOOL(CALLBACK * CODEPAGE_ENUMPROCA)(LPSTR)
#define LOCALE_SPECIFICDATA
#define TIME_NOTIMEMARKER
#define TIME_NOMINUTESORSECONDS
#define LOCALE_IPOSSYMPRECEDES
#define LOCALE_SABBREVMONTHNAME4
#define LOCALE_SPOSITIVESIGN
BOOL(CALLBACK * LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR)
#define NORM_IGNORESYMBOLS
#define LOCALE_IDEFAULTLANGUAGE
#define CAL_SABBREVMONTHNAME5
#define LOCALE_SABBREVDAYNAME4
#define LOCALE_SMONDECIMALSEP
#define LOCALE_SISO639LANGNAME
#define LOCALE_SLOCALIZEDLANGUAGENAME
#define LINGUISTIC_IGNOREDIACRITIC
#define LOCALE_SMONTHNAME1
#define LOCALE_SABBREVMONTHNAME3
#define LOCALE_INEGSYMPRECEDES
BOOL(CALLBACK * LOCALE_ENUMPROCA)(LPSTR)
#define LOCALE_SMONTHOUSANDSEP
#define LOCALE_IPOSSIGNPOSN
#define LOCALE_SABBREVMONTHNAME1
#define LOCALE_NOUSEROVERRIDE
#define LOCALE_IOPTIONALCALENDAR
#define CAL_SABBREVDAYNAME6
#define CAL_SABBREVDAYNAME4
#define LOCALE_IDEFAULTANSICODEPAGE
#define LOCALE_SISO3166CTRYNAME
#define LOCALE_SABBREVDAYNAME6
#define LOCALE_SMONTHNAME2
#define LOCALE_STIMEFORMAT
#define IS_LOW_SURROGATE(ch)
BOOL(CALLBACK * LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR)
#define LOCALE_SABBREVDAYNAME1
#define ENUM_ALL_CALENDARS
#define LOCALE_IFIRSTDAYOFWEEK
#define LOCALE_SABBREVMONTHNAME6
#define LOCALE_SMONTHNAME6
#define SORT_DIGITSASNUMBERS
#define LOCALE_SABBREVLANGNAME
#define LOCALE_SENGCOUNTRY
BOOL(CALLBACK * DATEFMT_ENUMPROCEXW)(LPWSTR, CALID)
BOOL(CALLBACK * UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR)
#define LOCALE_SABBREVCTRYNAME
#define LOCALE_INEGNUMBER
#define LOCALE_SNEGATIVESIGN
#define LOCALE_IDEFAULTCOUNTRY
BOOL(CALLBACK * TIMEFMT_ENUMPROCW)(LPWSTR)
#define LOCALE_SSHORTESTPM
#define TIME_FORCE24HOURFORMAT
#define LOCALE_SNATIVEDIGITS
#define LOCALE_SSHORTESTAM
#define LOCALE_SABBREVDAYNAME3
#define DATE_USE_ALT_CALENDAR
#define CAL_IYEAROFFSETRANGE
BOOL(CALLBACK * CALINFO_ENUMPROCEXEX)(LPWSTR, CALID, LPWSTR, LPARAM)
#define LOCALE_SABBREVMONTHNAME5
#define CAL_SABBREVMONTHNAME2
#define LOCALE_SABBREVMONTHNAME7
#define LOCALE_ICALENDARTYPE
#define LOCALE_SINTLSYMBOL
BOOL(CALLBACK * LOCALE_ENUMPROCW)(LPWSTR)
#define LOCALE_SABBREVMONTHNAME8
#define CSTR_GREATER_THAN
#define LOCALE_SMONGROUPING
#define CAL_SABBREVDAYNAME2
#define LOCALE_SMONTHNAME10
#define LOCALE_SMONTHNAME9
BOOL(CALLBACK * CALINFO_ENUMPROCEXW)(LPWSTR, CALID)
BOOL(CALLBACK * CODEPAGE_ENUMPROCW)(LPWSTR)
#define LOCALE_IPOSSEPBYSPACE
#define CAL_SABBREVMONTHNAME13
#define LOCALE_SABBREVMONTHNAME12
#define LOCALE_IDEFAULTMACCODEPAGE
#define LOCALE_ITIMEMARKPOSN
#define CAL_SABBREVMONTHNAME4
#define CAL_SABBREVDAYNAME3
#define CAL_SABBREVDAYNAME1
#define LOCALE_RETURN_GENITIVE_NAMES
#define LOCALE_SABBREVDAYNAME7
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define MAKEINTRESOURCEW(i)
NTSYSAPI NTSTATUS NTAPI RtlIsNormalizedString(_In_ ULONG NormForm, _In_ PCWSTR SourceString, _In_ LONG SourceStringLength, _Out_ PBOOLEAN Normalized)
NTSYSAPI NTSTATUS NTAPI RtlIdnToUnicode(IN ULONG Flags, IN PCWSTR SourceString, IN LONG SourceStringLength, OUT PWSTR DestinationString, IN OUT PLONG DestinationStringLength)
#define RtlUshortByteSwap(_x)
NTSYSAPI NTSTATUS NTAPI RtlIdnToAscii(_In_ ULONG Flags, _In_ PCWSTR SourceString, _In_ LONG SourceStringLength, _Out_writes_to_(*DestinationStringLength, *DestinationStringLength) PWSTR DestinationString, _Inout_ PLONG DestinationStringLength)
NTSYSAPI NTSTATUS NTAPI RtlIdnToNameprepUnicode(_In_ ULONG Flags, _In_ PCWSTR SourceString, _In_ LONG SourceStringLength, _Out_writes_to_(*DestinationStringLength, *DestinationStringLength) PWSTR DestinationString, _Inout_ PLONG DestinationStringLength)