unicode: Generate a registry script for Nls keys.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Alexandre Julliard 2020-03-17 13:58:18 +01:00
parent d87d4a4a04
commit 712839d581
5 changed files with 170 additions and 72 deletions

View File

@ -22,3 +22,5 @@ C_SRCS = \
thread.c \
version.c \
wctype.c
RC_SRCS = kernelbase.rc

View File

@ -0,0 +1,20 @@
/*
* Copyright 2020 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: kernelbase.rgs */
1 WINE_REGISTRY kernelbase.rgs

View File

@ -0,0 +1,91 @@
HKLM
{
NoRemove SYSTEM
{
NoRemove CurrentControlSet
{
NoRemove Control
{
NoRemove Nls
{
Codepage
{
val '37' = s 'c_037.nls'
val '437' = s 'c_437.nls'
val '500' = s 'c_500.nls'
val '737' = s 'c_737.nls'
val '775' = s 'c_775.nls'
val '850' = s 'c_850.nls'
val '852' = s 'c_852.nls'
val '855' = s 'c_855.nls'
val '857' = s 'c_857.nls'
val '860' = s 'c_860.nls'
val '861' = s 'c_861.nls'
val '862' = s 'c_862.nls'
val '863' = s 'c_863.nls'
val '864' = s 'c_864.nls'
val '865' = s 'c_865.nls'
val '866' = s 'c_866.nls'
val '869' = s 'c_869.nls'
val '874' = s 'c_874.nls'
val '875' = s 'c_875.nls'
val '932' = s 'c_932.nls'
val '936' = s 'c_936.nls'
val '949' = s 'c_949.nls'
val '950' = s 'c_950.nls'
val '1026' = s 'c_1026.nls'
val '1250' = s 'c_1250.nls'
val '1251' = s 'c_1251.nls'
val '1252' = s 'c_1252.nls'
val '1253' = s 'c_1253.nls'
val '1254' = s 'c_1254.nls'
val '1255' = s 'c_1255.nls'
val '1256' = s 'c_1256.nls'
val '1257' = s 'c_1257.nls'
val '1258' = s 'c_1258.nls'
val '1361' = s 'c_1361.nls'
val '10000' = s 'c_10000.nls'
val '10001' = s 'c_10001.nls'
val '10002' = s 'c_10002.nls'
val '10003' = s 'c_10003.nls'
val '10004' = s 'c_10004.nls'
val '10005' = s 'c_10005.nls'
val '10006' = s 'c_10006.nls'
val '10007' = s 'c_10007.nls'
val '10008' = s 'c_10008.nls'
val '10010' = s 'c_10010.nls'
val '10017' = s 'c_10017.nls'
val '10021' = s 'c_10021.nls'
val '10029' = s 'c_10029.nls'
val '10079' = s 'c_10079.nls'
val '10081' = s 'c_10081.nls'
val '10082' = s 'c_10082.nls'
val '20127' = s 'c_20127.nls'
val '20866' = s 'c_20866.nls'
val '21866' = s 'c_21866.nls'
val '28591' = s 'c_28591.nls'
val '28592' = s 'c_28592.nls'
val '28593' = s 'c_28593.nls'
val '28594' = s 'c_28594.nls'
val '28595' = s 'c_28595.nls'
val '28596' = s 'c_28596.nls'
val '28597' = s 'c_28597.nls'
val '28598' = s 'c_28598.nls'
val '28599' = s 'c_28599.nls'
val '28603' = s 'c_28603.nls'
val '28605' = s 'c_28605.nls'
val '20932' = s 'c_20932.nls'
}
Normalization
{
val '1' = s 'normnfc.nls'
val '2' = s 'normnfd.nls'
val '5' = s 'normnfkc.nls'
val '6' = s 'normnfkd.nls'
val 'd' = s 'normidna.nls'
}
}
}
}
}
}

View File

