mlang: Use a registry script to register codepages.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
083dea7fce
commit
8adebaaab7
|
@ -3,7 +3,7 @@ IMPORTLIB = mlang
|
||||||
IMPORTS = uuid ole32 gdi32 advapi32
|
IMPORTS = uuid ole32 gdi32 advapi32
|
||||||
DELAYIMPORTS = oleaut32
|
DELAYIMPORTS = oleaut32
|
||||||
|
|
||||||
C_SRCS = \
|
SOURCES = \
|
||||||
mlang.c
|
mlang.c \
|
||||||
|
mlang.rc \
|
||||||
IDL_SRCS = mlang_classes.idl
|
mlang_classes.idl
|
||||||
|
|
|
@ -3922,69 +3922,6 @@ HRESULT WINAPI DllCanUnloadNow(void)
|
||||||
return dll_count == 0 ? S_OK : S_FALSE;
|
return dll_count == 0 ? S_OK : S_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL register_codepages(void)
|
|
||||||
{
|
|
||||||
const struct mlang_data *family;
|
|
||||||
const MIME_CP_INFO *info;
|
|
||||||
HKEY db_key, key;
|
|
||||||
WCHAR buf[32];
|
|
||||||
LSTATUS status;
|
|
||||||
|
|
||||||
status = RegCreateKeyW(HKEY_CLASSES_ROOT, L"MIME\\Database\\Codepage", &db_key);
|
|
||||||
if (status != ERROR_SUCCESS)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
for (family = mlang_data; family < mlang_data + ARRAY_SIZE(mlang_data); family++)
|
|
||||||
{
|
|
||||||
for (info = family->mime_cp_info; info < family->mime_cp_info + family->number_of_cp; info++)
|
|
||||||
{
|
|
||||||
swprintf(buf, ARRAY_SIZE(buf), L"%u", info->cp);
|
|
||||||
status = RegCreateKeyW(db_key, buf, &key);
|
|
||||||
if (status != ERROR_SUCCESS)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
RegSetValueExA(key, "BodyCharset", 0, REG_SZ, (BYTE*)info->body_charset,
|
|
||||||
strlen(info->body_charset) + 1);
|
|
||||||
|
|
||||||
if (info->cp == family->family_codepage)
|
|
||||||
{
|
|
||||||
RegSetValueExA(key, "FixedWidthFont", 0, REG_SZ, (BYTE*)family->fixed_font,
|
|
||||||
strlen(family->fixed_font) + 1);
|
|
||||||
RegSetValueExA(key, "ProportionalFont", 0, REG_SZ, (BYTE*)family->proportional_font,
|
|
||||||
strlen(family->proportional_font) + 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RegSetValueExW(key, L"Family", 0, REG_DWORD, (BYTE*)&family->family_codepage,
|
|
||||||
sizeof(family->family_codepage));
|
|
||||||
}
|
|
||||||
|
|
||||||
RegCloseKey(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RegCloseKey(db_key);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* DllRegisterServer (MLANG.@)
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI DllRegisterServer(void)
|
|
||||||
{
|
|
||||||
if(!register_codepages())
|
|
||||||
return E_FAIL;
|
|
||||||
return __wine_register_resources();
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* DllUnregisterServer (MLANG.@)
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI DllUnregisterServer(void)
|
|
||||||
{
|
|
||||||
return __wine_unregister_resources();
|
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT WINAPI GetGlobalFontLinkObject(void **unknown)
|
HRESULT WINAPI GetGlobalFontLinkObject(void **unknown)
|
||||||
{
|
{
|
||||||
if (!unknown) return E_INVALIDARG;
|
if (!unknown) return E_INVALIDARG;
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2022 Alexandre Julliard
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @makedep: mlang.rgs */
|
||||||
|
2 WINE_REGISTRY mlang.rgs
|
|
@ -0,0 +1,372 @@
|
||||||
|
HKCR
|
||||||
|
{
|
||||||
|
NoRemove MIME
|
||||||
|
{
|
||||||
|
NoRemove Database
|
||||||
|
{
|
||||||
|
Codepage
|
||||||
|
{
|
||||||
|
37
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm037'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
424
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm424'
|
||||||
|
val 'Family' = d 1255
|
||||||
|
}
|
||||||
|
437
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm437'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
500
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm500'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
708
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ASMO-708'
|
||||||
|
val 'Family' = d 1256
|
||||||
|
}
|
||||||
|
720
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'DOS-720'
|
||||||
|
val 'Family' = d 1256
|
||||||
|
}
|
||||||
|
737
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm737'
|
||||||
|
val 'Family' = d 1253
|
||||||
|
}
|
||||||
|
775
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm775'
|
||||||
|
val 'Family' = d 1257
|
||||||
|
}
|
||||||
|
850
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm850'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
852
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm852'
|
||||||
|
val 'Family' = d 1250
|
||||||
|
}
|
||||||
|
855
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm855'
|
||||||
|
val 'Family' = d 1251
|
||||||
|
}
|
||||||
|
856
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'cp856'
|
||||||
|
val 'Family' = d 1255
|
||||||
|
}
|
||||||
|
857
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm857'
|
||||||
|
val 'Family' = d 1254
|
||||||
|
}
|
||||||
|
860
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm860'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
861
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm861'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
862
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'dos-862'
|
||||||
|
val 'Family' = d 1255
|
||||||
|
}
|
||||||
|
863
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm863'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
864
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm864'
|
||||||
|
val 'Family' = d 1256
|
||||||
|
}
|
||||||
|
865
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm865'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
866
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'cp866'
|
||||||
|
val 'Family' = d 1251
|
||||||
|
}
|
||||||
|
869
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm869'
|
||||||
|
val 'Family' = d 1253
|
||||||
|
}
|
||||||
|
874
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm-thai'
|
||||||
|
val 'FixedWidthFont' = s 'Tahoma'
|
||||||
|
val 'ProportionalFont' = s 'Tahoma'
|
||||||
|
}
|
||||||
|
875
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'cp875'
|
||||||
|
val 'Family' = d 1253
|
||||||
|
}
|
||||||
|
932
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-2022-jp'
|
||||||
|
val 'FixedWidthFont' = s 'MS Gothic'
|
||||||
|
val 'ProportionalFont' = s 'MS PGothic'
|
||||||
|
}
|
||||||
|
936
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'gbk'
|
||||||
|
val 'FixedWidthFont' = s 'Simsun'
|
||||||
|
val 'ProportionalFont' = s 'Simsun'
|
||||||
|
}
|
||||||
|
949
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'euc-kr'
|
||||||
|
val 'FixedWidthFont' = s 'GulimChe'
|
||||||
|
val 'ProportionalFont' = s 'Gulim'
|
||||||
|
}
|
||||||
|
950
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'big5'
|
||||||
|
val 'FixedWidthFont' = s 'MingLiu'
|
||||||
|
val 'ProportionalFont' = s 'New MingLiu'
|
||||||
|
}
|
||||||
|
1006
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm1006'
|
||||||
|
val 'Family' = d 1256
|
||||||
|
}
|
||||||
|
1026
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'ibm1026'
|
||||||
|
val 'Family' = d 1254
|
||||||
|
}
|
||||||
|
1200
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'unicode'
|
||||||
|
val 'FixedWidthFont' = s 'Courier New'
|
||||||
|
val 'ProportionalFont' = s 'Arial'
|
||||||
|
}
|
||||||
|
1250
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-2'
|
||||||
|
val 'FixedWidthFont' = s 'Courier New'
|
||||||
|
val 'ProportionalFont' = s 'Arial'
|
||||||
|
}
|
||||||
|
1251
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'koi8-r'
|
||||||
|
val 'FixedWidthFont' = s 'Courier New'
|
||||||
|
val 'ProportionalFont' = s 'Arial'
|
||||||
|
}
|
||||||
|
1252
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-1'
|
||||||
|
val 'FixedWidthFont' = s 'Courier New'
|
||||||
|
val 'ProportionalFont' = s 'Arial'
|
||||||
|
}
|
||||||
|
1253
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-7'
|
||||||
|
val 'FixedWidthFont' = s 'Courier New'
|
||||||
|
val 'ProportionalFont' = s 'Arial'
|
||||||
|
}
|
||||||
|
1254
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-9'
|
||||||
|
val 'FixedWidthFont' = s 'Courier New'
|
||||||
|
val 'ProportionalFont' = s 'Arial'
|
||||||
|
}
|
||||||
|
1255
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'windows-1255'
|
||||||
|
val 'FixedWidthFont' = s 'Miriam Fixed'
|
||||||
|
val 'ProportionalFont' = s 'David'
|
||||||
|
}
|
||||||
|
1256
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-6'
|
||||||
|
val 'FixedWidthFont' = s 'Simplified Arabic Fixed'
|
||||||
|
val 'ProportionalFont' = s 'Simplified Arabic'
|
||||||
|
}
|
||||||
|
1257
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-4'
|
||||||
|
val 'FixedWidthFont' = s 'Courier New'
|
||||||
|
val 'ProportionalFont' = s 'Arial'
|
||||||
|
}
|
||||||
|
1258
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'windows-1258'
|
||||||
|
val 'FixedWidthFont' = s 'Courier New'
|
||||||
|
val 'ProportionalFont' = s 'Arial'
|
||||||
|
}
|
||||||
|
20000
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'x-Chinese-CNS'
|
||||||
|
val 'Family' = d 950
|
||||||
|
}
|
||||||
|
20127
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'us-ascii'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
20866
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'koi8-r'
|
||||||
|
val 'Family' = d 1251
|
||||||
|
}
|
||||||
|
20932
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'EUC-JP'
|
||||||
|
val 'Family' = d 932
|
||||||
|
}
|
||||||
|
20936
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'x-cp20936'
|
||||||
|
val 'Family' = d 936
|
||||||
|
}
|
||||||
|
21866
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'koi8-ru'
|
||||||
|
val 'Family' = d 1251
|
||||||
|
}
|
||||||
|
28591
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-1'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
28592
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-2'
|
||||||
|
val 'Family' = d 1250
|
||||||
|
}
|
||||||
|
28593
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-3'
|
||||||
|
val 'Family' = d 1254
|
||||||
|
}
|
||||||
|
28594
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-4'
|
||||||
|
val 'Family' = d 1257
|
||||||
|
}
|
||||||
|
28595
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-5'
|
||||||
|
val 'Family' = d 1251
|
||||||
|
}
|
||||||
|
28596
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-6'
|
||||||
|
val 'Family' = d 1256
|
||||||
|
}
|
||||||
|
28597
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-7'
|
||||||
|
val 'Family' = d 1253
|
||||||
|
}
|
||||||
|
28598
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-8'
|
||||||
|
val 'Family' = d 1255
|
||||||
|
}
|
||||||
|
28599
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-9'
|
||||||
|
val 'Family' = d 1254
|
||||||
|
}
|
||||||
|
28603
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-13'
|
||||||
|
val 'Family' = d 1257
|
||||||
|
}
|
||||||
|
28605
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-8859-15'
|
||||||
|
val 'Family' = d 1252
|
||||||
|
}
|
||||||
|
50220
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-2022-jp'
|
||||||
|
val 'Family' = d 932
|
||||||
|
}
|
||||||
|
50221
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-2022-jp'
|
||||||
|
val 'Family' = d 932
|
||||||
|
}
|
||||||
|
50222
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'iso-2022-jp'
|
||||||
|
val 'Family' = d 932
|
||||||
|
}
|
||||||
|
50932
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s '_autodetect'
|
||||||
|
val 'Family' = d 932
|
||||||
|
}
|
||||||
|
50936
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s '_autodetect_chs'
|
||||||
|
val 'Family' = d 936
|
||||||
|
}
|
||||||
|
50949
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s '_autodetect_kr'
|
||||||
|
val 'Family' = d 949
|
||||||
|
}
|
||||||
|
50950
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s '_autodetect_cht'
|
||||||
|
val 'Family' = d 950
|
||||||
|
}
|
||||||
|
51932
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'euc-jp'
|
||||||
|
val 'Family' = d 932
|
||||||
|
}
|
||||||
|
51949
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'euc-kr'
|
||||||
|
val 'Family' = d 951
|
||||||
|
}
|
||||||
|
52936
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'hz-gb-2312'
|
||||||
|
val 'Family' = d 936
|
||||||
|
}
|
||||||
|
54936
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'GB18030'
|
||||||
|
val 'Family' = d 936
|
||||||
|
}
|
||||||
|
65000
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'utf-7'
|
||||||
|
val 'Family' = d 1200
|
||||||
|
}
|
||||||
|
65001
|
||||||
|
{
|
||||||
|
val 'BodyCharset' = s 'utf-8'
|
||||||
|
val 'Family' = d 1200
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2581,7 +2581,6 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G"
|
||||||
11,,cryptdlg.dll,1
|
11,,cryptdlg.dll,1
|
||||||
11,,cryptnet.dll,1
|
11,,cryptnet.dll,1
|
||||||
11,,devenum.dll,1
|
11,,devenum.dll,1
|
||||||
11,,mlang.dll,1
|
|
||||||
11,,mp3dmod.dll,1
|
11,,mp3dmod.dll,1
|
||||||
11,,mscoree.dll,1
|
11,,mscoree.dll,1
|
||||||
11,,mshtml.dll,1
|
11,,mshtml.dll,1
|
||||||
|
|
Loading…
Reference in New Issue