mlang: Use a registry script to register codepages.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2022-03-18 13:46:30 +01:00
parent 083dea7fce
commit 8adebaaab7
5 changed files with 396 additions and 68 deletions

View File

@ -3,7 +3,7 @@ IMPORTLIB = mlang
IMPORTS = uuid ole32 gdi32 advapi32
DELAYIMPORTS = oleaut32
C_SRCS = \
mlang.c
IDL_SRCS = mlang_classes.idl
SOURCES = \
mlang.c \
mlang.rc \
mlang_classes.idl

View File

@ -3922,69 +3922,6 @@ HRESULT WINAPI DllCanUnloadNow(void)
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)
{
if (!unknown) return E_INVALIDARG;

20
dlls/mlang/mlang.rc Normal file
View File

@ -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

372
dlls/mlang/mlang.rgs Normal file
View File

@ -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
}
}
}
}
}

View File

@ -2581,7 +2581,6 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G"
11,,cryptdlg.dll,1
11,,cryptnet.dll,1
11,,devenum.dll,1
11,,mlang.dll,1
11,,mp3dmod.dll,1
11,,mscoree.dll,1
11,,mshtml.dll,1