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]
132 0, 0, { (
DWORD_PTR)(__FILE__
": NLS_Formats") }
150 if (szBuff[0] && szBuff[1] ==
';' && szBuff[2] !=
'0')
151 dwVal = (szBuff[0] -
'0') * 10 + (szBuff[2] -
'0');
154 const WCHAR* iter = szBuff;
156 while(*iter >=
'0' && *iter <=
'9')
157 dwVal = dwVal * 10 + (*iter++ -
'0');
181#define GET_LOCALE_NUMBER(num, type) num = NLS_GetLocaleNumber(lcid, type|dwFlags); \
182 TRACE( #type ": %d (%08x)\n", (DWORD)num, (DWORD)num)
184#define GET_LOCALE_STRING(str, type) str = NLS_GetLocaleString(lcid, type|dwFlags); \
185 TRACE( #type ": %s\n", debugstr_w(str))
195 static const LCTYPE NLS_LocaleIndices[] = {
243 TRACE(
"Creating new cache entry\n");
262 WARN(
"LOCALE_SGROUPING (%d) unhandled, please report!\n",
278 WARN(
"LOCALE_SMONGROUPING (%d) unhandled, please report!\n",
286 WARN(
"LOCALE_INEGCURR (%d) unhandled, please report!\n",
293 WARN(
"LOCALE_IPOSCURR (%d) unhandled,please report!\n",
307 for (
i = 0;
i < 12;
i++)
323 node = NLS_CachedFormats;
329 node = NLS_CachedFormats = new_node;
391#define IsLiteralMarker(p) (p == '\'')
392#define IsDateFmtChar(p) (p == 'd'||p == 'M'||p == 'y'||p == 'g')
393#define IsTimeFmtChar(p) (p == 'H'||p == 'h'||p == 'm'||p == 's'||p == 't')
397#define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY | DATE_USE_ALT_CALENDAR)
399#define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY)
401#define TIME_FORMAT_FLAGS (TIME_TIMEVARSONLY|TIME_FORCE24HOURFORMAT| \
402 TIME_NOMINUTESORSECONDS|TIME_NOSECONDS| \
421 INT lastFormatPos = 0;
427 goto invalid_parameter;
440 if ((
dwFlags & (DATE_LTRREADING|DATE_RTLREADING)) == (DATE_LTRREADING|DATE_RTLREADING))
442 else if (
dwFlags & (DATE_LTRREADING|DATE_RTLREADING))
443 FIXME(
"Unsupported flags: DATE_LTRREADING/DATE_RTLREADING\n");
489 memset(&st, 0,
sizeof(st));
495 goto invalid_parameter;
505 goto invalid_parameter;
529 else if (cchWritten >= cchOut)
545 int count = 0, dwLen;
557 if (fmtChar !=
'M') d_dd_formatted =
FALSE;
567 dwVal = lpTime->
wDay;
569 d_dd_formatted =
TRUE;
604 if (*
format !=
' ')
break;
611 while (*++
format ==
'd') dcount++;
661 dwVal = lpTime->
wYear;
666 dwVal = lpTime->
wYear % 100;
673 if (IS_LCID_JAPANESE(
lcid))
703 FIXME(
"Should be using GetCalendarInfo(CAL_SERASTRING), defaulting to 'AD'\n");
717 dwVal = lpTime->
wHour == 0 ? 12 : (lpTime->
wHour - 1) % 12 + 1;
725 dwVal = lpTime->
wHour;
732 cchWritten = lastFormatPos;
746 cchWritten = lastFormatPos;
760 cchWritten = lastFormatPos;
766 szAdd = lpTime->
wHour < 12 ?
node->szShortAM :
node->szShortPM;
773 if (szAdd ==
buff &&
buff[0] ==
'\0')
775 static const WCHAR fmtW[] = {
'%',
'.',
'*',
'd',0};
780 dwLen = szAdd ?
strlenW(szAdd) : 0;
784 if (cchWritten + dwLen < cchOut)
785 memcpy(lpStr + cchWritten, szAdd, dwLen *
sizeof(
WCHAR));
788 memcpy(lpStr + cchWritten, szAdd, (cchOut - cchWritten) *
sizeof(
WCHAR));
793 lastFormatPos = cchWritten;
800 else if (cchWritten >= cchOut)
802 else if (!bSkipping || *
lpFormat ==
' ')
814 if (cchWritten >= cchOut)
817 lpStr[cchWritten] =
'\0';
821 TRACE(
"returning length=%d, output=%s\n", cchWritten,
debugstr_w(lpStr));
825 TRACE(
"returning 0, (ERROR_INSUFFICIENT_BUFFER)\n");
848 WCHAR szFormat[128], szOut[128];
881 lpStr ? szOut :
NULL, cchOut);
887 else if (cchOut && iRet)
946#if _WIN32_WINNT >= 0x600
976 if (calendar !=
NULL)
1054#if _WIN32_WINNT >= 0x600
1132 LPSTR lpNumberStr,
int cchOut)
1135 WCHAR szDec[8], szGrp[8], szIn[128], szOut[128];
1168 fmt.lpDecimalSep = szDec;
1173 fmt.lpThousandSep = szGrp;
1186 lpNumberStr ? szOut :
NULL, cchOut);
1188 if (szOut[0] && lpNumberStr)
1194#define NF_ISNEGATIVE 0x1
1195#define NF_ISREAL 0x2
1196#define NF_DIGITS 0x4
1197#define NF_DIGITS_OUT 0x8
1198#define NF_ROUND 0x10
1201#define NLS_NEG_PARENS 0
1202#define NLS_NEG_LEFT 1
1203#define NLS_NEG_LEFT_SPACE 2
1204#define NLS_NEG_RIGHT 3
1205#define NLS_NEG_RIGHT_SPACE 4
1214 LPWSTR lpNumberStr,
int cchOut)
1218 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc;
1219 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0;
1225 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpNumberStr) ||
1245 lpszNegStart = lpszNeg = szNegBuff;
1247 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1259 if (*szSrc >=
'0' && *szSrc <=
'9')
1265 else if (*szSrc ==
'-')
1271 else if (*szSrc ==
'.')
1296 while (lpszNeg >= lpszNegStart)
1297 *szOut-- = *lpszNeg--;
1309 while (*szSrc !=
'.')
1311 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1314 dwState &= ~NF_ROUND;
1324 if (dwDecimals <= lpFormat->NumDigits)
1326 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1327 while (dwDecimals--)
1334 while (dwDecimals--)
1336 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1339 dwState &= ~NF_ROUND;
1346 while (*szSrc !=
'.')
1354 dwState &= ~NF_ROUND;
1355 *szOut-- = (*szSrc)+1;
1360 *szOut-- = *szSrc--;
1365 while (lpszDec >=
lpFormat->lpDecimalSep)
1366 *szOut-- = *lpszDec--;
1372 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1380 dwState &= ~NF_ROUND;
1381 *szOut-- = (*szSrc)+1;
1386 *szOut-- = *szSrc--;
1389 dwCurrentGroupCount++;
1390 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1394 while (lpszGrp >=
lpFormat->lpThousandSep)
1395 *szOut-- = *lpszGrp--;
1397 dwCurrentGroupCount = 0;
1421 while (lpszNeg >= lpszNegStart)
1422 *szOut-- = *lpszNeg--;
1435 memcpy(lpNumberStr, szOut, cchOut *
sizeof(
WCHAR));
1436 lpNumberStr[cchOut - 1] =
'\0';
1448#if _WIN32_WINNT >= 0x600
1498 LPSTR lpCurrencyStr,
int cchOut)
1501 WCHAR szDec[8], szGrp[8], szCy[8], szIn[128], szOut[128];
1534 fmt.lpDecimalSep = szDec;
1539 fmt.lpThousandSep = szGrp;
1544 fmt.lpCurrencySymbol = szCy;
1557 lpCurrencyStr ? szOut :
NULL, cchOut);
1559 if (szOut[0] && lpCurrencyStr)
1565#define CF_PARENS 0x1
1566#define CF_MINUS_LEFT 0x2
1567#define CF_MINUS_RIGHT 0x4
1568#define CF_MINUS_BEFORE 0x8
1569#define CF_CY_LEFT 0x10
1570#define CF_CY_RIGHT 0x20
1571#define CF_CY_SPACE 0x40
1580 LPWSTR lpCurrencyStr,
int cchOut)
1582 static const BYTE NLS_NegCyFormats[16] =
1601 static const BYTE NLS_PosCyFormats[4] =
1610 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc, *lpszCy, *lpszCyStart;
1611 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0, dwFmt;
1617 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpCurrencyStr) ||
1640 lpszNegStart = lpszNeg = szNegBuff;
1644 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1645 lpszCyStart =
lpFormat->lpCurrencySymbol;
1646 lpszCy = lpszCyStart +
strlenW(lpszCyStart) - 1;
1656 if (*szSrc >=
'0' && *szSrc <=
'9')
1662 else if (*szSrc ==
'-')
1668 else if (*szSrc ==
'.')
1684 dwFmt = NLS_NegCyFormats[
lpFormat->NegativeOrder];
1686 dwFmt = NLS_PosCyFormats[
lpFormat->PositiveOrder];
1698 while (lpszNeg >= lpszNegStart)
1699 *szOut-- = *lpszNeg--;
1700 dwFmt &= ~CF_MINUS_RIGHT;
1706 while (lpszCy >= lpszCyStart)
1707 *szOut-- = *lpszCy--;
1720 while (*szSrc !=
'.')
1722 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1725 dwState &= ~NF_ROUND;
1735 if (dwDecimals <= lpFormat->NumDigits)
1737 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1738 while (dwDecimals--)
1745 while (dwDecimals--)
1747 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1750 dwState &= ~NF_ROUND;
1757 while (*szSrc !=
'.')
1765 dwState &= ~NF_ROUND;
1766 *szOut-- = (*szSrc)+1;
1771 *szOut-- = *szSrc--;
1775 while (lpszDec >=
lpFormat->lpDecimalSep)
1776 *szOut-- = *lpszDec--;
1782 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1790 dwState &= ~NF_ROUND;
1791 *szOut-- = (*szSrc)+1;
1796 *szOut-- = *szSrc--;
1799 dwCurrentGroupCount++;
1800 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1804 while (lpszGrp >=
lpFormat->lpThousandSep)
1805 *szOut-- = *lpszGrp--;
1807 dwCurrentGroupCount = 0;
1824 while (lpszNeg >= lpszNegStart)
1825 *szOut-- = *lpszNeg--;
1826 dwFmt &= ~CF_MINUS_LEFT;
1834 while (lpszCy >= lpszCyStart)
1835 *szOut-- = *lpszCy--;
1848 memcpy(lpCurrencyStr, szOut, iRet *
sizeof(
WCHAR));
1851 memcpy(lpCurrencyStr, szOut, cchOut *
sizeof(
WCHAR));
1852 lpCurrencyStr[cchOut - 1] =
'\0';
1864#if _WIN32_WINNT >= 0x600
1940 case DATE_YEARMONTH:
1941 lctype = LOCALE_SYEARMONTH;
1944 FIXME(
"Unknown date format (0x%08x)\n", ctxt->
flags);
2046#if _WIN32_WINNT >= 0x600
2055 ctxt.u.callbackexex =
proc;
2056 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2059 ctxt.unicode =
TRUE;
2099 FIXME(
"Unknown time format (%d)\n", ctxt->
flags);
2170#if _WIN32_WINNT >= 0x600
2179 ctxt.u.callbackex =
proc;
2180 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2183 ctxt.unicode =
TRUE;
2264 if (ctxt->
caltype & CAL_RETURN_NUMBER)
2280 ERR(
"Buffer resizing disorder: was %d, requested %d.\n", bufSz, newSz);
2284 WARN(
"Buffer too small; resizing to %d bytes.\n", bufSz);
2317 if ((iter ==
NULL) || (*iter == 0))
2321 while ((*iter >=
'0') && (*iter <=
'9'))
2322 calendar = calendar * 10 + *iter++ -
'0';
2418#if _WIN32_WINNT >= 0x600
2427 TRACE(
"(%p,%s,0x%08x,%p,0x%08x,0x%ld)\n", calinfoproc,
debugstr_w(
locale),
calendar,
reserved,
caltype,
lParam);
2430 ctxt.u.callbackexex = calinfoproc;
2431 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2435 ctxt.unicode =
TRUE;
2447 int ret, cchDataW = cchData;
2451 if (!(CalType & CAL_USE_CP_ACP))
2476 if (!cchData && !(CalType & CAL_RETURN_NUMBER))
2482 if(
ret && lpCalDataW && lpCalData)
2488 else if (CalType & CAL_RETURN_NUMBER)
2502 static const LCTYPE caltype_lctype_map[] = {
2552#if (WINVER >= 0x0600)
2553 LOCALE_SSHORTESTDAYNAME1,
2554 LOCALE_SSHORTESTDAYNAME2,
2555 LOCALE_SSHORTESTDAYNAME3,
2556 LOCALE_SSHORTESTDAYNAME4,
2557 LOCALE_SSHORTESTDAYNAME5,
2558 LOCALE_SSHORTESTDAYNAME6,
2559 LOCALE_SSHORTESTDAYNAME7,
2564 DWORD localeflags = 0;
2567 if (CalType & CAL_NOUSEROVERRIDE)
2568 FIXME(
"flag CAL_NOUSEROVERRIDE used, not fully implemented\n");
2569 if (CalType & CAL_USE_CP_ACP)
2570 FIXME(
"flag CAL_USE_CP_ACP used, not fully implemented\n");
2572 if (CalType & CAL_RETURN_NUMBER) {
2578 if (lpCalData !=
NULL)
2579 WARN(
"lpCalData not NULL (%p) when it should!\n", lpCalData);
2581 WARN(
"cchData not 0 (%d) when it should!\n", cchData);
2583 if (lpValue !=
NULL)
2584 WARN(
"lpValue not NULL (%p) when it should!\n", lpValue);
2590 calinfo = CalType & 0xffff;
2595 if (CalType & CAL_RETURN_GENITIVE_NAMES)
2602 if (IS_LCID_JAPANESE(Locale))
2604 if (CalType & CAL_RETURN_NUMBER)
2611 static const WCHAR fmtW[] = {
'%',
'u',0};
2614 if (!lpCalData)
return ret;
2625 if (CalType & CAL_RETURN_NUMBER)
2631 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2634 lpCalData[0] = 0x548C;
2635 lpCalData[1] = 0x66A6;
2640 FIXME(
"Unimplemented caltype %d\n", calinfo);
2641 if (lpCalData) *lpCalData = 0;
2645 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2650 if (CalType & CAL_RETURN_NUMBER)
2652 *lpValue = pEra->
wYear;
2657 static const WCHAR fmtW[] = {
'%',
'u',0};
2660 if (!lpCalData)
return ret;
2677 FIXME(
"Unimplemented caltype %d\n", calinfo);
2681 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2687 return strlenW(lpCalData) + 1;
2696 FIXME(
"Unimplemented caltype %d\n", calinfo);
2740 case CAL_SYEARMONTH:
2741 return GetLocaleInfoW(Locale, caltype_lctype_map[calinfo] | localeflags, lpCalData, cchData);
2742 case CAL_ITWODIGITYEARMAX:
2744 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2746 if (CalType & CAL_RETURN_NUMBER)
2753 static const WCHAR fmtW[] = {
'%',
'u',0};
2756 if (!lpCalData)
return ret;
2767 if (CalType & CAL_RETURN_NUMBER)
2769 *lpValue = CALINFO_MAX_YEAR;
2774 static const WCHAR fmtW[] = {
'%',
'u',0};
2777 if (!lpCalData)
return ret;
2789 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2795 return strlenW(lpCalData) + 1;
2802 FIXME(
"Unknown caltype %d\n", calinfo);
2809#if _WIN32_WINNT >= 0x600
2820 FIXME(
"(%s, %d, %p, 0x%08x, %p, %d, %p): semi-stub\n",
debugstr_w(
locale),
calendar, lpReserved,
caltype,
2832 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2833 Locale, Calendar, CalType,
debugstr_a(lpCalData));
2844 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2845 Locale, Calendar, CalType,
debugstr_w(lpCalData));
#define CAL_SABBREVERASTRING
#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
enum enum_callback_type type
CALINFO_ENUMPROCEXW callbackex
union enumcalendar_context::@463 u
CALINFO_ENUMPROCW callback
CALINFO_ENUMPROCEXEX callbackexex
DATEFMT_ENUMPROCEXW callbackex
DATEFMT_ENUMPROCW callback
union enumdateformats_context::@461 u
DATEFMT_ENUMPROCEXEX callbackexex
enum enum_callback_type type
TIMEFMT_ENUMPROCW callback
TIMEFMT_ENUMPROCEX callbackex
union enumtimeformats_context::@462 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