[PATCH] mlang: Implement IMultiLanguage2_GetRfc1766Info (English only)

Detlef Riekenberg wine.dev at web.de
Mon May 25 05:06:29 CDT 2009


---
 dlls/mlang/mlang.c |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c
index 9b1e5ac..079099e 100644
--- a/dlls/mlang/mlang.c
+++ b/dlls/mlang/mlang.c
@@ -4,6 +4,7 @@
  * Copyright 2002 Lionel Ulmer
  * Copyright 2003,2004 Mike McCormack
  * Copyright 2004,2005 Dmitry Timoshkov
+ * Copyright 2009 Detlef Riekenberg
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -2887,8 +2888,33 @@ static HRESULT WINAPI fnIMultiLanguage2_GetRfc1766Info(
     LANGID LangId,
     PRFC1766INFO pRfc1766Info)
 {
-    FIXME("\n");
-    return E_NOTIMPL;
+    TRACE("(%p, 0x%04x, 0x%04x, %p)\n", iface, Locale, LangId, pRfc1766Info);
+
+    if (!pRfc1766Info)
+        return E_INVALIDARG;
+
+    if ((PRIMARYLANGID(Locale) != LANG_ENGLISH) && !SUBLANGID(Locale)) {
+        TRACE("SUBLANGID missing in 0x%04x\n", Locale);
+        return E_FAIL;
+    }
+
+    if (PRIMARYLANGID(LangId) != LANG_ENGLISH) {
+        FIXME("Only english names for 0x%04x supported (requested: 0x%04x)\n", Locale, LangId);
+    }
+
+    pRfc1766Info->lcid = Locale;
+    pRfc1766Info->wszRfc1766[0] = 0;
+    pRfc1766Info->wszLocaleName[0] = 0;
+
+    if ((lcid_to_rfc1766W(Locale, pRfc1766Info->wszRfc1766, MAX_RFC1766_NAME )) &&
+        (GetLocaleInfoW(Locale, LOCALE_SLANGUAGE, pRfc1766Info->wszLocaleName, MAX_LOCALE_NAME) > 0));
+    {
+        return S_OK;
+    }
+    FIXME("failed for 0x%04x, 0x%04x (%s / %s)\n", Locale, LangId,
+            debugstr_w(pRfc1766Info->wszRfc1766), debugstr_w(pRfc1766Info->wszLocaleName));
+
+    return E_INVALIDARG;
 }
 
 static HRESULT WINAPI fnIMultiLanguage2_CreateConvertCharset(
-- 
1.5.4.3


--=-bJ3c3J4azvAxszh8hZoI--




More information about the wine-patches mailing list