@ -764,72 +764,6 @@ HKLM,SOFTWARE\Microsoft\Active Setup\Installed Components\{6BF52A52-394A-11d3-B1
HKLM,SOFTWARE\Microsoft\Active Setup\Installed Components\{6BF52A52-394A-11d3-B153-00C04F79FAA6},"Version",2,"12,0,7601,18840"
[Nls]
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"37",,"c_037.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"437",,"c_437.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"500",,"c_500.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"737",,"c_737.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"775",,"c_775.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"850",,"c_850.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"852",,"c_852.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"855",,"c_855.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"857",,"c_857.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"860",,"c_860.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"861",,"c_861.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"862",,"c_862.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"863",,"c_863.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"864",,"c_864.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"865",,"c_865.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"866",,"c_866.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"869",,"c_869.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"874",,"c_874.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"875",,"c_875.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"932",,"c_932.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"936",,"c_936.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"949",,"c_949.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"950",,"c_950.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1026",,"c_1026.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1250",,"c_1250.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1251",,"c_1251.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1252",,"c_1252.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1253",,"c_1253.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1254",,"c_1254.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1255",,"c_1255.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1256",,"c_1256.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1257",,"c_1257.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1258",,"c_1258.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1361",,"c_1361.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10000",,"c_10000.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10001",,"c_10001.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10002",,"c_10002.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10003",,"c_10003.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10004",,"c_10004.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10005",,"c_10005.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10006",,"c_10006.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10007",,"c_10007.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10008",,"c_10008.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10010",,"c_10010.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10017",,"c_10017.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10021",,"c_10021.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10029",,"c_10029.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10079",,"c_10079.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10081",,"c_10081.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10082",,"c_10082.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"20127",,"c_20127.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"20866",,"c_20866.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"20932",,"c_20932.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"21866",,"c_21866.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28591",,"c_28591.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28592",,"c_28592.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28593",,"c_28593.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28594",,"c_28594.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28595",,"c_28595.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28596",,"c_28596.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28597",,"c_28597.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28598",,"c_28598.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28599",,"c_28599.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28603",,"c_28603.nls"
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28605",,"c_28605.nls"
HKLM,System\CurrentControlSet\Control\Nls\Language,"0401",,"l_intl.nls"
HKLM,System\CurrentControlSet\Control\Nls\Language,"0402",,"l_intl.nls"
HKLM,System\CurrentControlSet\Control\Nls\Language,"0403",,"l_intl.nls"
@ -1153,12 +1087,6 @@ HKLM,System\CurrentControlSet\Control\Nls\Locale\Alternate Sorts,"00021004",,"a"
HKLM,System\CurrentControlSet\Control\Nls\Locale\Alternate Sorts,"00021404",,"9"
HKLM,System\CurrentControlSet\Control\Nls\Locale\Alternate Sorts,"00030404",,"9"
HKLM,System\CurrentControlSet\Control\Nls\Normalization,"1",,"normnfc.nls"
HKLM,System\CurrentControlSet\Control\Nls\Normalization,"2",,"normnfd.nls"
HKLM,System\CurrentControlSet\Control\Nls\Normalization,"5",,"normnfkc.nls"
HKLM,System\CurrentControlSet\Control\Nls\Normalization,"6",,"normnfkd.nls"
HKLM,System\CurrentControlSet\Control\Nls\Normalization,"d",,"normidna.nls"
[OLE]
HKLM,"Software\Microsoft\OLE","EnableDCOM",,"Y"
HKLM,"Software\Microsoft\OLE","EnableRemoteConnect",,"N"

View File

@ -440,6 +440,7 @@ my @decomp_compat_table = ();
my @comp_exclusions = ();
my @idna_decomp_table = ();
my @idna_disallowed = ();
my %registry_keys;
my $default_char;
my $default_wchar;
@ -800,6 +801,23 @@ sub load_data()
}
################################################################
# add a new registry key
sub add_registry_key($$)
{
my ($key, $defval) = @_;
$registry_keys{$key} = [ $defval ] unless defined $registry_keys{$key};
}
################################################################
# add a new registry value
sub add_registry_value($$$)
{
my ($key, $name, $value) = @_;
add_registry_key( $key, undef );
push @{$registry_keys{$key}}, "'$name' = s '$value'";
}
################################################################
# define a new lead byte
sub add_lead_byte($)
@ -2218,6 +2236,8 @@ sub dump_norm_table($)
close OUTPUT;
save_file($filename);
add_registry_value( "Normalization", sprintf( "%x", $forms{$type} ), "norm$type.nls" );
}
@ -2236,6 +2256,8 @@ sub output_codepage_file($)
close OUTPUT;
save_file($output);
add_registry_value( "Codepage", sprintf( "%d", $codepage ), sprintf( "c_%03d.nls", $codepage ));
}
################################################################
@ -2335,6 +2357,40 @@ sub dump_msdata_codepage($)
}
################################################################
# build the script to create registry keys
sub dump_registry_script($%)
{
my ($filename, %keys) = @_;
my $indent = 1;
printf "Building %s\n", $filename;
open OUTPUT, ">$filename.new" or die "Cannot create $filename";
print OUTPUT "HKLM\n{\n";
foreach my $k (split /\\/, "SYSTEM\\CurrentControlSet\\Control\\Nls")
{
printf OUTPUT "%*sNoRemove %s\n%*s{\n", 4 * $indent, "", $k, 4 * $indent, "";
$indent++;
}
foreach my $k (sort keys %keys)
{
my @subkeys = split /\\/, $k;
my ($def, @vals) = @{$keys{$k}};
for (my $i = 0; $i < @subkeys; $i++)
{
printf OUTPUT "%*s%s%s\n%*s{\n", 4 * $indent, "", $subkeys[$i],
$i == $#subkeys && $def ? " = s '$def'" : "", 4 * $indent, "";
$indent++;
}
foreach my $v (@vals) { printf OUTPUT "%*sval $v\n", 4 * $indent, ""; }
for (my $i = 0; $i < @subkeys; $i++) { printf OUTPUT "%*s}\n", 4 * --$indent, ""; }
}
while ($indent) { printf OUTPUT "%*s}\n", 4 * --$indent, ""; }
close OUTPUT;
save_file($filename);
}
################################################################
# save a file if modified
sub save_file($)
@ -2383,6 +2439,7 @@ dump_norm_table( "nls/normnfkd.nls" );
dump_norm_table( "nls/normidna.nls" );
foreach my $file (@allfiles) { dump_msdata_codepage( $file ); }
dump_eucjp_codepage();
dump_registry_script( "dlls/kernelbase/kernelbase.rgs", %registry_keys );
exit 0;