34 #define CRITICAL_SECTION RTL_CRITICAL_SECTION 35 #define CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG 36 #define CALINFO_MAX_YEAR 2029 38 #define IS_LCID_JAPANESE(lcid) PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_JAPANESE 40 #ifndef CAL_SABBREVERASTRING 41 #define CAL_SABBREVERASTRING 0x00000039 47 #include "wine/port.h" 56 #include "wine/unicode.h" 60 #include "kernel_private.h" 66 #define DATE_DATEVARSONLY 0x0100 67 #define TIME_TIMEVARSONLY 0x0200 78 #define NLS_NUM_CACHED_STRINGS 57 94 #define GetNegative(fmt) fmt->lppszStrings[0] 95 #define GetLongDate(fmt) fmt->lppszStrings[1] 96 #define GetShortDate(fmt) fmt->lppszStrings[2] 97 #define GetTime(fmt) fmt->lppszStrings[3] 98 #define GetAM(fmt) fmt->lppszStrings[54] 99 #define GetPM(fmt) fmt->lppszStrings[55] 100 #define GetYearMonth(fmt) fmt->lppszStrings[56] 102 #define GetLongDay(fmt,day) fmt->lppszStrings[4 + day] 103 #define GetShortDay(fmt,day) fmt->lppszStrings[11 + day] 104 #define GetLongMonth(fmt,mth) fmt->lppszStrings[18 + mth] 105 #define GetGenitiveMonth(fmt,mth) fmt->lppszStrings[30 + mth] 106 #define GetShortMonth(fmt,mth) fmt->lppszStrings[42 + mth] 118 0, 0, { (
DWORD_PTR)(__FILE__
": NLS_Formats") }
136 if (szBuff[0] && szBuff[1] ==
';' && szBuff[2] !=
'0')
137 dwVal = (szBuff[0] -
'0') * 10 + (szBuff[2] -
'0');
140 const WCHAR* iter = szBuff;
142 while(*iter >=
'0' && *iter <=
'9')
143 dwVal = dwVal * 10 + (*iter++ -
'0');
167 #define GET_LOCALE_NUMBER(num, type) num = NLS_GetLocaleNumber(lcid, type|dwFlags); \ 168 TRACE( #type ": %d (%08x)\n", (DWORD)num, (DWORD)num) 170 #define GET_LOCALE_STRING(str, type) str = NLS_GetLocaleString(lcid, type|dwFlags); \ 171 TRACE( #type ": %s\n", debugstr_w(str)) 181 static const LCTYPE NLS_LocaleIndices[] = {
229 TRACE(
"Creating new cache entry\n");
248 WARN(
"LOCALE_SGROUPING (%d) unhandled, please report!\n",
264 WARN(
"LOCALE_SMONGROUPING (%d) unhandled, please report!\n",
272 WARN(
"LOCALE_INEGCURR (%d) unhandled, please report!\n",
279 WARN(
"LOCALE_IPOSCURR (%d) unhandled,please report!\n",
293 for (
i = 0;
i < 12;
i++)
309 node = NLS_CachedFormats;
315 node = NLS_CachedFormats = new_node;
377 #define IsLiteralMarker(p) (p == '\'') 378 #define IsDateFmtChar(p) (p == 'd'||p == 'M'||p == 'y'||p == 'g') 379 #define IsTimeFmtChar(p) (p == 'H'||p == 'h'||p == 'm'||p == 's'||p == 't') 383 #define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY | DATE_USE_ALT_CALENDAR) 385 #define DATE_FORMAT_FLAGS (DATE_DATEVARSONLY) 387 #define TIME_FORMAT_FLAGS (TIME_TIMEVARSONLY|TIME_FORCE24HOURFORMAT| \ 388 TIME_NOMINUTESORSECONDS|TIME_NOSECONDS| \ 407 INT lastFormatPos = 0;
413 goto invalid_parameter;
426 if ((
dwFlags & (DATE_LTRREADING|DATE_RTLREADING)) == (DATE_LTRREADING|DATE_RTLREADING))
428 else if (
dwFlags & (DATE_LTRREADING|DATE_RTLREADING))
429 FIXME(
"Unsupported flags: DATE_LTRREADING/DATE_RTLREADING\n");
475 memset(&st, 0,
sizeof(st));
481 goto invalid_parameter;
491 goto invalid_parameter;
515 else if (cchWritten >= cchOut)
531 int count = 0, dwLen;
543 if (fmtChar !=
'M') d_dd_formatted =
FALSE;
553 dwVal = lpTime->
wDay;
555 d_dd_formatted =
TRUE;
590 if (*
format !=
' ')
break;
597 while (*++
format ==
'd') dcount++;
647 dwVal = lpTime->
wYear;
652 dwVal = lpTime->
wYear % 100;
659 if (IS_LCID_JAPANESE(
lcid))
689 FIXME(
"Should be using GetCalendarInfo(CAL_SERASTRING), defaulting to 'AD'\n");
703 dwVal = lpTime->
wHour == 0 ? 12 : (lpTime->
wHour - 1) % 12 + 1;
711 dwVal = lpTime->
wHour;
718 cchWritten = lastFormatPos;
732 cchWritten = lastFormatPos;
746 cchWritten = lastFormatPos;
752 szAdd = lpTime->
wHour < 12 ?
node->szShortAM :
node->szShortPM;
759 if (szAdd ==
buff &&
buff[0] ==
'\0')
761 static const WCHAR fmtW[] = {
'%',
'.',
'*',
'd',0};
766 dwLen = szAdd ?
strlenW(szAdd) : 0;
770 if (cchWritten + dwLen < cchOut)
771 memcpy(lpStr + cchWritten, szAdd, dwLen *
sizeof(
WCHAR));
774 memcpy(lpStr + cchWritten, szAdd, (cchOut - cchWritten) *
sizeof(
WCHAR));
779 lastFormatPos = cchWritten;
786 else if (cchWritten >= cchOut)
788 else if (!bSkipping || *
lpFormat ==
' ')
800 if (cchWritten >= cchOut)
803 lpStr[cchWritten] =
'\0';
807 TRACE(
"returning length=%d, output=%s\n", cchWritten,
debugstr_w(lpStr));
811 TRACE(
"returning 0, (ERROR_INSUFFICIENT_BUFFER)\n");
834 WCHAR szFormat[128], szOut[128];
867 lpStr ? szOut :
NULL, cchOut);
873 else if (cchOut && iRet)
932 #if _WIN32_WINNT >= 0x600 962 if (calendar !=
NULL)
1040 #if _WIN32_WINNT >= 0x600 1118 LPSTR lpNumberStr,
int cchOut)
1121 WCHAR szDec[8], szGrp[8], szIn[128], szOut[128];
1154 fmt.lpDecimalSep = szDec;
1159 fmt.lpThousandSep = szGrp;
1172 lpNumberStr ? szOut :
NULL, cchOut);
1174 if (szOut[0] && lpNumberStr)
1180 #define NF_ISNEGATIVE 0x1 1181 #define NF_ISREAL 0x2 1182 #define NF_DIGITS 0x4 1183 #define NF_DIGITS_OUT 0x8 1184 #define NF_ROUND 0x10 1187 #define NLS_NEG_PARENS 0 1188 #define NLS_NEG_LEFT 1 1189 #define NLS_NEG_LEFT_SPACE 2 1190 #define NLS_NEG_RIGHT 3 1191 #define NLS_NEG_RIGHT_SPACE 4 1200 LPWSTR lpNumberStr,
int cchOut)
1204 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc;
1205 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0;
1211 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpNumberStr) ||
1231 lpszNegStart = lpszNeg = szNegBuff;
1233 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1245 if (*szSrc >=
'0' && *szSrc <=
'9')
1251 else if (*szSrc ==
'-')
1257 else if (*szSrc ==
'.')
1282 while (lpszNeg >= lpszNegStart)
1283 *szOut-- = *lpszNeg--;
1295 while (*szSrc !=
'.')
1297 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1310 if (dwDecimals <= lpFormat->NumDigits)
1312 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1313 while (dwDecimals--)
1320 while (dwDecimals--)
1322 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1332 while (*szSrc !=
'.')
1341 *szOut-- = (*szSrc)+1;
1346 *szOut-- = *szSrc--;
1351 while (lpszDec >=
lpFormat->lpDecimalSep)
1352 *szOut-- = *lpszDec--;
1358 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1367 *szOut-- = (*szSrc)+1;
1372 *szOut-- = *szSrc--;
1375 dwCurrentGroupCount++;
1376 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1380 while (lpszGrp >=
lpFormat->lpThousandSep)
1381 *szOut-- = *lpszGrp--;
1383 dwCurrentGroupCount = 0;
1407 while (lpszNeg >= lpszNegStart)
1408 *szOut-- = *lpszNeg--;
1421 memcpy(lpNumberStr, szOut, cchOut *
sizeof(
WCHAR));
1422 lpNumberStr[cchOut - 1] =
'\0';
1434 #if _WIN32_WINNT >= 0x600 1484 LPSTR lpCurrencyStr,
int cchOut)
1487 WCHAR szDec[8], szGrp[8], szCy[8], szIn[128], szOut[128];
1520 fmt.lpDecimalSep = szDec;
1525 fmt.lpThousandSep = szGrp;
1530 fmt.lpCurrencySymbol = szCy;
1543 lpCurrencyStr ? szOut :
NULL, cchOut);
1545 if (szOut[0] && lpCurrencyStr)
1551 #define CF_PARENS 0x1 1552 #define CF_MINUS_LEFT 0x2 1553 #define CF_MINUS_RIGHT 0x4 1554 #define CF_MINUS_BEFORE 0x8 1555 #define CF_CY_LEFT 0x10 1556 #define CF_CY_RIGHT 0x20 1557 #define CF_CY_SPACE 0x40 1566 LPWSTR lpCurrencyStr,
int cchOut)
1568 static const BYTE NLS_NegCyFormats[16] =
1587 static const BYTE NLS_PosCyFormats[4] =
1596 const WCHAR *lpszNeg =
NULL, *lpszNegStart, *szSrc, *lpszCy, *lpszCyStart;
1597 DWORD dwState = 0, dwDecimals = 0, dwGroupCount = 0, dwCurrentGroupCount = 0, dwFmt;
1603 if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpCurrencyStr) ||
1626 lpszNegStart = lpszNeg = szNegBuff;
1630 lpszNeg = lpszNeg +
strlenW(lpszNeg) - 1;
1631 lpszCyStart =
lpFormat->lpCurrencySymbol;
1632 lpszCy = lpszCyStart +
strlenW(lpszCyStart) - 1;
1642 if (*szSrc >=
'0' && *szSrc <=
'9')
1648 else if (*szSrc ==
'-')
1654 else if (*szSrc ==
'.')
1670 dwFmt = NLS_NegCyFormats[
lpFormat->NegativeOrder];
1672 dwFmt = NLS_PosCyFormats[
lpFormat->PositiveOrder];
1684 while (lpszNeg >= lpszNegStart)
1685 *szOut-- = *lpszNeg--;
1692 while (lpszCy >= lpszCyStart)
1693 *szOut-- = *lpszCy--;
1706 while (*szSrc !=
'.')
1708 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1721 if (dwDecimals <= lpFormat->NumDigits)
1723 dwDecimals =
lpFormat->NumDigits - dwDecimals;
1724 while (dwDecimals--)
1731 while (dwDecimals--)
1733 if (*szSrc >=
'5' || (*szSrc ==
'4' && (dwState &
NF_ROUND)))
1743 while (*szSrc !=
'.')
1752 *szOut-- = (*szSrc)+1;
1757 *szOut-- = *szSrc--;
1761 while (lpszDec >=
lpFormat->lpDecimalSep)
1762 *szOut-- = *lpszDec--;
1768 while (szSrc >= lpszValue && *szSrc >=
'0' && *szSrc <=
'9')
1777 *szOut-- = (*szSrc)+1;
1782 *szOut-- = *szSrc--;
1785 dwCurrentGroupCount++;
1786 if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc !=
'-')
1790 while (lpszGrp >=
lpFormat->lpThousandSep)
1791 *szOut-- = *lpszGrp--;
1793 dwCurrentGroupCount = 0;
1810 while (lpszNeg >= lpszNegStart)
1811 *szOut-- = *lpszNeg--;
1820 while (lpszCy >= lpszCyStart)
1821 *szOut-- = *lpszCy--;
1834 memcpy(lpCurrencyStr, szOut, iRet *
sizeof(
WCHAR));
1837 memcpy(lpCurrencyStr, szOut, cchOut *
sizeof(
WCHAR));
1838 lpCurrencyStr[cchOut - 1] =
'\0';
1850 #if _WIN32_WINNT >= 0x600 1926 case DATE_YEARMONTH:
1927 lctype = LOCALE_SYEARMONTH;
1930 FIXME(
"Unknown date format (0x%08x)\n", ctxt->
flags);
2032 #if _WIN32_WINNT >= 0x600 2041 ctxt.u.callbackexex =
proc;
2042 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2045 ctxt.unicode =
TRUE;
2085 FIXME(
"Unknown time format (%d)\n", ctxt->
flags);
2156 #if _WIN32_WINNT >= 0x600 2165 ctxt.u.callbackex =
proc;
2166 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2169 ctxt.unicode =
TRUE;
2250 if (ctxt->
caltype & CAL_RETURN_NUMBER)
2266 ERR(
"Buffer resizing disorder: was %d, requested %d.\n", bufSz, newSz);
2270 WARN(
"Buffer too small; resizing to %d bytes.\n", bufSz);
2303 if ((iter ==
NULL) || (*iter == 0))
2307 while ((*iter >=
'0') && (*iter <=
'9'))
2308 calendar = calendar * 10 + *iter++ -
'0';
2404 #if _WIN32_WINNT >= 0x600 2413 TRACE(
"(%p,%s,0x%08x,%p,0x%08x,0x%ld)\n", calinfoproc,
debugstr_w(
locale),
calendar,
reserved,
caltype,
lParam);
2416 ctxt.u.callbackexex = calinfoproc;
2417 ctxt.lcid = LocaleNameToLCID(
locale, 0);
2421 ctxt.unicode =
TRUE;
2433 int ret, cchDataW = cchData;
2437 if (!(CalType & CAL_USE_CP_ACP))
2462 if (!cchData && !(CalType & CAL_RETURN_NUMBER))
2468 if(
ret && lpCalDataW && lpCalData)
2474 else if (CalType & CAL_RETURN_NUMBER)
2488 static const LCTYPE caltype_lctype_map[] = {
2538 #if (WINVER >= 0x0600) 2539 LOCALE_SSHORTESTDAYNAME1,
2540 LOCALE_SSHORTESTDAYNAME2,
2541 LOCALE_SSHORTESTDAYNAME3,
2542 LOCALE_SSHORTESTDAYNAME4,
2543 LOCALE_SSHORTESTDAYNAME5,
2544 LOCALE_SSHORTESTDAYNAME6,
2545 LOCALE_SSHORTESTDAYNAME7,
2550 DWORD localeflags = 0;
2553 if (CalType & CAL_NOUSEROVERRIDE)
2554 FIXME(
"flag CAL_NOUSEROVERRIDE used, not fully implemented\n");
2555 if (CalType & CAL_USE_CP_ACP)
2556 FIXME(
"flag CAL_USE_CP_ACP used, not fully implemented\n");
2558 if (CalType & CAL_RETURN_NUMBER) {
2564 if (lpCalData !=
NULL)
2565 WARN(
"lpCalData not NULL (%p) when it should!\n", lpCalData);
2567 WARN(
"cchData not 0 (%d) when it should!\n", cchData);
2569 if (lpValue !=
NULL)
2570 WARN(
"lpValue not NULL (%p) when it should!\n", lpValue);
2576 calinfo = CalType & 0xffff;
2581 if (CalType & CAL_RETURN_GENITIVE_NAMES)
2588 if (IS_LCID_JAPANESE(Locale))
2590 if (CalType & CAL_RETURN_NUMBER)
2597 static const WCHAR fmtW[] = {
'%',
'u',0};
2600 if (!lpCalData)
return ret;
2611 if (CalType & CAL_RETURN_NUMBER)
2617 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2620 lpCalData[0] = 0x548C;
2621 lpCalData[1] = 0x66A6;
2626 FIXME(
"Unimplemented caltype %d\n", calinfo);
2627 if (lpCalData) *lpCalData = 0;
2631 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2636 if (CalType & CAL_RETURN_NUMBER)
2638 *lpValue = pEra->
wYear;
2643 static const WCHAR fmtW[] = {
'%',
'u',0};
2646 if (!lpCalData)
return ret;
2663 FIXME(
"Unimplemented caltype %d\n", calinfo);
2667 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2673 return strlenW(lpCalData) + 1;
2682 FIXME(
"Unimplemented caltype %d\n", calinfo);
2726 case CAL_SYEARMONTH:
2727 return GetLocaleInfoW(Locale, caltype_lctype_map[calinfo] | localeflags, lpCalData, cchData);
2728 case CAL_ITWODIGITYEARMAX:
2730 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2732 if (CalType & CAL_RETURN_NUMBER)
2739 static const WCHAR fmtW[] = {
'%',
'u',0};
2742 if (!lpCalData)
return ret;
2753 if (CalType & CAL_RETURN_NUMBER)
2755 *lpValue = CALINFO_MAX_YEAR;
2760 static const WCHAR fmtW[] = {
'%',
'u',0};
2763 if (!lpCalData)
return ret;
2775 if (IS_LCID_JAPANESE(Locale) && Calendar ==
CAL_JAPAN)
2781 return strlenW(lpCalData) + 1;
2788 FIXME(
"Unknown caltype %d\n", calinfo);
2795 #if _WIN32_WINNT >= 0x600 2806 FIXME(
"(%s, %d, %p, 0x%08x, %p, %d, %p): semi-stub\n",
debugstr_w(
locale),
calendar, lpReserved,
caltype,
2818 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2819 Locale, Calendar, CalType,
debugstr_a(lpCalData));
2830 FIXME(
"(%08x,%08x,%08x,%s): stub\n",
2831 Locale, Calendar, CalType,
debugstr_w(lpCalData));
BOOL(CALLBACK * CALINFO_ENUMPROCA)(LPSTR)
#define ERROR_INVALID_PARAMETER
NTSTRSAFEAPI RtlStringCbCopyW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
#define LOCALE_IDEFAULTANSICODEPAGE
#define LOCALE_SABBREVMONTHNAME12
#define CAL_SABBREVMONTHNAME12
union enumtimeformats_context::@446 u
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
#define LOCALE_SABBREVDAYNAME2
#define LOCALE_SABBREVMONTHNAME1
BOOL JapaneseEra_IsFirstYearGannen(void)
#define LOCALE_SMONTHNAME5
#define WideCharToMultiByte
#define LOCALE_SABBREVMONTHNAME6
#define LOCALE_SMONTHNAME2
CALINFO_ENUMPROCEXEX callbackexex
#define LOCALE_SABBREVDAYNAME4
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
#define LOCALE_SABBREVDAYNAME7
#define LOCALE_SABBREVDAYNAME1
GLuint GLuint GLsizei count
BOOL(CALLBACK * DATEFMT_ENUMPROCEXA)(LPSTR, CALID)
#define LOCALE_SMONTHNAME13
#define LOCALE_SMONTHNAME6
#define LOCALE_ICALENDARTYPE
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define ERROR_NOT_ENOUGH_MEMORY
DWORD WINAPI GetLastError(VOID)
#define LOCALE_SABBREVMONTHNAME7
int WINAPI GetDateFormatEx(LPCWSTR, DWORD, const SYSTEMTIME *, LPCWSTR, LPWSTR, int, LPCWSTR)
GLenum GLuint GLsizei bufsize
#define LOCALE_SABBREVMONTHNAME3
#define LOCALE_SMONTHNAME8
#define LOCALE_RETURN_GENITIVE_NAMES
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
#define CAL_SABBREVMONTHNAME7
#define LOCALE_SABBREVMONTHNAME8
int WINAPI GetTimeFormatEx(LPCWSTR, DWORD, const SYSTEMTIME *, LPCWSTR, LPWSTR, int)
#define LOCALE_INEGNUMBER
#define CAL_SABBREVDAYNAME2
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
enum enum_callback_type type
GLenum GLuint GLenum GLsizei const GLchar * buf
#define LOCALE_SABBREVDAYNAME3
#define LOCALE_SABBREVMONTHNAME5
#define LOCALE_SMONTHNAME1
#define LOCALE_NOUSEROVERRIDE
DATEFMT_ENUMPROCEXW callbackex
LCID WINAPI ConvertDefaultLocale(LCID lcid)
#define CAL_SABBREVDAYNAME3
#define CAL_SABBREVMONTHNAME10
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define CAL_SABBREVMONTHNAME4
#define LOCALE_SABBREVMONTHNAME10
static size_t double number
#define LOCALE_SABBREVDAYNAME6
CALINFO_ENUMPROCW callback
#define CAL_SABBREVMONTHNAME3
BOOL(CALLBACK * DATEFMT_ENUMPROCEXW)(LPWSTR, CALID)
#define DEBUG_CHANNEL(args)
#define LOCALE_SABBREVMONTHNAME4
enum enum_callback_type type
#define LOCALE_SMONTHNAME4
#define LOCALE_SABBREVMONTHNAME13
VOID WINAPI GetLocalTime(OUT LPSYSTEMTIME lpSystemTime)
BOOL(CALLBACK * CALINFO_ENUMPROCW)(LPWSTR)
#define CAL_SABBREVDAYNAME1
BOOL(CALLBACK * DATEFMT_ENUMPROCEXEX)(LPWSTR, CALID, LPARAM)
#define LOCALE_SSHORTTIME
#define LOCALE_SMONDECIMALSEP
#define LOCALE_SMONTHNAME11
#define ENUM_ALL_CALENDARS
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define LOCALE_SMONTHOUSANDSEP
#define LOCALE_SMONTHNAME10
BOOL(CALLBACK * TIMEFMT_ENUMPROCA)(LPSTR)
#define LOCALE_SABBREVMONTHNAME2
PCJAPANESE_ERA JapaneseEra_Find(const SYSTEMTIME *pst OPTIONAL)
#define TIME_NOMINUTESORSECONDS
DATEFMT_ENUMPROCW callback
#define CAL_IYEAROFFSETRANGE
#define JAPANESE_MAX_TWODIGITYEAR
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
BOOL(CALLBACK * CALINFO_ENUMPROCEXW)(LPWSTR, CALID)
TIMEFMT_ENUMPROCEX callbackex
BOOL WINAPI IsValidLocale(LCID lcid, DWORD flags)
#define DATE_USE_ALT_CALENDAR
#define LOCALE_SMONTHNAME3
#define LOCALE_SNEGATIVESIGN
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define LOCALE_SSHORTDATE
#define CAL_SABBREVDAYNAME4
#define CAL_SABBREVMONTHNAME1
#define memcpy(s1, s2, n)
#define CAL_SABBREVMONTHNAME13
LIST_ENTRY ProcessLocksList
#define LOCALE_USE_CP_ACP
BOOL(CALLBACK * CALINFO_ENUMPROCEXA)(LPSTR, CALID)
BOOL(CALLBACK * CALINFO_ENUMPROCEXEX)(LPWSTR, CALID, LPWSTR, LPARAM)
#define CAL_SABBREVMONTHNAME11
static const wchar_t void * locale
#define LOCALE_SABBREVMONTHNAME9
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
#define TIME_FORCE24HOURFORMAT
#define LOCALE_SABBREVMONTHNAME11
BOOL(CALLBACK * TIMEFMT_ENUMPROCEX)(LPWSTR, LPARAM)
NTSTRSAFEAPI RtlStringCchCopyW(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cchDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
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
#define CAL_SABBREVMONTHNAME6
BOOL(CALLBACK * TIMEFMT_ENUMPROCW)(LPWSTR)
#define LOCALE_SABBREVDAYNAME5
DATEFMT_ENUMPROCEXEX callbackexex
#define LOCALE_SMONTHNAME9
#define LOCALE_SMONTHNAME12
#define MultiByteToWideChar
#define CAL_SABBREVDAYNAME6
CALINFO_ENUMPROCEXW callbackex
union enumdateformats_context::@445 u
WINE_UNICODE_INLINE int strcmpW(const WCHAR *str1, const WCHAR *str2)
#define LOCALE_SMONTHNAME7
#define CAL_SABBREVERASTRING
#define CAL_SABBREVMONTHNAME5
char * cleanup(char *str)
#define CAL_SABBREVDAYNAME5
TIMEFMT_ENUMPROCW callback
BOOL(CALLBACK * DATEFMT_ENUMPROCW)(LPWSTR)
#define CAL_SABBREVMONTHNAME9
#define CAL_SABBREVDAYNAME7
union enumcalendar_context::@447 u
BOOL(CALLBACK * DATEFMT_ENUMPROCA)(LPSTR)
#define CAL_SABBREVMONTHNAME2
#define LOCALE_IOPTIONALCALENDAR
#define LOCALE_STIMEFORMAT
static unsigned char buff[32768]
#define HeapFree(x, y, z)
#define ERROR_INVALID_FLAGS
#define CAL_SABBREVMONTHNAME8
#define TIME_NOTIMEMARKER
enum enum_callback_type type
#define ERROR_INSUFFICIENT_BUFFER