diff --git a/reactos/dll/win32/kernel32/misc/lcformat.c b/reactos/dll/win32/kernel32/misc/lcformat.c index ad3ac3b49d3..c56f41a1e9d 100644 --- a/reactos/dll/win32/kernel32/misc/lcformat.c +++ b/reactos/dll/win32/kernel32/misc/lcformat.c @@ -1730,302 +1730,77 @@ INT WINAPI GetCurrencyFormatW(LCID lcid, DWORD dwFlags, /************************************************************************** * EnumDateFormatsA (KERNEL32.@) */ -BOOL WINAPI EnumDateFormatsA( DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale, DWORD dwFlags) +BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale, DWORD dwFlags) { - LCID Loc = GetUserDefaultLCID(); - if(!lpDateFmtEnumProc) + char buf[256]; + + if (!lpDateFmtEnumProc) { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; } - switch( Loc ) - { - - case 0x00000407: /* (Loc,"de_DE") */ - { - switch(dwFlags) + switch (dwFlags & ~LOCALE_USE_CP_ACP) { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("dd.MM.yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d.M.yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d.MM.yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d.M.yy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dddd,d. MMMM yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d. MMMM yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d. MMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } + case 0: + case DATE_SHORTDATE: + if (GetLocaleInfoA(Locale, LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) + lpDateFmtEnumProc(buf); + break; - case 0x0000040c: /* (Loc,"fr_FR") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("dd/MM/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd.MM.yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd-MM-yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd/MM/yyyy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dddd d MMMM yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d MMM yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d MMMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } + case DATE_LONGDATE: + if (GetLocaleInfoA(Locale, LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) + lpDateFmtEnumProc(buf); + break; - case 0x00000c0c: /* (Loc,"fr_CA") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("yy-MM-dd")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd-MM-yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("yy MM dd")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd/MM/yy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("d MMMM, yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d MMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } + case DATE_YEARMONTH: + if (GetLocaleInfoA(Locale, LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) + lpDateFmtEnumProc(buf); + break; - case 0x00000809: /* (Loc,"en_UK") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("dd/MM/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd/MM/yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d/M/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d.M.yy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dd MMMM yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d MMMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; + default: + FIXME("Unknown date format (%d)\n", dwFlags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; } - } - - case 0x00000c09: /* (Loc,"en_AU") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("d/MM/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d/M/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd/MM/yy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dddd,d MMMM yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d MMMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } - - case 0x00001009: /* (Loc,"en_CA") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("dd/MM/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d/M/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("yy-MM-dd")) return TRUE; - if(!(*lpDateFmtEnumProc)("M/dd/yy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("d-MMM-yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("MMMM d, yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } - - case 0x00001409: /* (Loc,"en_NZ") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("d/MM/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd/MM/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d.MM.yy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("d MMMM yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dddd, d MMMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } - - case 0x00001809: /* (Loc,"en_IE") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("dd/MM/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d/M/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d.M.yy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dd MMMM yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("d MMMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } - - case 0x00001c09: /* (Loc,"en_ZA") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("yy/MM/dd")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dd MMMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } - - case 0x00002009: /* (Loc,"en_JM") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("dd/MM/yyyy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dddd,MMMM dd,yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("MMMM dd,yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dddd,dd MMMM,yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd MMMM,yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } - - case 0x00002809: /* (Loc,"en_BZ") */ - case 0x00002c09: /* (Loc,"en_TT") */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("dd/MM/yyyy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dddd,dd MMMM yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } - - default: /* default to US English "en_US" */ - { - switch(dwFlags) - { - case DATE_SHORTDATE: - if(!(*lpDateFmtEnumProc)("M/d/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("M/d/yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("MM/dd/yy")) return TRUE; - if(!(*lpDateFmtEnumProc)("MM/dd/yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("yy/MM/dd")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd-MMM-yy")) return TRUE; - return TRUE; - case DATE_LONGDATE: - if(!(*lpDateFmtEnumProc)("dddd, MMMM dd, yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("MMMM dd, yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dddd, dd MMMM, yyyy")) return TRUE; - if(!(*lpDateFmtEnumProc)("dd MMMM, yyyy")) return TRUE; - return TRUE; - default: - FIXME("Unknown date format (%ld)\n", dwFlags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - } - } + return TRUE; } /************************************************************************** * EnumDateFormatsW (KERNEL32.@) */ -BOOL WINAPI EnumDateFormatsW( DATEFMT_ENUMPROCW proc, LCID lcid, DWORD flags ) +BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW lpDateFmtEnumProc, LCID Locale, DWORD dwFlags) { WCHAR buf[256]; - if (!proc) + if (!lpDateFmtEnumProc) { SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } - switch (flags & ~LOCALE_USE_CP_ACP) + switch (dwFlags & ~LOCALE_USE_CP_ACP) { - case 0: - case DATE_SHORTDATE: - if (GetLocaleInfoW(lcid, LOCALE_SSHORTDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) - proc(buf); + case 0: + case DATE_SHORTDATE: + if (GetLocaleInfoW(Locale, LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) + lpDateFmtEnumProc(buf); break; - case DATE_LONGDATE: - if (GetLocaleInfoW(lcid, LOCALE_SLONGDATE | (flags & LOCALE_USE_CP_ACP), buf, 256)) - proc(buf); + case DATE_LONGDATE: + if (GetLocaleInfoW(Locale, LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) + lpDateFmtEnumProc(buf); break; - case DATE_YEARMONTH: - if (GetLocaleInfoW(lcid, LOCALE_SYEARMONTH | (flags & LOCALE_USE_CP_ACP), buf, 256)) - proc(buf); + case DATE_YEARMONTH: + if (GetLocaleInfoW(Locale, LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP), buf, 256)) + lpDateFmtEnumProc(buf); break; - default: - FIXME("Unknown date format (%d)\n", flags); - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; + default: + FIXME("Unknown date format (%d)\n", dwFlags); + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; } return TRUE; }