-/**************************************************************************
- * EnumDateFormatsExA (KERNEL32.@)
- *
- * FIXME: MSDN mentions only LOCALE_USE_CP_ACP, should we handle
- * LOCALE_NOUSEROVERRIDE here as well?
- */
-BOOL
-WINAPI
-EnumDateFormatsExA(
- DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx,
- LCID Locale,
- DWORD dwFlags)
-{
- CALID cal_id;
- char szBuf[256];
-
- if (!lpDateFmtEnumProcEx)
- {
- SetLastError(ERROR_INVALID_PARAMETER);
- return FALSE;
- }
-
- if (!GetLocaleInfoW(Locale,
- LOCALE_ICALENDARTYPE|LOCALE_RETURN_NUMBER,
- (LPWSTR)&cal_id,
- sizeof(cal_id)/sizeof(WCHAR)))
- {
- return FALSE;
- }
-
- switch (dwFlags & ~LOCALE_USE_CP_ACP)
- {
- case 0:
- case DATE_SHORTDATE:
- if (GetLocaleInfoA(Locale,
- LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP),
- szBuf, 256))
- {
- lpDateFmtEnumProcEx(szBuf, cal_id);
- }
- break;
-
- case DATE_LONGDATE:
- if (GetLocaleInfoA(Locale,
- LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP),
- szBuf, 256))
- {
- lpDateFmtEnumProcEx(szBuf, cal_id);
- }
- break;
-
- case DATE_YEARMONTH:
- if (GetLocaleInfoA(Locale,
- LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP),
- szBuf, 256))
- {
- lpDateFmtEnumProcEx(szBuf, cal_id);
- }
- break;
-
- default:
- SetLastError(ERROR_INVALID_FLAGS);
- return FALSE;
- }
- return TRUE;
-}
-
-
-/**************************************************************************
- * EnumDateFormatsExW (KERNEL32.@)
- */
-BOOL
-WINAPI
-EnumDateFormatsExW(
- DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx,
- LCID Locale,
- DWORD dwFlags)
-{
- CALID cal_id;
- WCHAR wbuf[256]; // FIXME
-
- if (!lpDateFmtEnumProcEx)
- {
- SetLastError(ERROR_INVALID_PARAMETER);
- return FALSE;
- }
-
- if (!GetLocaleInfoW(Locale,
- LOCALE_ICALENDARTYPE | LOCALE_RETURN_NUMBER,
- (LPWSTR)&cal_id,
- sizeof(cal_id)/sizeof(WCHAR)))
- {
- return FALSE;
- }
-
- switch (dwFlags & ~LOCALE_USE_CP_ACP)
- {
- case 0:
- case DATE_SHORTDATE:
- if (GetLocaleInfoW(Locale,
- LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP),
- wbuf,
- 256))
- {
- lpDateFmtEnumProcEx(wbuf, cal_id);
- }
- break;
-
- case DATE_LONGDATE:
- if (GetLocaleInfoW(Locale,
- LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP),
- wbuf,
- 256))
- {
- lpDateFmtEnumProcEx(wbuf, cal_id);
- }
- break;
-
- case DATE_YEARMONTH:
- if (GetLocaleInfoW(Locale,
- LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP),
- wbuf,
- 256))
- {
- lpDateFmtEnumProcEx(wbuf, cal_id);
- }
- break;
-
- default:
- SetLastError(ERROR_INVALID_FLAGS);
- return FALSE;
- }
- return TRUE;
-}
-
-