[ros-diffs] [dchapyshev] 37551: - Fix EnumDateFormatsA implementation. + 7 passed tests

dchapyshev at svn.reactos.org dchapyshev at svn.reactos.org
Sat Nov 22 12:32:08 CET 2008


Author: dchapyshev
Date: Sat Nov 22 05:32:08 2008
New Revision: 37551

URL: http://svn.reactos.org/svn/reactos?rev=37551&view=rev
Log:
- Fix EnumDateFormatsA implementation. + 7 passed tests

Modified:
    trunk/reactos/dll/win32/kernel32/misc/lcformat.c

Modified: trunk/reactos/dll/win32/kernel32/misc/lcformat.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/misc/lcformat.c?rev=37551&r1=37550&r2=37551&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/misc/lcformat.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/misc/lcformat.c [iso-8859-1] Sat Nov 22 05:32:08 2008
@@ -1730,302 +1730,77 @@
 /**************************************************************************
  *              EnumDateFormatsA	(KERNEL32.@)
  */
-BOOL WINAPI EnumDateFormatsA( DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale,  DWORD dwFlags)
-{
-  LCID Loc = GetUserDefaultLCID();
-  if(!lpDateFmtEnumProc)
-    {
-      SetLastError(ERROR_INVALID_PARAMETER);
-      return FALSE;
-    }
-
-  switch( Loc )
- {
-
-   case 0x00000407:  /* (Loc,"de_DE") */
-   {
-    switch(dwFlags)
-    {
-      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 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 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 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;
-    }
-  }
-
-   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;
-    }
-  }
- }
+BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale,  DWORD dwFlags)
+{
+    char buf[256];
+
+    if (!lpDateFmtEnumProc)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+
+    switch (dwFlags & ~LOCALE_USE_CP_ACP)
+    {
+        case 0:
+        case DATE_SHORTDATE:
+            if (GetLocaleInfoA(Locale, LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256))
+            lpDateFmtEnumProc(buf);
+        break;
+
+        case DATE_LONGDATE:
+            if (GetLocaleInfoA(Locale, LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP), buf, 256))
+            lpDateFmtEnumProc(buf);
+        break;
+
+        case DATE_YEARMONTH:
+            if (GetLocaleInfoA(Locale, LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP), buf, 256))
+            lpDateFmtEnumProc(buf);
+        break;
+
+        default:
+            FIXME("Unknown date format (%d)\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)
-    {
-    case 0:
-    case DATE_SHORTDATE:
-        if (GetLocaleInfoW(lcid, LOCALE_SSHORTDATE | (flags & LOCALE_USE_CP_ACP), buf, 256))
-            proc(buf);
+    switch (dwFlags & ~LOCALE_USE_CP_ACP)
+    {
+        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;
 }



More information about the Ros-diffs mailing list