Hi.

Could anyone with Win7 access run this for me and send a log back?
This test requires Russian localization support to be installed.

Thanks.
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index fe54907..27da991 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -122,6 +122,11 @@ static void test_GetLocaleInfoA(void)
   LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
   char buffer[BUFFER_SIZE];
   char expected[BUFFER_SIZE];
+  /* nominative names */
+  char months[12][80];
+  /* genitive names */
+  char months_genitive[12][80];
+  int i;
 
   ok(lcid == 0x409, "wrong LCID calculated - %d\n", lcid);
 
@@ -181,6 +186,36 @@ static void test_GetLocaleInfoA(void)
   ret = GetLocaleInfoA(lcid, NUO|LOCALE_SDAYNAME1, buffer, 10);
   ok(ret == 7, "Expected ret == 7, got %d, error %d\n", ret, GetLastError());
   ok(!strcmp(buffer, "Monday"), "Expected 'Monday', got '%s'\n", buffer);
+
+  /* test genitive month names */
+  ret = GetLocaleInfo(MAKELCID(MAKELANGID(LANG_RUSSIAN, SUBLANG_NEUTRAL), SORT_DEFAULT),
+                      LOCALE_SMONTHNAME1, buffer, COUNTOF(buffer));
+  if(ret == 0)
+  {
+     win_skip("Failed to retrieve data for LANG_RUSSIAN\n");
+     return;
+  }
+  buffer[0] = '\0';
+  ret = GetLocaleInfo(MAKELCID(MAKELANGID(LANG_RUSSIAN, SUBLANG_NEUTRAL), SORT_DEFAULT),
+                      LOCALE_RETURN_GENITIVE_NAMES, buffer, COUNTOF(buffer));
+  ok(ret == 0, "Expected 0, got %d\n", ret);
+  trace("LOCALE_RETURN_GENITIVE_NAMES %s\n", buffer);
+  for(i = 0; i<12; i++)
+  {
+    months[i][0] = '\0'; 
+    ret = GetLocaleInfo(MAKELCID(MAKELANGID(LANG_RUSSIAN, SUBLANG_NEUTRAL), SORT_DEFAULT),
+                        LOCALE_SMONTHNAME1 + i, months[i], COUNTOF(months[i]));
+    ok(ret == lstrlenA(months[i]), "Expected length, got %d, length %d\n", ret, lstrlenA(months[i]));
+    trace("nominative(i) %s\n", months[i]);
+
+    months_genitive[i][0] = '\0';
+    ret = GetLocaleInfo(MAKELCID(MAKELANGID(LANG_RUSSIAN, SUBLANG_NEUTRAL), SORT_DEFAULT),
+                        LOCALE_RETURN_GENITIVE_NAMES | (LOCALE_SMONTHNAME1 + i),
+                        months_genitive[i], COUNTOF(months_genitive[i]));
+    ok(ret == lstrlenA(months_genitive[i]), "Expected length, got %d, length %d\n",
+       ret, lstrlenA(months_genitive[i]));
+    trace("genitive(i) %s\n", months_genitive[i]);
+  }
 }
 
 static void test_GetTimeFormatA(void)
diff --git a/include/winnls.h b/include/winnls.h
index 50d6389..61a3e4d 100644
--- a/include/winnls.h
+++ b/include/winnls.h
@@ -151,9 +151,10 @@ extern "C" {
 #define LCID_ALTERNATE_SORTS        0x4
 
 /* Locale flags */
-#define	LOCALE_NOUSEROVERRIDE	    0x80000000
-#define	LOCALE_USE_CP_ACP	    0x40000000
-#define	LOCALE_RETURN_NUMBER	    0x20000000
+#define	LOCALE_NOUSEROVERRIDE         0x80000000
+#define	LOCALE_USE_CP_ACP             0x40000000
+#define	LOCALE_RETURN_NUMBER          0x20000000
+#define	LOCALE_RETURN_GENITIVE_NAMES  0x10000000
 
 /* Locale information types */
 #define LOCALE_ILANGUAGE            0x0001


Reply via email to