From c7196dc945879e24e0f255c9e108fe116b3b11f2 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Sun, 29 Nov 2020 21:35:16 +0100 Subject: [PATCH] libport: Move the case mapping table back to libwine and stop updating it. Signed-off-by: Alexandre Julliard --- dlls/winex11.drv/window.c | 2 ++ include/wine/unicode.h | 7 +++--- libs/port/Makefile.in | 1 - libs/wine/Makefile.in | 1 + libs/{port => wine}/casemap.c | 6 +++++ libs/wine/wine.map | 4 +-- tools/make_unicode | 47 ----------------------------------- 7 files changed, 14 insertions(+), 54 deletions(-) rename libs/{port => wine}/casemap.c (99%) diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 457173964eb..ba722721ad2 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -37,6 +37,8 @@ #include #endif /* HAVE_LIBXSHAPE */ +/* avoid conflict with field names in included win32 headers */ +#undef Status #include "windef.h" #include "winbase.h" #include "wingdi.h" diff --git a/include/wine/unicode.h b/include/wine/unicode.h index a346f4cbecd..011aacf7386 100644 --- a/include/wine/unicode.h +++ b/include/wine/unicode.h @@ -26,6 +26,7 @@ #include #include #include +#include #ifdef __WINE_WINE_TEST_H #error This file should not be used in Wine tests @@ -45,14 +46,12 @@ extern "C" { WINE_UNICODE_INLINE WCHAR tolowerW( WCHAR ch ) { - extern const WCHAR wine_casemap_lower[]; - return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; + return RtlDowncaseUnicodeChar( ch ); } WINE_UNICODE_INLINE WCHAR toupperW( WCHAR ch ) { - extern const WCHAR wine_casemap_upper[]; - return ch + wine_casemap_upper[wine_casemap_upper[ch >> 8] + (ch & 0xff)]; + return RtlUpcaseUnicodeChar( ch ); } /* the character type contains the C1_* flags in the low 12 bits */ diff --git a/libs/port/Makefile.in b/libs/port/Makefile.in index aabcc833ec6..5d1019aa801 100644 --- a/libs/port/Makefile.in +++ b/libs/port/Makefile.in @@ -1,7 +1,6 @@ STATICLIB = libwine_port.a C_SRCS = \ - casemap.c \ ffs.c \ fstatvfs.c \ getopt.c \ diff --git a/libs/wine/Makefile.in b/libs/wine/Makefile.in index 74ffc0d5f83..f4086b1a763 100644 --- a/libs/wine/Makefile.in +++ b/libs/wine/Makefile.in @@ -66,6 +66,7 @@ C_SRCS = \ c_936.c \ c_949.c \ c_950.c \ + casemap.c \ collation.c \ compose.c \ config.c \ diff --git a/libs/port/casemap.c b/libs/wine/casemap.c similarity index 99% rename from libs/port/casemap.c rename to libs/wine/casemap.c index 540f5ad653c..518575faad5 100644 --- a/libs/port/casemap.c +++ b/libs/wine/casemap.c @@ -2,6 +2,10 @@ /* generated from https://www.unicode.org/Public/13.0.0/ucd/UCD.zip:UnicodeData.txt */ /* DO NOT EDIT!! */ +#include "wine/asm.h" + +#ifdef __ASM_OBSOLETE + #include "windef.h" const WCHAR wine_casemap_lower[4122] = @@ -1101,3 +1105,5 @@ const WCHAR wine_casemap_upper[4557] = 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; + +#endif /* __ASM_OBSOLETE */ diff --git a/libs/wine/wine.map b/libs/wine/wine.map index 192bf4bd46f..6147dccc77e 100644 --- a/libs/wine/wine.map +++ b/libs/wine/wine.map @@ -7,8 +7,6 @@ WINE_1.0 __wine_main_environ; __wine_main_wargv; wine_anon_mmap; - wine_casemap_lower; - wine_casemap_upper; wine_dll_set_callback; wine_init; wine_init_argv0_path; @@ -64,6 +62,8 @@ WINE_1.0 vsnprintfW; vsprintfW; wine_call_on_stack; + wine_casemap_lower; + wine_casemap_upper; wine_compare_string; wine_cp_enum_table; wine_cp_get_table; diff --git a/tools/make_unicode b/tools/make_unicode index 8d5747ce253..c454c74440f 100755 --- a/tools/make_unicode +++ b/tools/make_unicode @@ -1716,52 +1716,6 @@ sub dump_digit_folding($) } -################################################################ -# dump the case mapping tables -sub dump_case_mappings($) -{ - my $filename = shift; - open OUTPUT,">$filename.new" or die "Cannot create $filename"; - print "Building $filename\n"; - print OUTPUT "/* Unicode case mappings */\n"; - print OUTPUT "/* generated from $UNIDATA:UnicodeData.txt */\n"; - print OUTPUT "/* DO NOT EDIT!! */\n\n"; - print OUTPUT "#include \"windef.h\"\n\n"; - - my @upper = @toupper_table; - my @lower = @tolower_table; - remove_linguistic_mappings( \@upper, \@lower ); - - dump_case_table( "wine_casemap_lower", @lower ); - print OUTPUT "\n"; - dump_case_table( "wine_casemap_upper", @upper ); - close OUTPUT; - save_file($filename); -} - - -################################################################ -# dump a case mapping table -sub dump_case_table($@) -{ - my ($name,@table) = @_; - - for (my $i = 0; $i < 65536; $i++) - { - next unless defined $table[$i]; - $table[$i] = ($table[$i] - $i) & 0xffff; - } - - my @array = compress_array( 256, 0, @table[0..65535] ); - - printf OUTPUT "const WCHAR %s[%d] =\n", $name, scalar @array; - printf OUTPUT "{\n /* index */\n"; - printf OUTPUT "%s,\n", dump_array( 16, 0, @array[0..255] ); - printf OUTPUT " /* data */\n"; - printf OUTPUT "%s", dump_array( 16, 0, @array[256..$#array] ); - printf OUTPUT "\n};\n"; -} - ################################################################ # compress a mapping table by removing identical rows sub compress_array($$@) @@ -2784,7 +2738,6 @@ sub save_file($) chdir ".." if -f "./make_unicode"; load_data(); -dump_case_mappings( "libs/port/casemap.c" ); dump_sortkeys( "dlls/kernelbase/collation.c" ); dump_ctype_tables( "libs/port/wctype.c" ); dump_bidi_dir_table( "dlls/gdi32/uniscribe/direction.c" );