30#define WIN32_NO_STATUS
31#define WINNORMALIZEAPI
45#define CALINFO_MAX_YEAR 2029
95 { 37,
L"IBM EBCDIC US Canada" },
96 { 424,
L"IBM EBCDIC Hebrew" },
97 { 437,
L"OEM United States" },
98 { 500,
L"IBM EBCDIC International" },
99 { 708,
L"Arabic ASMO" },
100 { 720,
L"Arabic (Transparent ASMO)" },
101 { 737,
L"OEM Greek 437G" },
102 { 775,
L"OEM Baltic" },
103 { 850,
L"OEM Multilingual Latin 1" },
104 { 852,
L"OEM Slovak Latin 2" },
105 { 855,
L"OEM Cyrillic" },
106 { 856,
L"Hebrew PC" },
107 { 857,
L"OEM Turkish" },
108 { 860,
L"OEM Portuguese" },
109 { 861,
L"OEM Icelandic" },
110 { 862,
L"OEM Hebrew" },
111 { 863,
L"OEM Canadian French" },
112 { 864,
L"OEM Arabic" },
113 { 865,
L"OEM Nordic" },
114 { 866,
L"OEM Russian" },
115 { 869,
L"OEM Greek" },
116 { 874,
L"ANSI/OEM Thai" },
117 { 875,
L"IBM EBCDIC Greek" },
118 { 878,
L"Russian KOI8" },
119 { 932,
L"ANSI/OEM Japanese Shift-JIS" },
120 { 936,
L"ANSI/OEM Simplified Chinese GBK" },
121 { 949,
L"ANSI/OEM Korean Unified Hangul" },
122 { 950,
L"ANSI/OEM Traditional Chinese Big5" },
123 { 1006,
L"IBM Arabic" },
124 { 1026,
L"IBM EBCDIC Latin 5 Turkish" },
125 { 1250,
L"ANSI Eastern Europe" },
126 { 1251,
L"ANSI Cyrillic" },
127 { 1252,
L"ANSI Latin 1" },
128 { 1253,
L"ANSI Greek" },
129 { 1254,
L"ANSI Turkish" },
130 { 1255,
L"ANSI Hebrew" },
131 { 1256,
L"ANSI Arabic" },
132 { 1257,
L"ANSI Baltic" },
133 { 1258,
L"ANSI/OEM Viet Nam" },
134 { 1361,
L"Korean Johab" },
135 { 10000,
L"Mac Roman" },
136 { 10001,
L"Mac Japanese" },
137 { 10002,
L"Mac Traditional Chinese" },
138 { 10003,
L"Mac Korean" },
139 { 10004,
L"Mac Arabic" },
140 { 10005,
L"Mac Hebrew" },
141 { 10006,
L"Mac Greek" },
142 { 10007,
L"Mac Cyrillic" },
143 { 10008,
L"Mac Simplified Chinese" },
144 { 10010,
L"Mac Romanian" },
145 { 10017,
L"Mac Ukrainian" },
146 { 10021,
L"Mac Thai" },
147 { 10029,
L"Mac Latin 2" },
148 { 10079,
L"Mac Icelandic" },
149 { 10081,
L"Mac Turkish" },
150 { 10082,
L"Mac Croatian" },
151 { 20127,
L"US-ASCII (7bit)" },
152 { 20866,
L"Russian KOI8" },
153 { 20932,
L"EUC-JP" },
154 { 20949,
L"Korean Wansung" },
155 { 21866,
L"Ukrainian KOI8" },
156 { 28591,
L"ISO 8859-1 Latin 1" },
157 { 28592,
L"ISO 8859-2 Latin 2 (East European)" },
158 { 28593,
L"ISO 8859-3 Latin 3 (South European)" },
159 { 28594,
L"ISO 8859-4 Latin 4 (Baltic old)" },
160 { 28595,
L"ISO 8859-5 Cyrillic" },
161 { 28596,
L"ISO 8859-6 Arabic" },
162 { 28597,
L"ISO 8859-7 Greek" },
163 { 28598,
L"ISO 8859-8 Hebrew" },
164 { 28599,
L"ISO 8859-9 Latin 5 (Turkish)" },
165 { 28600,
L"ISO 8859-10 Latin 6 (Nordic)" },
166 { 28601,
L"ISO 8859-11 Latin (Thai)" },
167 { 28603,
L"ISO 8859-13 Latin 7 (Baltic)" },
168 { 28604,
L"ISO 8859-14 Latin 8 (Celtic)" },
169 { 28605,
L"ISO 8859-15 Latin 9 (Euro)" },
170 { 28606,
L"ISO 8859-16 Latin 10 (Balkan)" },
171 { 65000,
L"65000 (UTF-7)" },
172 { 65001,
L"65001 (UTF-8)" }
178 { 0x00c6,
'A',
'E',0 },
179 { 0x00de,
'T',
'H',0 },
180 { 0x00df,
's',
's',0 },
181 { 0x00e6,
'a',
'e',0 },
182 { 0x00fe,
't',
'h',0 },
183 { 0x0132,
'I',
'J',0 },
184 { 0x0133,
'i',
'j',0 },
185 { 0x0152,
'O',
'E',0 },
186 { 0x0153,
'o',
'e',0 },
187 { 0x01c4,
'D',0x017d,0 },
188 { 0x01c5,
'D',0x017e,0 },
189 { 0x01c6,
'd',0x017e,0 },
190 { 0x01c7,
'L',
'J',0 },
191 { 0x01c8,
'L',
'j',0 },
192 { 0x01c9,
'l',
'j',0 },
193 { 0x01ca,
'N',
'J',0 },
194 { 0x01cb,
'N',
'j',0 },
195 { 0x01cc,
'n',
'j',0 },
196 { 0x01e2, 0x0100,0x0112,0 },
197 { 0x01e3, 0x0101,0x0113,0 },
198 { 0x01f1,
'D',
'Z',0 },
199 { 0x01f2,
'D',
'z',0 },
200 { 0x01f3,
'd',
'z',0 },
201 { 0x01fc, 0x00c1,0x00c9,0 },
202 { 0x01fd, 0x00e1,0x00e9,0 },
203 { 0x05f0, 0x05d5,0x05d5,0 },
204 { 0x05f1, 0x05d5,0x05d9,0 },
205 { 0x05f2, 0x05d9,0x05d9,0 },
206 { 0xfb00,
'f',
'f',0 },
207 { 0xfb01,
'f',
'i',0 },
208 { 0xfb02,
'f',
'l',0 },
209 { 0xfb03,
'f',
'f',
'i',0 },
210 { 0xfb04,
'f',
'f',
'l',0 },
211 { 0xfb05, 0x017f,
't',0 },
212 { 0xfb06,
's',
't',0 },
336#define FLAG_HAS_3_BYTE_WEIGHTS 0x01
337#define FLAG_REVERSEDIACRITICS 0x10
338#define FLAG_DOUBLECOMPRESSION 0x20
339#define FLAG_INVERSECASING 0x40
372#define CASE_FULLWIDTH 0x01
373#define CASE_FULLSIZE 0x02
374#define CASE_SUBSCRIPT 0x08
375#define CASE_UPPER 0x10
376#define CASE_KATAKANA 0x20
377#define CASE_COMPR_2 0x40
378#define CASE_COMPR_4 0x80
379#define CASE_COMPR_6 0xc0
434 0, 0, { (
DWORD_PTR)(__FILE__
": locale_section") }
471 geo_header = (
struct geo_header *)((
char *)
header +
header->geoids);
472 geo_ids = (
const struct geo_id *)((
char *)geo_header + geo_header->ids_offset);
473 geo_index = (
const struct geo_index *)((
char *)geo_header + geo_header->index_offset);
520 last_compr =
sort.compressions +
sort.compr_count - 1;
522 for (
i = 0;
i < 7;
i++)
table += last_compr->
len[
i] * ((
i + 5) / 2);
572 if (ch1 >=
'a' && ch1 <=
'z') ch1 -=
'a' -
'A';
573 else if (ch1 ==
'_') ch1 =
'-';
574 if (ch2 >=
'a' && ch2 <=
'z') ch2 -=
'a' -
'A';
575 else if (ch2 ==
'_') ch2 =
'-';
576 if (!ch1 || ch1 != ch2)
return ch1 - ch2;
646 const NLS_LOCALE_LCNAME_INDEX *
entry;
666 const NLS_LOCALE_LCNAME_INDEX *
entry;
667 const NLS_LOCALE_DATA *
locale;
701 size =
sizeof(guidstr);
728 const NLS_LOCALE_LCID_INDEX *
entry;
729 const NLS_LOCALE_DATA *
locale;
756 if (
type & LOCALE_RETURN_NUMBER)
789 entry->status = CACHED;
806 switch (
entry->status)
823 entry->status = MISSING;
826 entry->status = CACHED;
850 if (!(
type & LOCALE_RETURN_NUMBER))
858 case LOCALE_IDEFAULTEBCDICCODEPAGE:
887 if (
type & LOCALE_RETURN_NUMBER)
890 if (
ret == -1)
return ret;
909 if (
type & LOCALE_RETURN_NUMBER)
954 if (
type & LOCALE_RETURN_NUMBER)
982 if (
type & CAL_RETURN_NUMBER)
1004 if (
str[0] !=
'd' ||
str[1] !=
'd' ||
str[2] !=
'd')
return str;
1006 while (
str[1] ==
'd')
str++;
1051 return L"Stroke Count";
1053 return L"Pronunciation";
1059 case 5:
return L"Surname";
1065 return L"Traditional";
1073 return L"Dictionary";
1083 return L"Maths Alphanumerics";
1096 return L"Dictionary";
1103 return L"International";
1105 return L"Traditional";
1117 static const WCHAR spermille[] = { 0x2030, 0 };
1118 static const BYTE ipossignposn[] = { 3, 3, 4, 2, 1, 1, 3, 4, 1, 3, 4, 2, 4, 3, 3, 1 };
1119 static const BYTE inegsignposn[] = { 0, 3, 4, 2, 0, 1, 3, 4, 1, 3, 4, 2, 4, 3, 0, 0 };
1120 static const BYTE inegsymprecedes[] = { 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, };
1266 if (*
str ==
'M')
break;
1267 val = (*
str ==
'y' ? 2 : 1);
1277 if (*
str ==
'M')
break;
1278 val = (*
str ==
'y' ? 2 : 1);
1369 locale->sabbrevgenitivemonth :
locale->sabbrevmonthname,
1437 case LOCALE_SDURATION:
1440 case LOCALE_SKEYBOARDSTOINSTALL:
1443 case LOCALE_SSHORTESTDAYNAME1:
1444 case LOCALE_SSHORTESTDAYNAME2:
1445 case LOCALE_SSHORTESTDAYNAME3:
1446 case LOCALE_SSHORTESTDAYNAME4:
1447 case LOCALE_SSHORTESTDAYNAME5:
1448 case LOCALE_SSHORTESTDAYNAME6:
1449 case LOCALE_SSHORTESTDAYNAME7:
1453 case LOCALE_SISO639LANGNAME2:
1456 case LOCALE_SISO3166CTRYNAME2:
1462 case LOCALE_SPOSINFINITY:
1465 case LOCALE_SNEGINFINITY:
1468 case LOCALE_SSCRIPTS:
1471 case LOCALE_SPARENT:
1474 case LOCALE_SCONSOLEFALLBACKNAME:
1555 case LOCALE_SYEARMONTH:
1559 case LOCALE_SENGCURRNAME:
1562 case LOCALE_SNATIVECURRNAME:
1569 case LOCALE_IPAPERSIZE:
1591 locale->sabbrevgenitivemonth :
locale->sabbrevmonthname,
1602 case LOCALE_IDEFAULTEBCDICCODEPAGE:
1605 case LOCALE_SSORTNAME:
1609 case LOCALE_IDIGITSUBSTITUTION:
1622 unsigned int i,
val = 0;
1625 if (
type & CAL_RETURN_NUMBER)
1629 else if (
len < 0 ||
value)
goto invalid;
1634 for (
i = 0;
i <
ids[0];
i++)
if (
ids[1 +
i] ==
id)
break;
1635 if (
i ==
ids[0])
goto invalid;
1707 else if ((
type & CAL_RETURN_GENITIVE_NAMES) &&
locale->sgenitivemonth)
val =
locale->sgenitivemonth;
1725 else if ((
type & CAL_RETURN_GENITIVE_NAMES) &&
locale->sabbrevgenitivemonth)
val =
locale->sabbrevgenitivemonth;
1828 FIXME(
"type %u is not supported\n",
type );
1863#define UPDATE(val,entry) update_registry_value( LOCALE_NOUSEROVERRIDE | (val), (entry).subkey, (entry).value )
1916 USHORT *ansi_ptr, *oem_ptr;
1919 const WCHAR *user_locale_name;
1975 count =
sizeof(bufferW);
1978 if (!
wcscmp( bufferW, user_locale_name ))
return;
1979 TRACE(
"updating registry, locale changed %s -> %s\n",
1982 else TRACE(
"updating registry, locale changed none -> %s\n",
debugstr_w(user_locale_name) );
2008 unsigned int off =
table[
table[256 + (high - 0xd800)] + ((low >> 5) & 0x1f)] + 2 * (low & 0x1f);
2009 return 0x10000 + ((high - 0xd800) << 10) + (low - 0xdc00) +
MAKELONG(
table[off],
table[off+1] );
2015 return table[0] >= 0x500;
2027 dst[
pos + 1] = 0xdc00 | (
ch & 0x3ff);
2105 BYTE off = level1[
ch / 128];
2107 if (!off || off >= 0xfb)
return rol( off, 5 );
2108 return level2[(off - 1) * 128 +
ch % 128];
2141 len = pairs[
pos].dst >> 13;
2171 if (
ch[0] == ch1 &&
ch[1] == ch2)
return ch[2];
2231 ERR(
"too many codepages\n" );
2253 int pos = (low + high) / 2;
2318 case MAP_EXPAND_LIGATURES:
2372 for (
i = 0;
i <
len;
i++)
2374 unsigned char c =
src[
i];
2375 dst[
i] = (
c < 0x20) ?
c :
c + 0xf000;
2388 static const signed char base64_decoding_table[] =
2390 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2392 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
2393 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
2394 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2395 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
2396 -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2397 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
2402 DWORD byte_pair = 0;
2413 if (pos >= dstlen) goto overflow; \
2419 while (
src < source_end)
2424 if (
src >= source_end)
break;
2435 signed char sextet = *
src;
2451 sextet = base64_decoding_table[sextet];
2461 byte_pair = (byte_pair << 6) | sextet;
2471 while (
src < source_end);
2511 return (
code >= 0xe000 &&
code <= 0xf8ff);
2517 if (
info->DBCSOffsets)
2525 if (
info->DBCSOffsets[off +
src[1]] ==
info->UniDefaultChar &&
2526 ((
src[0] << 8) |
src[1]) !=
info->TransUniDefaultChar)
break;
2531 if (
info->MultiByteTable[*
src] ==
info->UniDefaultChar && *
src !=
info->TransUniDefaultChar)
2540 if (
info->MultiByteTable[*
src] ==
info->UniDefaultChar && *
src !=
info->TransUniDefaultChar)
2556 const WCHAR *decomp;
2557 unsigned int decomp_len;
2559 if (
info->DBCSOffsets)
2565 if ((off =
info->DBCSOffsets[*
src]))
2573 else ch =
info->UniDefaultChar;
2583 if ((off =
info->DBCSOffsets[*
src]))
2591 else ch =
info->UniDefaultChar;
2597 if (
len < decomp_len)
break;
2617 if (
len < decomp_len)
break;
2712 if ((off =
info->DBCSOffsets[*
src]))
2720 else *
dst =
info->UniDefaultChar;
2737 const unsigned char *
str = (
const unsigned char *)
src;
2753 if (
info->DBCSOffsets)
2770 if (defchar ||
used)
2777 for (
i = 0;
i <
len;
i++)
2799 static const char directly_encodable[] =
2801 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
2802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2803 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,
2804 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
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, 0, 0, 0, 0, 0,
2807 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2808 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2810#define ENCODABLE(ch) ((ch) <= 0x7a && directly_encodable[(ch)])
2812 static const char base64_encoding_table[] =
2813 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
2818 if (defchar ||
used)
2833 if (pos >= dstlen) goto overflow; \
2839 while (
src < source_end)
2854 unsigned int offset = 0, byte_pair = 0;
2859 byte_pair = (byte_pair << 16) | *
src;
2864 OUTPUT( base64_encoding_table[(byte_pair >>
offset) & 0x3f] );
2873 byte_pair <<= (6 -
offset);
2874 OUTPUT( base64_encoding_table[byte_pair & 0x3f] );
2917 const char *
table =
info->WideCharTable;
3012 const unsigned char *
table =
info->WideCharTable;
3014 if (wch >= 0x10000)
return 0;
3016 return (
info->MultiByteTable[
table[wch]] == wch);
3023 const unsigned short *
table =
info->WideCharTable;
3026 if (wch >= 0x10000)
return 0;
3030 if (
ch >> 8)
return info->DBCSOffsets[
info->DBCSOffsets[
ch >> 8] + (
ch & 0xff)] == wch;
3031 return info->MultiByteTable[
ch] == wch;
3040 const char *
table =
info->WideCharTable;
3041 const char def = defchar ? *defchar : (
char)
info->DefaultChar;
3045 unsigned int composed;
3136 WCHAR wch, defchar_value;
3137 unsigned int composed;
3142 if (!defchar[1]) defchar_value = (
unsigned char)defchar[0];
3143 else defchar_value = ((
unsigned char)defchar[0] << 8) | (
unsigned char)defchar[1];
3165 if (
res & 0xff00)
i++;
3173 if (defchar_value & 0xff00)
i++;
3190 res = defchar_value;
3193 if (
res & 0xff00)
i++;
3216 res = defchar_value;
3233 res = defchar_value;
3260 if (!defchar) defchar = (
const char *)&
info->DefaultChar;
3266 if (
info->DBCSOffsets)
3284 if (
key->len >=
key->max)
return;
3285 if (
key->len >=
key->size)
3300 for (
i = 0;
i <
key->len / 2;
i++)
3395 if (!compr_tables[0])
3397 compr_tables[0] =
sort.compr_data +
compr->offset;
3398 for (
i = 1;
i < 8;
i++)
3401 for (
i = maxlen - 2;
i >= 0;
i--)
3413 static const WCHAR zeroes[] =
3415 0x0030, 0x0660, 0x06f0, 0x0966, 0x09e6, 0x0a66, 0x0ae6, 0x0b66, 0x0be6, 0x0c66,
3416 0x0ce6, 0x0d66, 0x0e50, 0x0ed0, 0x0f20, 0x1040, 0x1090, 0x17e0, 0x1810, 0x1946,
3417 0x1bb0, 0x1c40, 0x1c50, 0xa620, 0xa8d0, 0xa900, 0xaa50, 0xff10
3424 if (zeroes[
pos] <=
ch && zeroes[
pos] + 9 >=
ch)
return zeroes[
pos];
3446 for (lzero = 0; lzero <
len; lzero++)
if (
values[lzero])
break;
3478 if (prev.
primary <= 1)
continue;
3480 case_weight = prev.
_case & case_mask;
3484 case_weight &= ~CASE_FULLWIDTH;
3487 extra1 = 4 +
weights->primary;
3503#define HANGUL_SBASE 0xac00
3504#define HANGUL_LCOUNT 19
3505#define HANGUL_VCOUNT 21
3506#define HANGUL_TCOUNT 28
3510 int leading_idx = 0x115f - 0x1100;
3511 int vowel_idx = 0x1160 - 0x1100;
3512 int trailing_idx = -1;
3513 BYTE leading_off, vowel_off, trailing_off;
3516 BYTE filler_mask = 0;
3521 else if (
src[
pos] >= 0xa960 &&
src[
pos] <= 0xa97c) leading_idx =
src[
pos++] - (0xa960 - 0x100);
3527 else if (
src[
pos] >= 0xd7b0 &&
src[
pos] <= 0xd7c6) vowel_idx =
src[
pos++] - (0xd7b0 - 0x11d);
3534 else if (
src[
pos] >= 0xd7cb &&
src[
pos] <= 0xd7fb) trailing_idx =
src[
pos++] - (0xd7cb - 0x134);
3537 if (!
sort.jamo[leading_idx].is_old && !
sort.jamo[vowel_idx].is_old &&
3538 (trailing_idx == -1 || !
sort.jamo[trailing_idx].is_old))
3542 vowel_idx = 0x1160 - 0x1100;
3546 leading_off =
max(
sort.jamo[leading_idx].leading,
sort.jamo[vowel_idx].leading );
3547 vowel_off =
max(
sort.jamo[leading_idx].vowel,
sort.jamo[vowel_idx].vowel );
3548 trailing_off =
max(
sort.jamo[leading_idx].trailing,
sort.jamo[vowel_idx].trailing );
3549 if (trailing_idx != -1) trailing_off =
max( trailing_off,
sort.jamo[trailing_idx].trailing );
3552 if (leading_idx == 0x115f - 0x1100 || vowel_idx == 0x1160 - 0x1100)
3579 return pos +
key->len + 1;
3595 BYTE *primary_buf,
UINT primary_size )
3598 BYTE *secondary_buf =
s->buffer;
3599 UINT secondary_size;
3603 s->key_primary.buf = primary_buf;
3604 s->key_primary.size = primary_size;
3608 secondary_size =
sizeof(
s->buffer) / 3;
3609 s->key_diacritic.buf = secondary_buf;
3610 s->key_diacritic.size = secondary_size;
3611 secondary_buf += secondary_size;
3613 else secondary_size =
sizeof(
s->buffer) / 2;
3615 s->key_case.buf = secondary_buf;
3616 s->key_case.size = secondary_size;
3617 s->key_special.buf = secondary_buf + secondary_size;
3618 s->key_special.size = secondary_size;
3620 s->key_primary.max =
srclen * 8;
3622 s->key_special.max =
srclen * 4;
3623 s->key_extra[2].max =
s->key_extra[3].max =
srclen;
3626 s->key_diacritic.max =
srclen * 3;
3627 s->key_extra[0].max =
s->key_extra[1].max =
srclen;
3638 for (
i =
s->key_diacritic.len;
i > 0;
i--)
if (
s->key_diacritic.buf[
i - 1] > 2)
break;
3639 s->key_diacritic.len =
i;
3641 for (
i =
s->key_case.len;
i > 0;
i--)
if (
s->key_case.buf[
i - 1] > 2)
break;
3642 s->key_case.len =
i;
3644 if (!
s->key_extra[2].len)
return FALSE;
3646 for (
i = 0;
i < 4;
i++)
3648 for (
j =
s->key_extra[
i].len;
j > 0;
j--)
if (
s->key_extra[
i].buf[
j - 1] != ignore[
i])
break;
3649 s->key_extra[
i].len =
j;
3733 short len = -((
s->key_primary.len +
s->primary_pos) / 2) - 1;
3782 BYTE primary_buf[256];
3785 BYTE case_mask = 0x3f;
3787 const WCHAR *compr_tables[8];
3789 compr_tables[0] =
NULL;
3833 const WCHAR *src1,
int srclen1,
const WCHAR *src2,
int srclen2 )
3839 int i,
ret,
len, pos1 = 0, pos2 = 0;
3840 BOOL have_extra1, have_extra2;
3841 BYTE case_mask = 0x3f;
3843 const WCHAR *compr_tables[8];
3845 compr_tables[0] =
NULL;
3854 while (pos1 < srclen1 || pos2 < srclen2)
3856 while (pos1 < srclen1 && !
s1.key_primary.len)
3860 while (pos2 < srclen2 && !
s2.key_primary.len)
3864 if (!(
len =
min(
s1.key_primary.len,
s2.key_primary.len )))
break;
3865 if ((
ret =
memcmp( primary1, primary2,
len )))
goto done;
3868 s1.key_primary.len -=
len;
3869 s2.key_primary.len -=
len;
3870 s1.primary_pos +=
len;
3871 s2.primary_pos +=
len;
3874 if ((
ret =
s1.key_primary.len -
s2.key_primary.len))
goto done;
3882 if (have_extra1 && have_extra2)
3884 for (
i = 0;
i < 4;
i++)
3887 else if ((
ret = have_extra1 - have_extra2))
goto done;
3905 BYTE primary_val[256];
3907 BOOL have_extra, have_extra_val;
3908 BYTE case_mask = 0x3f;
3910 const WCHAR *compr_tables[8];
3912 compr_tables[0] =
NULL;
3922 while (
pos < valuelen)
3932 while (
pos <
len &&
s.primary_pos <=
val.key_primary.len)
3934 while (
pos <
len && !
s.key_primary.len)
3938 if (
s.primary_pos +
s.key_primary.len >
val.key_primary.len ||
3939 memcmp( primary,
val.key_primary.buf +
s.primary_pos,
s.key_primary.len ))
3944 s.primary_pos +=
s.key_primary.len;
3945 s.key_primary.len = 0;
3947 if (
s.primary_pos <
val.key_primary.len)
continue;
3953 if (have_extra && have_extra_val)
3955 for (
i = 0;
i < 4;
i++)
3958 else if (have_extra || have_extra_val)
goto next;
3968 s.key_primary.len =
s.key_diacritic.len =
s.key_case.len =
s.key_special.len = 0;
3969 s.key_extra[0].len =
s.key_extra[1].len =
s.key_extra[2].len =
s.key_extra[3].len = 0;
4011 else if (
src[1] == 0xff9e)
4014 if ((*
src >= 0xff76 && *
src <= 0xff84) ||
4015 (*
src >= 0xff8a && *
src <= 0xff8e) ||
4018 else if (*
src == 0xff73)
4020 else if (*
src == 0xff9c)
4022 else if (*
src == 0x30f0)
4024 else if (*
src == 0x30f1)
4026 else if (*
src == 0xff66)
4031 else if (
src[1] == 0xff9f)
4033 if (*
src >= 0xff8a && *
src <= 0xff8e)
4068 const WCHAR *decomp;
4069 unsigned int i,
j,
len;
4095 static const BYTE katakana_map[] =
4097 0x01, 0x00, 0x01, 0x00,
4098 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
4099 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
4100 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,
4101 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4102 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02,
4103 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00,
4104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4106 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x08,
4107 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x01
4122 dst[
pos + 1] = (
k == 2) ? 0xff9f : 0xff9e;
4228 static const int month_lengths[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
4231 if (
tf->Month <
compare->wMonth)
return -1;
4232 if (
tf->Month >
compare->wMonth)
return 1;
4244 last = month_lengths[
tf->Month - 1] +
4245 (
tf->Month == 2 && (!(
tf->Year % 4) && (
tf->Year % 100 || !(
tf->Year % 400))));
4252 dayinsecs = ((
tf->Day * 24 +
tf->Hour) * 60 +
tf->Minute) * 60 +
tf->Second;
4253 return dayinsecs -
limit;
4260 BOOL before_standard_date, after_daylight_date;
4267 if (
info->StandardDate.wMonth == 0 ||
4268 (
info->StandardDate.wYear == 0 &&
4269 (
info->StandardDate.wDay < 1 ||
info->StandardDate.wDay > 5 ||
4270 info->DaylightDate.wDay < 1 ||
info->DaylightDate.wDay > 5)))
4284 if (
tf.Year == year)
4287 before_standard_date =
tf.Year < year;
4294 if (
tf.Year == year)
4297 after_daylight_date =
tf.Year > year;
4299 if (
info->DaylightDate.wMonth <
info->StandardDate.wMonth)
4350 type &= ~CAL_RETURN_NUMBER;
4428 case DATE_YEARMONTH:
4449 for (
i = 0;
ret &&
i < calendars[0];
i++)
4451 if (calendars[
i + 1] == 1)
continue;
4462 case DATE_YEARMONTH:
4469 calendars[
i + 1], unicode,
ex, exex,
lparam );
4498 value_len =
sizeof(
value);
4589 value_len =
sizeof(
value);
4600 char nameA[10], descrA[80];
4680 if (
flags & ~(MUI_LANGUAGE_ID | MUI_LANGUAGE_NAME))
4692 if (
flags & MUI_LANGUAGE_NAME)
4742 if (
version)
FIXME(
"unexpected version parameter\n" );
4746 if (
flags & ~supported_flags)
4774 const char *
str2,
int len2 )
4777 WCHAR *buf2W = buf1W + 130;
4779 INT len1W = 0, len2W = 0,
ret;
4801 if (len1W) str1W = buf1W;
4823 if (len2W) str2W = buf2W;
4858 const NLS_LOCALE_LCID_INDEX *
entry;
4873 WARN(
"unknown locale %04lx\n",
lcid );
5001 tz.DynamicDaylightTimeDisabled =
TRUE;
5005 info->DynamicDaylightTimeDisabled =
FALSE;
5160 if (wanted_flags && !(
flags & wanted_flags))
continue;
5195 const NLS_LOCALE_LCID_INDEX *
entry;
5210 WARN(
"unknown locale %04lx\n",
lcid );
5235 if (
version)
FIXME(
"unexpected version parameter\n" );
5281 src_size -= val_size;
5282 if (src_size < 0)
return -1;
5397 TRACE(
"(0x%lx,%p,%#lx,0x%lx,%p,%lu,%p)\n",
flags,
source, msgid,
langid,
buffer,
size,
args );
5423 result, 65536, &retsize );
5479 TRACE(
"(0x%lx,%p,%#lx,0x%lx,%p,%lu,%p)\n",
flags,
source, msgid,
langid,
buffer,
size,
args );
5543 return retsize /
sizeof(
WCHAR) - 1;
5618 const NLS_LOCALE_DATA *
locale;
5656 0, 0, { (
DWORD_PTR)(__FILE__
": tzname_section") }
5738#define MUI_SIGNATURE 0xfecdfecd
5778 if (
size <
sizeof(*mui) ||
5799 DWORD off, mui_size,
type = MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL;
5808 info->dwVersion != MUI_FILEINFO_VERSION)))
5815 if (!
flags)
flags = MUI_QUERY_TYPE | MUI_QUERY_CHECKSUM;
5830 if (mui->
file_type & (MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN >> 1))
5831 type = MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN;
5832 else if (mui->
file_type & (MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI >> 1))
5833 type = MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI;
5835 if (
type == MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL)
5841 *
size =
sizeof(*info);
5852 info->dwVersion = MUI_FILEINFO_VERSION;
5858 if (
flags & MUI_QUERY_LANGUAGE_NAME)
5860 off +=
type == MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN ?
5863 if (
flags & MUI_QUERY_RESOURCE_TYPES)
5865 if (
type == MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN)
5869 if (off <
sizeof(*
info)) off =
sizeof(*info);
5882 info->dwVersion = MUI_FILEINFO_VERSION;
5884 if (
flags & MUI_QUERY_CHECKSUM)
5889 if (
flags & MUI_QUERY_LANGUAGE_NAME)
5895 mui->fallback_lang_size);
5896 off += mui->fallback_lang_size;
5898 if (
type == MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI && mui->
lang_off)
5901 memcpy(
info->abBuffer, ((
BYTE *)mui) + mui->lang_off, mui->lang_size);
5902 off += mui->lang_size;
5905 if (
flags & MUI_QUERY_RESOURCE_TYPES &&
type & MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN)
5911 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->ln_type_id_off, mui->ln_type_id_size);
5912 off += mui->ln_type_id_size;
5917 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->ln_type_name_off, mui->ln_type_name_size);
5918 off += mui->ln_type_name_size;
5924 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->mui_type_id_off, mui->mui_type_id_size);
5925 off += mui->mui_type_id_size;
5930 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->mui_type_name_off, mui->mui_type_name_size);
5931 off += mui->mui_type_name_size;
5934 else if(
flags & MUI_QUERY_RESOURCE_TYPES)
5940 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->ln_type_id_off, mui->ln_type_id_size);
5941 off += mui->ln_type_id_size;
5946 memcpy(
info->abBuffer + off, ((
BYTE *)mui) + mui->ln_type_name_off, mui->ln_type_name_size);
5947 off += mui->ln_type_name_size;
5965 debugstr_w(language), languagelen, muipath, muipathlen, enumerator );
6016 const NLS_LOCALE_DATA *
locale;
6063 const NLS_LOCALE_DATA *
locale;
6135 if (
info->dwNLSVersionInfoSize <
sizeof(*
info) &&
6144 info->dwNLSVersion =
info->dwDefinedVersion =
sort.version;
6145 if (
info->dwNLSVersionInfoSize >=
sizeof(*
info))
6148 info->guidCustomVersion = sortid->
id;
6334 dynamic = &local_info;
6372 info->StandardBias =
data.std_bias;
6373 info->DaylightBias =
data.dlt_bias;
6374 info->StandardDate =
data.std_date;
6375 info->DaylightDate =
data.dlt_date;
6440 WARN(
"Unknown geoclass %ld\n", geoclass);
6761 if (
info->dwNLSVersionInfoSize !=
sizeof(*
info) &&
6771 for (
i = 0;
i <
len;
i++)
6802 if (
info->dwNLSVersionInfoSize <
sizeof(*
info) &&
6850 if (!once++)
FIXME(
"unsupported lparam %Ix\n",
handle );
6861 TRACE(
"(%s,0x%08lx,%s,%d,%p,%d)\n",
6864 flags &= ~LOCALE_USE_CP_ACP;
6882 FIXME(
"LCMAP_SORTHANDLE not supported\n" );
6899 INT ret = 0, srclenW, dstlenW;
6911 if (srclenW) srcW = bufW;
6942 if (!dstlenW)
goto done;
6967 const NLS_LOCALE_LCID_INDEX *
entry;
6982 WARN(
"unknown locale %04lx\n",
lcid );
7096 static const WCHAR valid[] =
L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
7107 for (
p = tmp +
wcslen(tmp) - 1;
p >= tmp;
p--)
if (*
p ==
'-' || *
p ==
'_')
break;
7108 if (
p <= tmp)
break;
7197 while (*
str ==
'h' || *
str ==
'H') *
str++ = (*
data ==
'0' ?
'h' :
'H');
7432 TRACE(
"geo_name %p, count %d.\n", geo_name,
count );
7434 if (
count && !geo_name)
7448 if (geo && geo->
id != 39070)
7471 const struct geo_id *geo;
7486 UINT last_digit = grouping % 10;
7491 if (last_digit == 0)
7496 if (grouping % 10 == 0)
7502 *
p++ =
'0' + grouping % 10;
7510 if (last_digit != 0)
7514 if (last_digit == ~0)
7592 while (grouping[0] ==
'0' && grouping[1] ==
';')
7601 limit = *grouping -
'0';
7602 if (grouping[1] ==
';')
7611 if (grouping[0] ==
'0' && grouping[1] !=
';')
7645 else if (lzero) *(--
end) =
'0';
7653 WCHAR *
num, fmt_decimal[4], fmt_thousand[4], fmt_neg[5], grouping[24], output[256];
7654 const WCHAR *decimal_sep = fmt_decimal, *thousand_sep = fmt_thousand;
7680 decimal_sep =
format->lpDecimalSep;
7681 thousand_sep =
format->lpThousandSep;
7684 lzero =
format->LeadingZero;
7686 if (!decimal_sep || !thousand_sep)
7700 decimal_sep, thousand_sep, grouping,
digits, lzero )))
7747 WCHAR *
num, fmt_decimal[4], fmt_thousand[4], fmt_symbol[13], fmt_neg[5], grouping[20], output[256];
7748 const WCHAR *decimal_sep = fmt_decimal, *thousand_sep = fmt_thousand, *symbol = fmt_symbol;
7777 decimal_sep =
format->lpDecimalSep;
7778 thousand_sep =
format->lpThousandSep;
7779 symbol =
format->lpCurrencySymbol;
7782 lzero =
format->LeadingZero;
7783 pos_order =
format->PositiveOrder;
7784 neg_order =
format->NegativeOrder;
7785 if (!decimal_sep || !thousand_sep || !symbol)
7799 decimal_sep, thousand_sep, grouping,
digits, lzero )))
7951 case DATE_YEARMONTH:
8009 if (
format[
i] !=
'd')
continue;
8078 if (
time.wMilliseconds > 999 ||
time.wSecond > 59 ||
time.wMinute > 59 ||
time.wHour > 23)
8183 TRACE(
"(%04lx,%lx,%s,%p,%p,%d)\n",
lcid,
flags,
debugstr_w(
value),
format,
buffer,
len );
8203 TRACE(
"(%s,%lx,%s,%p,%p,%d)\n",
debugstr_w(
name),
flags,
debugstr_w(
value),
format,
buffer,
len );
8222 TRACE(
"(%04lx,%lx,%s,%p,%p,%d)\n",
lcid,
flags,
debugstr_w(
value),
format,
buffer,
len );
8242 TRACE(
"(%s,%lx,%s,%p,%p,%d)\n",
debugstr_w(
name),
flags,
debugstr_w(
value),
format,
buffer,
len );
8254 WCHAR formatW[128], output[128];
8257 TRACE(
"(0x%04lx,0x%08lx,%p,%s,%p,%d)\n",
lcid,
flags,
time,
debugstr_a(
format),
buffer,
len );
8290 TRACE(
"(%04lx,%lx,%p,%s,%p,%d)\n",
lcid,
flags, systime,
debugstr_w(
format),
buffer,
len );
8310 TRACE(
"(%s,%lx,%p,%s,%p,%d)\n",
debugstr_w(
name),
flags, systime,
debugstr_w(
format),
buffer,
len );
8322 WCHAR formatW[128], output[128];
8325 TRACE(
"(0x%04lx,0x%08lx,%p,%s,%p,%d)\n",
lcid,
flags,
time,
debugstr_a(
format),
buffer,
len );
8358 TRACE(
"(%04lx,%lx,%p,%s,%p,%d)\n",
lcid,
flags, systime,
debugstr_w(
format),
buffer,
len );
8378 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)
int WINAPI LCIDToLocaleName(_In_ LCID Locale, _Out_writes_opt_(cchName) LPWSTR lpName, _In_ int cchName, _In_ DWORD dwFlags)
#define DECLSPEC_HOTPATCH
#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 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
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 struct @467 cached_tzname
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 const struct @465 codepage_names[]
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)
_ACRTIMP __msvcrt_ulong __cdecl wcstoul(const wchar_t *, wchar_t **, int)
_ACRTIMP __msvcrt_long __cdecl wcstol(const wchar_t *, wchar_t **, int)
_ACRTIMP size_t __cdecl wcsspn(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
_ACRTIMP int __cdecl system(const char *)
_ACRTIMP size_t __cdecl strlen(const char *)
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
int const JOCTET unsigned int datalen
static const int digits[]
BOOL WINAPI GetUserPreferredUILanguages(DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static NTSTATUS *static PWSTR CURDIR *static HMODULE hmod
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
static const LARGE_INTEGER *static const HANDLE const LARGE_INTEGER *static PSLIST_ENTRY PSLIST_ENTRY last
static DWORD LPDWORD LPCSTR DWORD srclen
static DWORD LPDWORD reslen
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)
#define LANGIDFROMLCID(l)
#define SUBLANG_CHINESE_TRADITIONAL
#define SUBLANG_CHINESE_HONGKONG
#define SUBLANG_SPANISH_MODERN
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
NTSTATUS NTAPI RtlFormatMessage(IN PWSTR Message, IN ULONG MaxWidth OPTIONAL, IN BOOLEAN IgnoreInserts, IN BOOLEAN ArgumentsAreAnsi, IN BOOLEAN ArgumentsAreAnArray, IN va_list *Arguments, OUT PWSTR Buffer, IN ULONG BufferSize, OUT PULONG ReturnLength OPTIONAL)
#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::@468 status
struct sortkey key_special
struct sortkey key_diacritic
struct sortkey key_primary
struct sortkey key_extra[4]
#define TIME_ZONE_ID_INVALID
#define STATUS_INVALID_PARAMETER
#define STATUS_OBJECT_NAME_NOT_FOUND
static int __cdecl compr(const void *a, const void *b)
static const WCHAR lang[]
char system_dir[MAX_PATH]
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 FORMAT_MESSAGE_ALLOCATE_BUFFER
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
#define FORMAT_MESSAGE_FROM_HMODULE
NTSYSAPI NTSTATUS WINAPI RtlGetLocaleFileMappingAddress(void **, LCID *, LARGE_INTEGER *)
NTSYSAPI void WINAPI RtlInitCodePageTable(USHORT *, CPTABLEINFO *)
NTSYSAPI NTSTATUS WINAPI RtlNormalizeString(ULONG, const WCHAR *, INT, WCHAR *, INT *)
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI NTSTATUS WINAPI RtlGetThreadPreferredUILanguages(DWORD, ULONG *, WCHAR *, ULONG *)
NTSYSAPI NTSTATUS WINAPI RtlUnicodeToUTF8N(LPSTR, DWORD, LPDWORD, LPCWSTR, DWORD)
NTSYSAPI NTSTATUS WINAPI RtlIdnToNameprepUnicode(DWORD, const WCHAR *, INT, WCHAR *, INT *)
NTSYSAPI NTSTATUS WINAPI RtlSetProcessPreferredUILanguages(DWORD, PCZZWSTR, ULONG *)
NTSYSAPI NTSTATUS WINAPI RtlSetThreadPreferredUILanguages(DWORD, PCZZWSTR, ULONG *)
NTSYSAPI NTSTATUS WINAPI RtlGetProcessPreferredUILanguages(DWORD, ULONG *, WCHAR *, ULONG *)
NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION *)
NTSYSAPI NTSTATUS WINAPI RtlIdnToAscii(DWORD, const WCHAR *, INT, WCHAR *, INT *)
NTSYSAPI NTSTATUS WINAPI RtlGetUserPreferredUILanguages(DWORD, ULONG, ULONG *, WCHAR *, ULONG *)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
NTSYSAPI NTSTATUS WINAPI RtlIdnToUnicode(DWORD, const WCHAR *, INT, WCHAR *, INT *)
NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG, ULONG, void *, void **, SIZE_T *)
NTSYSAPI NTSTATUS WINAPI RtlIsNormalizedString(ULONG, const WCHAR *, INT, BOOLEAN *)
NTSYSAPI NTSTATUS WINAPI RtlGetSystemPreferredUILanguages(DWORD, ULONG, ULONG *, WCHAR *, ULONG *)
#define HRESULT_FACILITY(hr)
#define HRESULT_SEVERITY(hr)
#define ERROR_NO_WORK_DONE
#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 CAL_SSHORTESTDAYNAME1
#define LOCALE_SNATIVEDISPLAYNAME
#define CAL_SABBREVMONTHNAME6
#define CAL_SABBREVMONTHNAME12
#define LOCALE_SOPENTYPELANGUAGETAG
#define LOCALE_SABBREVMONTHNAME9
BOOL(CALLBACK * LOCALE_ENUMPROCEX)(LPWSTR, DWORD, LPARAM)
#define LOCALE_SLOCALIZEDCOUNTRYNAME
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_SENGLISHDISPLAYNAME
#define LOCALE_SABBREVMONTHNAME2
#define LOCALE_INEGSIGNPOSN
BOOL(CALLBACK * CALINFO_ENUMPROCW)(LPWSTR)
#define CAL_SRELATIVELONGDATE
#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 CAL_ITWODIGITYEARMAX
#define LOCALE_IPOSITIVEPERCENT
#define CAL_SSHORTESTDAYNAME3
#define CAL_SABBREVMONTHNAME11
#define LOCALE_SLOCALIZEDDISPLAYNAME
BOOL(CALLBACK * DATEFMT_ENUMPROCW)(LPWSTR)
#define CAL_SSHORTESTDAYNAME4
#define LOCALE_SNATIVELANGNAME
#define CAL_SSHORTESTDAYNAME2
#define CAL_SENGLISHERANAME
#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 CAL_SSHORTESTDAYNAME7
#define ENUM_ALL_CALENDARS
#define LOCALE_IFIRSTDAYOFWEEK
#define LOCALE_SABBREVMONTHNAME6
#define LOCALE_SMONTHNAME6
#define SORT_DIGITSASNUMBERS
#define LOCALE_SABBREVLANGNAME
#define LOCALE_SENGCOUNTRY
#define CAL_SSHORTESTDAYNAME6
#define CAL_SENGLISHABBREVERANAME
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_SSHORTESTDAYNAME5
#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)
#define RtlUshortByteSwap(_x)