From 29734833188fae012794b5f8bc06573c601e4ab4 Mon Sep 17 00:00:00 2001 From: "KJK::Hyperion" Date: Sun, 28 Sep 2008 22:39:45 +0000 Subject: [PATCH] modified dll/win32/kernel32/kernel32.def modified dll/win32/kernel32/kernel32.rbuild added dll/win32/kernel32/misc/icustubs.cpp Export NormalizeString and IsStringNormalized from kernel32.dll. This (finally) makes normaliz.dll (50%) functional. Link kernel32.dll to ICU. Finally. Binary size increased by about 300 KB on a debug build (this is only the beginning). Umpteenth copy of C++ and Win32 stubs required to get ICU to link properly added to kernel32.dll. This commit dedicated to Timo Kreuzer. <3. svn path=/trunk/; revision=36586 --- reactos/dll/win32/kernel32/kernel32.def | 7 ++ reactos/dll/win32/kernel32/kernel32.rbuild | 8 +- reactos/dll/win32/kernel32/misc/icustubs.cpp | 82 ++++++++++++++++++++ 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 reactos/dll/win32/kernel32/misc/icustubs.cpp diff --git a/reactos/dll/win32/kernel32/kernel32.def b/reactos/dll/win32/kernel32/kernel32.def index d26f753bd74..0d759c94a12 100644 --- a/reactos/dll/win32/kernel32/kernel32.def +++ b/reactos/dll/win32/kernel32/kernel32.def @@ -1044,3 +1044,10 @@ lstrcpynW@12 lstrlen@4=lstrlenA@4 lstrlenA@4 lstrlenW@4 + +; TODO: these require the data file +;IdnToAscii@20 +;IdnToNameprepUnicode@20 +;IdnToUnicode@20 +IsNormalizedString@12 +NormalizeString@20 diff --git a/reactos/dll/win32/kernel32/kernel32.rbuild b/reactos/dll/win32/kernel32/kernel32.rbuild index 55899c5996a..3217f2d9028 100644 --- a/reactos/dll/win32/kernel32/kernel32.rbuild +++ b/reactos/dll/win32/kernel32/kernel32.rbuild @@ -110,6 +110,7 @@ lcformat.c profile.c utils.c + icustubs.cpp @@ -130,7 +131,12 @@ kernel32_base wine pseh - ntdll + kernel32.rc + + normalize + icu4ros + + ntdll diff --git a/reactos/dll/win32/kernel32/misc/icustubs.cpp b/reactos/dll/win32/kernel32/misc/icustubs.cpp new file mode 100644 index 00000000000..2eea6912d52 --- /dev/null +++ b/reactos/dll/win32/kernel32/misc/icustubs.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2008, KJK::Hyperion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * - Neither the name of the ReactOS Foundation nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +// FIXME: move stubs elsewhere + +#include +#include + +#include + +extern "C" +{ +void WINAPI EnterCriticalSection(PCRITICAL_SECTION p) { RtlEnterCriticalSection((PRTL_CRITICAL_SECTION)p); } +void WINAPI LeaveCriticalSection(PCRITICAL_SECTION p) { RtlLeaveCriticalSection((PRTL_CRITICAL_SECTION)p); } +void WINAPI DeleteCriticalSection(PCRITICAL_SECTION p) { RtlDeleteCriticalSection((PRTL_CRITICAL_SECTION)p); } + +void free(void * memory) +{ + RtlFreeHeap(GetProcessHeap(), 0, memory); +} + +void * malloc(size_t size) +{ + return RtlAllocateHeap(GetProcessHeap(), 0, size); +} + +void * realloc(void * memory, size_t size) +{ + return RtlReAllocateHeap(GetProcessHeap(), 0, memory, size); +} + +int __cdecl _purecall() +{ + FatalAppExitW(0, L"pure virtual call"); + FatalExit(0); + return 0; +} + +__attribute__((alias("_purecall"))) void __cxa_pure_virtual(void); + +void _assert() +{ + FatalAppExitW(0, L"assertion failed"); + FatalExit(0); +} +} + +void operator delete(void * memory) +{ + free(memory); +} + +// EOF