mlang: Accept "ascii" as an alias for "us-ascii".
Huw Davies
huw at codeweavers.com
Thu Nov 6 09:55:39 CST 2014
---
dlls/mlang/mlang.c | 13 ++++++++++++-
dlls/mlang/tests/mlang.c | 12 ++++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c
index e44e862..8a4e78f 100644
--- a/dlls/mlang/mlang.c
+++ b/dlls/mlang/mlang.c
@@ -65,6 +65,7 @@ typedef struct
const char *web_charset;
const char *header_charset;
const char *body_charset;
+ const WCHAR *alias;
} MIME_CP_INFO;
/* These data are based on the codepage info in libs/unicode/cpmap.pl */
@@ -363,6 +364,9 @@ static const MIME_CP_INFO vietnamese_cp[] =
MIMECONTF_MIME_LATEST,
"windows-1258", "windows-1258", "windows-1258" }
};
+
+static const WCHAR asciiW[] = {'a','s','c','i','i',0};
+
static const MIME_CP_INFO western_cp[] =
{
{ "IBM EBCDIC (US-Canada)",
@@ -415,7 +419,7 @@ static const MIME_CP_INFO western_cp[] =
20127, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT | MIMECONTF_EXPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
- "us-ascii", "us-ascii", "us-ascii" },
+ "us-ascii", "us-ascii", "us-ascii", asciiW },
{ "Western European (ISO)",
28591, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
@@ -2600,6 +2604,13 @@ static HRESULT WINAPI fnIMultiLanguage3_GetCharsetInfo(
strcpyW(pCharsetInfo->wszCharset, csetW);
return S_OK;
}
+ if (mlang_data[i].mime_cp_info[n].alias && !lstrcmpiW(Charset, mlang_data[i].mime_cp_info[n].alias))
+ {
+ pCharsetInfo->uiCodePage = mlang_data[i].family_codepage;
+ pCharsetInfo->uiInternetEncoding = mlang_data[i].mime_cp_info[n].cp;
+ strcpyW(pCharsetInfo->wszCharset, mlang_data[i].mime_cp_info[n].alias);
+ return S_OK;
+ }
}
}
diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c
index 1d52af6..a840b4a 100644
--- a/dlls/mlang/tests/mlang.c
+++ b/dlls/mlang/tests/mlang.c
@@ -696,6 +696,17 @@ static void test_EnumCodePages(IMultiLanguage2 *iML2, DWORD flags)
IEnumCodePage_Release(iEnumCP);
}
+static void test_GetCharsetInfo_alias(IMultiLanguage *ml)
+{
+ WCHAR asciiW[] = {'a','s','c','i','i',0};
+ MIMECSETINFO info;
+ HRESULT hr;
+
+ hr = IMultiLanguage_GetCharsetInfo(ml, asciiW, &info);
+ ok(hr == S_OK, "got %08x\n", hr);
+ ok(!lstrcmpW(info.wszCharset, asciiW), "got %s\n", wine_dbgstr_w(info.wszCharset));
+}
+
static void scriptinfo_cmp(SCRIPTINFO *sinfo1, SCRIPTINFO *sinfo2)
{
ok(sinfo1->ScriptId == sinfo2->ScriptId, "ScriptId mismatch: %d != %d\n", sinfo1->ScriptId, sinfo2->ScriptId);
@@ -2000,6 +2011,7 @@ START_TEST(mlang)
test_GetNumberOfCodePageInfo((IMultiLanguage2 *)iML);
test_IMLangConvertCharset(iML);
+ test_GetCharsetInfo_alias(iML);
IMultiLanguage_Release(iML);
--
1.8.0
More information about the wine-patches
mailing list