James Hawkins : mlang: Only return the locale language name if no country name exists.
Alexandre Julliard
julliard at winehq.org
Thu May 22 06:27:50 CDT 2008
Module: wine
Branch: master
Commit: 94459b88d40bdcb926dcfecd136865350e6643d3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=94459b88d40bdcb926dcfecd136865350e6643d3
Author: James Hawkins <jhawkins at codeweavers.com>
Date: Wed May 21 20:28:16 2008 -0500
mlang: Only return the locale language name if no country name exists.
---
dlls/mlang/mlang.c | 3 +++
dlls/mlang/tests/Makefile.in | 2 +-
dlls/mlang/tests/mlang.c | 30 ++++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 1 deletions(-)
diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c
index a60ad70..2f73f1f 100644
--- a/dlls/mlang/mlang.c
+++ b/dlls/mlang/mlang.c
@@ -704,10 +704,13 @@ static inline INT lcid_to_rfc1766A( LCID lcid, LPSTR rfc1766, INT len )
static inline INT lcid_to_rfc1766W( LCID lcid, LPWSTR rfc1766, INT len )
{
INT n = GetLocaleInfoW( lcid, LOCALE_SISO639LANGNAME, rfc1766, len );
+ INT save = n;
if (n)
{
rfc1766[n - 1] = '-';
n += GetLocaleInfoW( lcid, LOCALE_SISO3166CTRYNAME, rfc1766 + n, len - n );
+ if (n == save)
+ rfc1766[n - 1] = '\0';
LCMapStringW( LOCALE_USER_DEFAULT, LCMAP_LOWERCASE, rfc1766, n, rfc1766, len );
return n;
}
diff --git a/dlls/mlang/tests/Makefile.in b/dlls/mlang/tests/Makefile.in
index 0df1440..81b6505 100644
--- a/dlls/mlang/tests/Makefile.in
+++ b/dlls/mlang/tests/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../../..
SRCDIR = @srcdir@
VPATH = @srcdir@
TESTDLL = mlang.dll
-IMPORTS = uuid ole32 gdi32 kernel32
+IMPORTS = uuid oleaut32 ole32 gdi32 kernel32
CTESTS = \
mlang.c
diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c
index c036f7a..dcb8d7d 100644
--- a/dlls/mlang/tests/mlang.c
+++ b/dlls/mlang/tests/mlang.c
@@ -44,6 +44,17 @@
#define TRACE_2 OutputDebugStringA
+static CHAR string1[MAX_PATH], string2[MAX_PATH];
+
+#define ok_w2(format, szString1, szString2) \
+\
+ if (lstrcmpW(szString1, szString2) != 0) \
+ { \
+ WideCharToMultiByte(CP_ACP, 0, szString1, -1, string1, MAX_PATH, NULL, NULL); \
+ WideCharToMultiByte(CP_ACP, 0, szString2, -1, string2, MAX_PATH, NULL, NULL); \
+ ok(0, format, string1, string2); \
+ }
+
static BOOL (WINAPI *pGetCPInfoExA)(UINT,DWORD,LPCPINFOEXA);
static void test_multibyte_to_unicode_translations(IMultiLanguage2 *iML2)
@@ -734,6 +745,24 @@ static void test_GetLcidFromRfc1766(IMultiLanguage2 *iML2)
ok(lcid == 0x409, "got wrong lcid: %04x\n", lcid);
}
+static void test_GetRfc1766FromLcid(IMultiLanguage2 *iML2)
+{
+ HRESULT hr;
+ BSTR rfcstr;
+ LCID lcid;
+
+ static WCHAR kok[] = {'k','o','k',0};
+
+ hr = IMultiLanguage2_GetLcidFromRfc1766(iML2, &lcid, kok);
+ ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
+
+ hr = IMultiLanguage2_GetRfc1766FromLcid(iML2, lcid, &rfcstr);
+ ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
+ ok_w2("Expected \"%s\", got \"%s\"n", kok, rfcstr);
+
+ SysFreeString(rfcstr);
+}
+
START_TEST(mlang)
{
IMultiLanguage2 *iML2 = NULL;
@@ -752,6 +781,7 @@ START_TEST(mlang)
test_rfc1766(iML2);
test_GetLcidFromRfc1766(iML2);
+ test_GetRfc1766FromLcid(iML2);
test_EnumCodePages(iML2, 0);
test_EnumCodePages(iML2, MIMECONTF_MIME_LATEST);
More information about the wine-cvs
mailing list