36#define _WIN32_WINNT DLL_EXPORT_VERSION
37#define WINVER DLL_EXPORT_VERSION
40#define LOCALE_SSHORTESTDAYNAME1 96
41#define LOCALE_SSHORTESTDAYNAME2 97
42#define LOCALE_SSHORTESTDAYNAME3 98
43#define LOCALE_SSHORTESTDAYNAME4 99
44#define LOCALE_SSHORTESTDAYNAME5 100
45#define LOCALE_SSHORTESTDAYNAME6 101
46#define LOCALE_SSHORTESTDAYNAME7 102
48#define CRITICAL_SECTION RTL_CRITICAL_SECTION
49#define CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG
50#define CALINFO_MAX_YEAR 2029
52#define IS_LCID_JAPANESE(lcid) PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_JAPANESE
54#ifndef CAL_SABBREVERASTRING
55 #define CAL_SABBREVERASTRING 0x00000039
70#include "wine/unicode.h"
74#include "kernel_private.h"
80#define DATE_DATEVARSONLY 0x0100
81#define TIME_TIMEVARSONLY 0x0200
92#define NLS_NUM_CACHED_STRINGS 57
108#define GetNegative(fmt) fmt->lppszStrings[0]
109#define GetLongDate(fmt) fmt->lppszStrings[1]
110#define GetShortDate(fmt) fmt->lppszStrings[2]
111#define GetTime(fmt) fmt->lppszStrings[3]
112#define GetAM(fmt) fmt->lppszStrings[54]
113#define GetPM(fmt) fmt->lppszStrings[55]
114#define GetYearMonth(fmt) fmt->lppszStrings[56]
116#define GetLongDay(fmt,day) fmt->lppszStrings[4 + day]
117#define GetShortDay(fmt,day) fmt->lppszStrings[11 + day]
118#define GetLongMonth(fmt,mth) fmt->lppszStrings[18 + mth]
119#define GetGenitiveMonth(fmt,mth) fmt->lppszStrings[30 + mth]
120#define GetShortMonth(fmt,mth) fmt->lppszStrings[42 + mth]
129 0, 0, { (
DWORD_PTR)(__FILE__
": NLS_Formats") }
146 if (szBuff[0] && szBuff[1] ==
';' && szBuff[2] !=
'0')
147 dwVal = (szBuff[0] -
'0') * 10 + (szBuff[2] -
'0');
150 const WCHAR* iter = szBuff;
152 while(*iter >=
'0' && *iter <=
'9')
153 dwVal = dwVal * 10 + (*iter++ -
'0');
177#define GET_LOCALE_NUMBER(num, type) num = NLS_GetLocaleNumber(lcid, type|dwFlags); \
178 TRACE( #type ": %d (%08x)\n", (DWORD)num, (DWORD)num)
180#define GET_LOCALE_STRING(str, type) str = NLS_GetLocaleString(lcid, type|dwFlags); \
181 TRACE( #type ": %s\n", debugstr_w(str))
191 static const LCTYPE NLS_LocaleIndices[] = {
239 TRACE(
"Creating new cache entry\n");
258 WARN(
"LOCALE_SGROUPING (%d) unhandled, please report!\n",
274 WARN(
"LOCALE_SMONGROUPING (%d) unhandled, please report!\n",
282 WARN(
"LOCALE_INEGCURR (%d) unhandled, please report!\n",
289 WARN(
"LOCALE_IPOSCURR (%d) unhandled,please report!\n",
303 for (
i = 0;
i < 12;
i++)
319 node = NLS_CachedFormats;
325 node = NLS_CachedFormats = new_node;
387#define IsLiteralMarker(p) (p == '\'')
388#define IsDateFmtChar(p) (p == 'd'||p == 'M'||p == 'y'||p == 'g')
389#define IsTimeFmtChar(p) (p == 'H'||p == 'h'||p == 'm'||p == 's'||p == 't')
393#define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY | DATE_USE_ALT_CALENDAR)
395#define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY)
397#define TIME_FORMAT_FLAGS (TIME_TIMEVARSONLY|TIME_FORCE24HOURFORMAT| \
398 TIME_NOMINUTESORSECONDS|TIME_NOSECONDS| \
417 INT lastFormatPos = 0;
423 goto invalid_parameter;
436 if ((
dwFlags & (DATE_LTRREADING|DATE_RTLREADING)) == (DATE_LTRREADING|DATE_RTLREADING))
438 else if (
dwFlags & (DATE_LTRREADING|DATE_RTLREADING))
439 FIXME(
"Unsupported flags: DATE_LTRREADING/DATE_RTLREADING\n");
485 memset(&st, 0,
sizeof(st));
491 goto invalid_parameter;
501 goto invalid_parameter;
525 else if (cchWritten >= cchOut)
541 int count = 0, dwLen;
553 if (fmtChar !=
'M') d_dd_formatted =
FALSE;
563 dwVal = lpTime->
wDay;
565 d_dd_formatted =
TRUE;
600 if (*
format !=
' ')
break;
607 while (*++
format ==
'd') dcount++;
657 dwVal = lpTime->
wYear;
662 dwVal = lpTime->
wYear % 100;
669 if (IS_LCID_JAPANESE(
lcid))
699 FIXME(
"Should be using GetCalendarInfo(CAL_SERASTRING), defaulting to 'AD'\n");
713 dwVal = lpTime->
wHour == 0 ? 12 : (lpTime->
wHour - 1) % 12 + 1;
721 dwVal = lpTime->
wHour;
728 cchWritten = lastFormatPos;
742 cchWritten = lastFormatPos;
756 cchWritten = lastFormatPos;
762 szAdd = lpTime->
wHour < 12 ?
node->szShortAM :
node->szShortPM;
769 if (szAdd ==
buff &&
buff[0] ==
'\0')
771 static const WCHAR fmtW[] = {
'%',
'.',
'*',
'd',0};
776 dwLen = szAdd ?
strlenW(szAdd) : 0;
780 if (cchWritten + dwLen < cchOut)
781 memcpy(lpStr + cchWritten, szAdd, dwLen *
sizeof(
WCHAR));
784 memcpy(lpStr + cchWritten, szAdd, (cchOut - cchWritten) *
sizeof(
WCHAR));
789 lastFormatPos = cchWritten;
796 else if (cchWritten >= cchOut)
798 else if (!bSkipping || *
lpFormat ==
' ')
810 if (cchWritten >= cchOut)
813 lpStr[cchWritten] =
'\0';
817 TRACE(
"returning length=%d, output=%s\n", cchWritten,
debugstr_w(lpStr));
821 TRACE(
"returning 0, (ERROR_INSUFFICIENT_BUFFER)\n");
844 WCHAR szFormat[128], szOut[128];
877 lpStr ? szOut :
NULL, cchOut);
883 else if (cchOut && iRet)
942#if _WIN32_WINNT >= 0x600
972 if (calendar !=
NULL)
1050#if _WIN32_WINNT >= 0x600
1128 LPSTR lpNumberStr,
int cchOut)
1131 WCHAR szDec[8], szGrp[8], szIn[128], szOut[128];
1164 fmt.lpDecimalSep = szDec;
1169 fmt.lpThousandSep = szGrp;
1182 lpNumberStr ? szOut :
NULL, cchOut);
1184 if (szOut[0] && lpNumberStr)
1190#define NF_ISNEGATIVE 0x1
1191#define NF_ISREAL 0x2
1192#define NF_DIGITS 0x4
1193#define NF_DIGITS_OUT 0x8
1194#define NF_ROUND 0x10
1197#define NLS_NEG_PARENS 0
1198#define NLS_NEG_LEFT 1
1199#define NLS_NEG_LEFT_SPACE 2
1200#define NLS_NEG_RIGHT 3
1201#define NLS_NEG_RIGHT_SPACE 4
1210 LPWSTR lpNumberStr,
int cchOut)
1214 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc;
1215 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0;
1221 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpNumberStr) ||
1241 lpszNegStart = lpszNeg = szNegBuff;
1243 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1255 if (*szSrc >=
'0' && *szSrc <=
'9')
1261 else if (*szSrc ==
'-')
1267 else if (*szSrc ==
'.')
1292 while (lpszNeg >= lpszNegStart)
1293 *szOut-- = *lpszNeg--;
1305 while (*szSrc !=
'.')
1307 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1310 dwState &= ~NF_ROUND;
1320 if (dwDecimals <= lpFormat->NumDigits)
1322 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1323 while (dwDecimals--)
1330 while (dwDecimals--)
1332 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1335 dwState &= ~NF_ROUND;
1342 while (*szSrc !=
'.')
1350 dwState &= ~NF_ROUND;
1351 *szOut-- = (*szSrc)+1;
1356 *szOut-- = *szSrc--;
1361 while (lpszDec >=
lpFormat->lpDecimalSep)
1362 *szOut-- = *lpszDec--;
1368 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1376 dwState &= ~NF_ROUND;
1377 *szOut-- = (*szSrc)+1;
1382 *szOut-- = *szSrc--;
1385 dwCurrentGroupCount++;
1386 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1390 while (lpszGrp >=
lpFormat->lpThousandSep)
1391 *szOut-- = *lpszGrp--;
1393 dwCurrentGroupCount = 0;
1417 while (lpszNeg >= lpszNegStart)
1418 *szOut-- = *lpszNeg--;
1431 memcpy(lpNumberStr, szOut, cchOut *
sizeof(
WCHAR));
1432 lpNumberStr[cchOut - 1] =
'\0';
1444#if _WIN32_WINNT >= 0x600
1494 LPSTR lpCurrencyStr,
int cchOut)
1497 WCHAR szDec[8], szGrp[8], szCy[8], szIn[128], szOut[128];
1530 fmt.lpDecimalSep = szDec;
1535 fmt.lpThousandSep = szGrp;
1540 fmt.lpCurrencySymbol = szCy;
1553 lpCurrencyStr ? szOut :
NULL, cchOut);
1555 if (szOut[0] && lpCurrencyStr)
1561#define CF_PARENS 0x1
1562#define CF_MINUS_LEFT 0x2
1563#define CF_MINUS_RIGHT 0x4
1564#define CF_MINUS_BEFORE 0x8
1565#define CF_CY_LEFT 0x10
1566#define CF_CY_RIGHT 0x20
1567#define CF_CY_SPACE 0x40
1576 LPWSTR lpCurrencyStr,
int cchOut)
1578 static const BYTE NLS_NegCyFormats[16] =
1597 static const BYTE NLS_PosCyFormats[4] =
1606 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc, *lpszCy, *lpszCyStart;
1607 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0, dwFmt;
1613 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpCurrencyStr) ||
1636 lpszNegStart = lpszNeg = szNegBuff;
1640 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1641 lpszCyStart =
lpFormat->lpCurrencySymbol;
1642 lpszCy = lpszCyStart +
strlenW(lpszCyStart) - 1;
1652 if (*szSrc >=
'0' && *szSrc <=
'9')
1658 else if (*szSrc ==
'-')
1664 else if (*szSrc ==
'.')
1680 dwFmt = NLS_NegCyFormats[
lpFormat->NegativeOrder];
1682 dwFmt = NLS_PosCyFormats[
lpFormat->PositiveOrder];
1694 while (lpszNeg >= lpszNegStart)
1695 *szOut-- = *lpszNeg--;
1696 dwFmt &= ~CF_MINUS_RIGHT;
1702 while (lpszCy >= lpszCyStart)
1703 *szOut-- = *lpszCy--;
1716 while (*szSrc !=
'.')
1718 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1721 dwState &= ~NF_ROUND;
1731 if (dwDecimals <= lpFormat->NumDigits)
1733 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1734 while (dwDecimals--)
1741 while (dwDecimals--)
1743 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1746 dwState &= ~NF_ROUND;
1753 while (*szSrc !=
'.')
1761 dwState &= ~NF_ROUND;
1762 *szOut-- = (*szSrc)+1;
1767 *szOut-- = *szSrc--;
1771 while (lpszDec >=
lpFormat->lpDecimalSep)
1772 *szOut-- = *lpszDec--;
1778 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1786 dwState &= ~NF_ROUND;
1787 *szOut-- = (*szSrc)+1;
1792 *szOut-- = *szSrc--;
1795 dwCurrentGroupCount++;
1796 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1800 while (lpszGrp >=
lpFormat->lpThousandSep)
1801 *szOut-- = *lpszGrp--;
1803 dwCurrentGroupCount = 0;
1820 while (lpszNeg >= lpszNegStart)
1821 *szOut-- = *lpszNeg--;
1822 dwFmt &= ~CF_MINUS_LEFT;
1830 while (lpszCy >= lpszCyStart)
1831 *szOut-- = *lpszCy--;
1844 memcpy(lpCurrencyStr, szOut, iRet *
sizeof(
WCHAR));
1847 memcpy(lpCurrencyStr, szOut, cchOut *
sizeof(
WCHAR));
1848 lpCurrencyStr[cchOut - 1] =
'\0';
1860#if _WIN32_WINNT >= 0x600
1936 case DATE_YEARMONTH:
1937 lctype = LOCALE_SYEARMONTH;
1940 FIXME(
"Unknown date format (0x%08x)\n", ctxt->
flags);
2042#if _WIN32_WINNT >= 0x600
2051 ctxt.u.callbackexex =
proc;
2052 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2055 ctxt.unicode =
TRUE;
2095 FIXME(
"Unknown time format (%d)\n", ctxt->
flags);
2166#if _WIN32_WINNT >= 0x600
2175 ctxt.u.callbackex =
proc;
2176 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2179 ctxt.unicode =
TRUE;
2260 if (ctxt->
caltype & CAL_RETURN_NUMBER)
2276 ERR(
"Buffer resizing disorder: was %d, requested %d.\n", bufSz, newSz);
2280 WARN(
"Buffer too small; resizing to %d bytes.\n", bufSz);
2313 if ((iter ==
NULL) || (*iter == 0))
2317 while ((*iter >=
'0') && (*iter <=
'9'))
2318 calendar = calendar * 10 + *iter++ -
'0';
2414#if _WIN32_WINNT >= 0x600
2423 TRACE(
"(%p,%s,0x%08x,%p,0x%08x,0x%ld)\n", calinfoproc,
debugstr_w(
locale),
calendar,
reserved,
caltype,
lParam);
2426 ctxt.u.callbackexex = calinfoproc;
2427 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2431 ctxt.unicode =
TRUE;
2443 int ret, cchDataW = cchData;
2447 if (!(CalType & CAL_USE_CP_ACP))
2472 if (!cchData && !(CalType & CAL_RETURN_NUMBER))
2478 if(
ret && lpCalDataW && lpCalData)
2484 else if (CalType & CAL_RETURN_NUMBER)
2498 static const LCTYPE caltype_lctype_map[] = {
2548#if (WINVER >= 0x0600)
2549 LOCALE_SSHORTESTDAYNAME1,
2550 LOCALE_SSHORTESTDAYNAME2,
2551 LOCALE_SSHORTESTDAYNAME3,
2552 LOCALE_SSHORTESTDAYNAME4,
2553 LOCALE_SSHORTESTDAYNAME5,
2554 LOCALE_SSHORTESTDAYNAME6,
2555 LOCALE_SSHORTESTDAYNAME7,
2560 DWORD localeflags = 0;
2563 if (CalType & CAL_NOUSEROVERRIDE)
2564 FIXME(
"flag CAL_NOUSEROVERRIDE used, not fully implemented\n");
2565 if (CalType & CAL_USE_CP_ACP)
2566 FIXME(
"flag CAL_USE_CP_ACP used, not fully implemented\n");
2568 if (CalType & CAL_RETURN_NUMBER) {
2574 if (lpCalData !=
NULL)
2575 WARN(
"lpCalData not NULL (%p) when it should!\n", lpCalData);
2577 WARN(
"cchData not 0 (%d) when it should!\n", cchData);
2579 if (lpValue !=
NULL)
2580 WARN(
"lpValue not NULL (%p) when it should!\n", lpValue);
2586 calinfo = CalType & 0xffff;
2591 if (CalType & CAL_RETURN_GENITIVE_NAMES)
2598 if (IS_LCID_JAPANESE(Locale))
2600 if (CalType & CAL_RETURN_NUMBER)
2607 static const WCHAR fmtW[] = {
'%',
'u',0};
2610 if (!lpCalData)
return ret;
2621 if (CalType & CAL_RETURN_NUMBER)
2627 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2630 lpCalData[0] = 0x548C;
2631 lpCalData[1] = 0x66A6;
2636 FIXME(
"Unimplemented caltype %d\n", calinfo);
2637 if (lpCalData) *lpCalData = 0;
2641 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2646 if (CalType & CAL_RETURN_NUMBER)
2648 *lpValue = pEra->
wYear;
2653 static const WCHAR fmtW[] = {
'%',
'u',0};
2656 if (!lpCalData)
return ret;
2673 FIXME(
"Unimplemented caltype %d\n", calinfo);
2677 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2683 return strlenW(lpCalData) + 1;
2692 FIXME(
"Unimplemented caltype %d\n", calinfo);
2736 case CAL_SYEARMONTH:
2737 return GetLocaleInfoW(Locale, caltype_lctype_map[calinfo] | localeflags, lpCalData, cchData);
2738 case CAL_ITWODIGITYEARMAX:
2740 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2742 if (CalType & CAL_RETURN_NUMBER)
2749 static const WCHAR fmtW[] = {
'%',
'u',0};
2752 if (!lpCalData)
return ret;
2763 if (CalType & CAL_RETURN_NUMBER)
2765 *lpValue = CALINFO_MAX_YEAR;
2770 static const WCHAR fmtW[] = {
'%',
'u',0};
2773 if (!lpCalData)
return ret;
2785 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2791 return strlenW(lpCalData) + 1;
2798 FIXME(
"Unknown caltype %d\n", calinfo);
2805#if _WIN32_WINNT >= 0x600
2816 FIXME(
"(%s, %d, %p, 0x%08x, %p, %d, %p): semi-stub\n",
debugstr_w(
locale),
calendar,
lpReserved,
caltype,
2828 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2829 Locale, Calendar, CalType,
debugstr_a(lpCalData));
2840 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2841 Locale, Calendar, CalType,
debugstr_w(lpCalData));
#define CAL_SABBREVERASTRING
static DWORD const LPVOID const lpReserved
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define DEBUG_CHANNEL(args)
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_PARAMETER
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
static void cleanup(void)
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)
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
BOOL WINAPI IsValidLocale(LCID lcid, DWORD flags)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
LCID WINAPI ConvertDefaultLocale(LCID lcid)
static unsigned char buff[32768]
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLuint GLsizei bufsize
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
BOOL JapaneseEra_IsFirstYearGannen(void)
PCJAPANESE_ERA JapaneseEra_Find(const SYSTEMTIME *pst OPTIONAL)
#define JAPANESE_MAX_TWODIGITYEAR
#define memcpy(s1, s2, n)
static unsigned int number
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSTRSAFEAPI RtlStringCbCopyW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
NTSTRSAFEAPI RtlStringCchCopyW(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cchDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
LIST_ENTRY ProcessLocksList
union enumcalendar_context::@488 u
enum enum_callback_type type
CALINFO_ENUMPROCEXW callbackex
CALINFO_ENUMPROCW callback
CALINFO_ENUMPROCEXEX callbackexex
union enumdateformats_context::@486 u
DATEFMT_ENUMPROCEXW callbackex
DATEFMT_ENUMPROCW callback
DATEFMT_ENUMPROCEXEX callbackexex
enum enum_callback_type type
TIMEFMT_ENUMPROCW callback
TIMEFMT_ENUMPROCEX callbackex
union enumtimeformats_context::@487 u
enum enum_callback_type type
DWORD WINAPI GetLastError(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ERROR_INVALID_FLAGS
#define LOCALE_USE_CP_ACP
#define LOCALE_SABBREVMONTHNAME10
#define LOCALE_SMONTHNAME12
#define LOCALE_SMONTHNAME5
#define CAL_SABBREVMONTHNAME8
#define CAL_SABBREVMONTHNAME6
#define CAL_SABBREVMONTHNAME12
#define LOCALE_SABBREVMONTHNAME9
#define LOCALE_SABBREVMONTHNAME11
#define LOCALE_SABBREVDAYNAME5
#define LOCALE_SABBREVDAYNAME2
#define LOCALE_SABBREVMONTHNAME2
BOOL(CALLBACK * CALINFO_ENUMPROCW)(LPWSTR)
#define LOCALE_SMONTHNAME13
#define CAL_SABBREVMONTHNAME9
#define CAL_SABBREVMONTHNAME10
#define LOCALE_SMONTHNAME3
#define LOCALE_SSHORTTIME
#define LOCALE_SMONTHNAME11
#define LOCALE_SMONTHNAME8
#define CAL_SABBREVMONTHNAME7
#define LOCALE_SMONTHNAME4
BOOL(CALLBACK * TIMEFMT_ENUMPROCEX)(LPWSTR, LPARAM)
#define CAL_SABBREVDAYNAME7
#define LOCALE_SABBREVMONTHNAME13
#define CAL_SABBREVDAYNAME5
#define CAL_SABBREVMONTHNAME11
BOOL(CALLBACK * DATEFMT_ENUMPROCW)(LPWSTR)
#define CAL_SABBREVMONTHNAME1
#define LOCALE_SMONTHNAME7
BOOL(CALLBACK * DATEFMT_ENUMPROCEXEX)(LPWSTR, CALID, LPARAM)
#define CAL_SABBREVMONTHNAME3
int WINAPI GetDateFormatEx(LPCWSTR, DWORD, const SYSTEMTIME *, LPCWSTR, LPWSTR, int, LPCWSTR)
#define LOCALE_SSHORTDATE
BOOL(CALLBACK * CALINFO_ENUMPROCA)(LPSTR)
#define TIME_NOTIMEMARKER
BOOL(CALLBACK * TIMEFMT_ENUMPROCA)(LPSTR)
#define TIME_NOMINUTESORSECONDS
#define LOCALE_SABBREVMONTHNAME4
#define CAL_SABBREVMONTHNAME5
#define LOCALE_SABBREVDAYNAME4
#define LOCALE_SMONDECIMALSEP
BOOL(CALLBACK * CALINFO_ENUMPROCEXA)(LPSTR, CALID)
#define LOCALE_SMONTHNAME1
#define LOCALE_SABBREVMONTHNAME3
#define LOCALE_SMONTHOUSANDSEP
#define LOCALE_SABBREVMONTHNAME1
#define LOCALE_NOUSEROVERRIDE
#define LOCALE_IOPTIONALCALENDAR
#define CAL_SABBREVDAYNAME6
#define CAL_SABBREVDAYNAME4
#define LOCALE_IDEFAULTANSICODEPAGE
#define LOCALE_SABBREVDAYNAME6
#define LOCALE_SMONTHNAME2
#define LOCALE_STIMEFORMAT
#define LOCALE_SABBREVDAYNAME1
#define ENUM_ALL_CALENDARS
#define LOCALE_SABBREVMONTHNAME6
#define LOCALE_SMONTHNAME6
int WINAPI GetTimeFormatEx(LPCWSTR, DWORD, const SYSTEMTIME *, LPCWSTR, LPWSTR, int)
BOOL(CALLBACK * DATEFMT_ENUMPROCEXW)(LPWSTR, CALID)
#define LOCALE_INEGNUMBER
#define LOCALE_SNEGATIVESIGN
BOOL(CALLBACK * TIMEFMT_ENUMPROCW)(LPWSTR)
#define TIME_FORCE24HOURFORMAT
#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
BOOL(CALLBACK * DATEFMT_ENUMPROCA)(LPSTR)
#define LOCALE_SABBREVMONTHNAME7
#define LOCALE_ICALENDARTYPE
BOOL(CALLBACK * DATEFMT_ENUMPROCEXA)(LPSTR, CALID)
#define LOCALE_SABBREVMONTHNAME8
#define CAL_SABBREVDAYNAME2
#define LOCALE_SMONTHNAME10
#define LOCALE_SMONTHNAME9
BOOL(CALLBACK * CALINFO_ENUMPROCEXW)(LPWSTR, CALID)
#define CAL_SABBREVMONTHNAME13
#define LOCALE_SABBREVMONTHNAME12
#define CAL_SABBREVMONTHNAME4
#define CAL_SABBREVDAYNAME3
#define CAL_SABBREVDAYNAME1
#define LOCALE_RETURN_GENITIVE_NAMES
#define LOCALE_SABBREVDAYNAME7