Release 980601

Sun May 31 13:40:13 1998  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [if1632/signal.c]
	Added display of exception name.

	* [loader/task.c]
	Yet another attempt at fixing SwitchStackTo/SwitchStackBack.

	* [memory/selector.c] [relay32/builtin32.c] [tools/build.c]
	  [win32/kernel32.c]
	Generate an assembly stub for Win32 register functions to make
	their names available at link time.

	* [programs/*/Makefile.in]
	Added hacks to support old resource compiler.

Fri May 29 16:27:14 1998  Marcus Meissner <marcus@jet.franken.de>

	* [tools/testrun]
	Merge of my testscripts at home into one single perl program
	(tested with perl5). Works only on Linux due to 'ps' and 'ipcs'
	magic.

	* [controls/menu.c]
	Added some DefaultMenuItem stubs.

	* [debugger/stabs.c]
	Fixed stabs loading, now supports (int,int) typeinfo format used
	by gcc-2.8 and egcs-1. If it still crashes, please mail me.

	* [if1632/][relay32/]
	Added msvideo.dll (stubs only)
	Replaced some ptr by str for stringcases
	Added some new stubs (VxDCall, FindCloseNotif....)

	* [misc/network.c]
	Some argument fixes.

	* [misc/registry.c][misc/cpu.c]
	Registry initialization partially rewritten and enhanced.

	* [scheduler/*.c]
	Some additions so we don't do kill(0,SIGUSR1) (kill processgroup
	instead of targeted thread)
	Added SetThreadContext.

Thu May 28 23:59:59 1998  Bertho Stultiens <bertho@akhphd.au.dk>

	* [tools/wrc/*]
	New resource compiler version 1.0.0 (28-May-1998)

	* [Make.rules.in] [Makefile.in]
	Changed and added rc rules to point to tools/wrc/wrc.

	* [configure.in] [include/config.h.in]
	Added check for function 'stricmp'.

	* [include/resource.h]
	Commented out the old resource structure to catch references.
	It also includes wrc_rsc.h.

	* [include/wrc_rsc.h]
	New file. Definitions for the resources generated with wrc.

	* [include/windows.h]
	Added #ifdef RC_INVOKED to exclude stdarg.h.
	Added SS_NOTIFY flag.

	* [include/winnls.h]
	Added SUBLANG_* definitions and corrected some defaults.

	* [loader/libres.c]
	Changed the sysres load functions to support wrc generated
	resources.

	* [resource/sysres_*.rc]
	Added #include <windows.h>

	* [resource/sysres.c]
	Changed declarations to match wrc's output

	* [resource/Makefile.in]
	Changed rules to work with wrc.

	* [tools/makedep.c]
	Changed generation of .rc file dependencies to .s target.

Thu May 28 22:28:39 1998  Eric Kohl <ekohl@abo.rhein-zeitung.de>

	* [files/file.c][include/windows.c][relay32/kernel32.spec]
	Implemented GetFileAttributesEx32A/W.

	* [misc/imagelist.h][include/commctrl.h][relay32/comctl32.spec]
	Added ImageList_Read and ImageList_Write stubs.
	Added ImageList_AddIcon function.
	Added ImageList_LoadImage. It is the same as ImageList_LoadImage32A.

	* [controls/header.c]
	Fixed bitmap drawing bug.
	Added full bitmap support.

	* [include/commctrl.h]
	Added missing header macros.

	* [controls/toolbar.c][include/toolbar.h][include/commctrl.h]
	  [controls/commctrl.c] [relay32/comctl32.spec]
	First implementation of toolbar control.
	Implemented CreateToolbar, CreateToolbarEx and CreateMappedBitmap.

	* [controls/progress.c][controls/status.c]
	Some code cleanup.

	* [controls/commctrl.c][include/commctrl.h][relay32/comctl32.spec]
	Removed CreateStatusWindow16 and DrawStatusText16.
	CreateStatusWindow is the same as CreateStatusWindow32A.
	DrawStatusText is the same as DrawStatusText32A.

Thu May 28 16:01:28 1998  Matthew J. Francis  <asbel@dial.pipex.com>

	* [objects/bitmap.c] [objects/bitmap.h] [objects/oembitmap.c]
	  [objects/dc.c] [graphics/x11drv/bitblt.c]
	Added partial implementation of CreateDIBSection, with great thanks
	to Ulrich Weigand <weigand@informatik.uni-erlangen.de> for
	contributing the bulk of the patch.

Wed May 27 19:04:31 1998  Ulrich Weigand <weigand@informatik.uni-erlangen.de>

	* [win32/kernel32.c] [if1632/thunk.c] [include/flatthunk.h]
	ThunkConnect16 and related functions moved to emulator.

	* [loader/ne/segment.c]
	Call DllEntryPoint with correct arguments.

	* [relay32/builtin32.c]
	Bugfix: Relay debugging did not work for multiple processes.

	* [controls/menu.c]
	Bugfix: dwItemData was not set for MF_OWNERDRAW menus.

	* [if1632/relay.c] [relay32/relay386.c]
	Relay messages converted to use DPRINTF.

	* [controls/desktop.c] [relay32/user32.spec]
	Implemented PaintDesktop.

	* [files/profile.c] [if1632/kernel.spec] [misc/network.c]
	  [misc/printdrv.c] [relay32/winspool.spec] 
	  [win32/ordinals.c] [relay32/kernel32.spec]
	Some stubs added.

	* [relay32/mpr.spec]
	All ordinals were off by one.

Tue May 26 13:32:57 1998  Bill Hawes <whawes@star.net>

	* [misc/lstr.c] [include/casemap.h] [tools/unimap.pl]
	Added Unicode case conversion routines towupper/towlower,
	with mapping tables casemap.h created by tools/unimap.pl.

	* [misc/ntdll.c] [include/winnls.h] [relay32/ntdll.spec]
	  [relay32/advapi.spec]
	Minimal implementation of IsTextUnicode, just enough to get
	NT4 notepad to open ascii/unicode files.

	* [Make.rules.in] [resources/sysres_En.rc]
	Added include file dlgs.h for building resource files, so that
	resources can refer to defined values (e.g. pshHelp).

	* [misc/crtdll.c] [relay32/crtdll.spec]
	Use towupper/towlower for 32W case conversions.

	* [memory/string.c]
	Use towupper for 32W case conversions.

	* [ole/ole2nls.c]
	Use towupper for 32W case conversions; fix mem leak; minor cleanup

	* [controls/edit.c]
	Added soft break flag to edit state. Print unknown action values
	for WM_VSCROLL (action 190 occurs when running NT4 notepad.)

Mon May 25 22:42:40 1998  Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>

	* [files/file.c]
	Care for a pathological case in SetFilePointer.

	* [graphics/x11drv/xfont.c]
	Handle longer Font names in LFD_ComposeLFD and try to catch errors.

	* [loader/pe_image.c]
	Unload Dummymodule when PE_LoadLibraryEx32A fails with
	PE_LoadImage (makes Encarta 98 installer proceed).

	* [misc/registry.c]
	Move a check for a special case in RegCreateKeyEx32W after the
	check for existence.

Tue May 25 20:18:26 1998  Matthew Becker <mbecker@glasscity.net>

	* [misc/ntdll.c]
	Added some stubs, just guessing at the size of their param lists.

	* [misc/registry.c]
	Added stubs for RegUnLoadKey, RegSetKeySecurity, RegSaveKey,
	RegRestoreKey, and RegReplaceKey

	* [programs/regtest/regtest.c]
	Updated registry testing program.

Sun May 24 18:11:40 1998  Alex Priem <alexp@sci.kun.nl>

	* [file/profile.c]
	Added flag 'return_values' to PROFILE_GetSection.

Sun May 24 13:41:10 1998  James Juran <jrj120@psu.edu>

	* [misc/shell.c] [files/directory.c]
	Documentation/debugging info additions.

	* [*/*.c] [include/*.h]
	Moved many extern function definitions to appropriate header files.
	Cleaned up a few compile warnings.
	If #include "debug.h" is present, removed #include <stdio.h>.
	debug.h includes stdio.h, so it is not necessary to include both.

	* [graphics/*.c] [if1632/signal.c] [ipc/*.c] [scheduler/*.c]
	  [win32/*.c] [windows/*.c]
	Final patch to convert fprintf statements to new debugging interface.
	Some fprintfs are still left, especially in the debugger/ directory.
	However, IMHO, it's not worth the effort to change the rest.

Fri May 22 21:58:35 1998  Morten Welinder  <terra@diku.dk>

	* [windows/keyboard.c]
	Correct handling of keys "`-=[]\;',./".

Fri May 22 12:06:00 1998  Per Lindstrm <pelinstr@algonet.se>

	* [include/windows.h] [relay32/kernel32.spec] [win32/console.c]
	Added stub for ReadConsoleOutputCharacter32A.

Thu May 21 16:45:48 1998  Pascal Cuoq <pcuoq@ens-lyon.fr>

	* [ole/ole2nls.c]
	Began better implementation of LCMapString32A.
	Not very well tested yet, and still need improvements.

	* [controls/scroll.c]
	Documented functions.

Wed May 20 21:37:56 1998  Peter Hunnisett <hunnise@nortel.ca>

	* [include/windows.h][misc/main.c]
	Change SystemParameterInfo to support SPI_GETHIGHCONTRAST. Also
	include some missing SPI_ definitions.

	* [include/dsound.h][multimedia/dsound.c][relay32/dplayx.spec]
	Added stubs for DirectPlayLobbyCreate[AW]. Not sure if these
	should go into a new files dplayx.c? Anyone care?

	* [include/winnls.h]
	Added two missing flags for the CompareString32 functions.
This commit is contained in:
Alexandre Julliard 1998-06-01 10:44:35 +00:00
parent dadf78ffa9
commit a845b88ead
310 changed files with 18168 additions and 2835 deletions

View File

@ -1,13 +1,14 @@
This is release 980517 of Wine, the MS Windows emulator. This is still a
This is release 980601 of Wine, the MS Windows emulator. This is still a
developer's only release. There are many bugs and many unimplemented API
features. Most applications still do not work correctly.
Patches should be submitted to "julliard@lrc.epfl.ch". Please don't
forget to include a ChangeLog entry.
WHAT'S NEW with Wine-980517: (see ChangeLog for details)
- Lots of common controls improvements.
- Better thunking support.
WHAT'S NEW with Wine-980601: (see ChangeLog for details)
- New resource compiler.
- Toolbar control.
- Partial implementation of CreateDIBSection.
- Lots of bug fixes.
See the README file in the distribution for installation instructions.
@ -16,10 +17,10 @@ Because of lags created by using mirror, this message may reach you before
the release is available at the ftp sites. The sources will be available
from the following locations:
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-980517.tar.gz
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-980517.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-980517.tar.gz
ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-980517.tar.gz
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-980601.tar.gz
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-980601.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-980601.tar.gz
ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-980601.tar.gz
It should also be available from any site that mirrors tsx-11 or sunsite.

View File

@ -23,6 +23,7 @@ John Burton,
Niels de Carpentier,
Gordon Chaffee,
Jimen Ching,
Pascal Cuoq,
David A. Cuthbert,
Huw D. M. Davies,
Roman Dolejsi,
@ -34,6 +35,7 @@ David Faure,
Claus Fischer,
Olaf Flebbe,
Chad Fraleigh,
Matthew Francis,
Peter Galbavy,
Ramon Garcia,
Matthew Ghio,
@ -42,6 +44,7 @@ Hans de Graaff,
Charles M. Hannum,
Adrian Harvey,
John Harvey,
Bill Hawes,
Cameron Heide,
Jochen Hoenicke,
Onno Hovers,
@ -123,6 +126,7 @@ Sven Verdoolaege,
Ronan Waide,
Eric Warnke,
Manfred Weichel,
Ulrich Weigand,
Morten Welinder,
Len White,
Lawson Whitney,

264
ChangeLog
View File

@ -1,3 +1,267 @@
----------------------------------------------------------------------
Sun May 31 13:40:13 1998 Alexandre Julliard <julliard@lrc.epfl.ch>
* [if1632/signal.c]
Added display of exception name.
* [loader/task.c]
Yet another attempt at fixing SwitchStackTo/SwitchStackBack.
* [memory/selector.c] [relay32/builtin32.c] [tools/build.c]
[win32/kernel32.c]
Generate an assembly stub for Win32 register functions to make
their names available at link time.
* [programs/*/Makefile.in]
Added hacks to support old resource compiler.
Fri May 29 16:27:14 1998 Marcus Meissner <marcus@jet.franken.de>
* [tools/testrun]
Merge of my testscripts at home into one single perl program
(tested with perl5). Works only on Linux due to 'ps' and 'ipcs'
magic.
* [controls/menu.c]
Added some DefaultMenuItem stubs.
* [debugger/stabs.c]
Fixed stabs loading, now supports (int,int) typeinfo format used
by gcc-2.8 and egcs-1. If it still crashes, please mail me.
* [if1632/][relay32/]
Added msvideo.dll (stubs only)
Replaced some ptr by str for stringcases
Added some new stubs (VxDCall, FindCloseNotif....)
* [misc/network.c]
Some argument fixes.
* [misc/registry.c][misc/cpu.c]
Registry initialization partially rewritten and enhanced.
* [scheduler/*.c]
Some additions so we don't do kill(0,SIGUSR1) (kill processgroup
instead of targeted thread)
Added SetThreadContext.
Thu May 28 23:59:59 1998 Bertho Stultiens <bertho@akhphd.au.dk>
* [tools/wrc/*]
New resource compiler version 1.0.0 (28-May-1998)
* [Make.rules.in] [Makefile.in]
Changed and added rc rules to point to tools/wrc/wrc.
* [configure.in] [include/config.h.in]
Added check for function 'stricmp'.
* [include/resource.h]
Commented out the old resource structure to catch references.
It also includes wrc_rsc.h.
* [include/wrc_rsc.h]
New file. Definitions for the resources generated with wrc.
* [include/windows.h]
Added #ifdef RC_INVOKED to exclude stdarg.h.
Added SS_NOTIFY flag.
* [include/winnls.h]
Added SUBLANG_* definitions and corrected some defaults.
* [loader/libres.c]
Changed the sysres load functions to support wrc generated
resources.
* [resource/sysres_*.rc]
Added #include <windows.h>
* [resource/sysres.c]
Changed declarations to match wrc's output
* [resource/Makefile.in]
Changed rules to work with wrc.
* [tools/makedep.c]
Changed generation of .rc file dependencies to .s target.
Thu May 28 22:28:39 1998 Eric Kohl <ekohl@abo.rhein-zeitung.de>
* [files/file.c][include/windows.c][relay32/kernel32.spec]
Implemented GetFileAttributesEx32A/W.
* [misc/imagelist.h][include/commctrl.h][relay32/comctl32.spec]
Added ImageList_Read and ImageList_Write stubs.
Added ImageList_AddIcon function.
Added ImageList_LoadImage. It is the same as ImageList_LoadImage32A.
* [controls/header.c]
Fixed bitmap drawing bug.
Added full bitmap support.
* [include/commctrl.h]
Added missing header macros.
* [controls/toolbar.c][include/toolbar.h][include/commctrl.h]
[controls/commctrl.c] [relay32/comctl32.spec]
First implementation of toolbar control.
Implemented CreateToolbar, CreateToolbarEx and CreateMappedBitmap.
* [controls/progress.c][controls/status.c]
Some code cleanup.
* [controls/commctrl.c][include/commctrl.h][relay32/comctl32.spec]
Removed CreateStatusWindow16 and DrawStatusText16.
CreateStatusWindow is the same as CreateStatusWindow32A.
DrawStatusText is the same as DrawStatusText32A.
Thu May 28 16:01:28 1998 Matthew J. Francis <asbel@dial.pipex.com>
* [objects/bitmap.c] [objects/bitmap.h] [objects/oembitmap.c]
[objects/dc.c] [graphics/x11drv/bitblt.c]
Added partial implementation of CreateDIBSection, with great thanks
to Ulrich Weigand <weigand@informatik.uni-erlangen.de> for
contributing the bulk of the patch.
Wed May 27 19:04:31 1998 Ulrich Weigand <weigand@informatik.uni-erlangen.de>
* [win32/kernel32.c] [if1632/thunk.c] [include/flatthunk.h]
ThunkConnect16 and related functions moved to emulator.
* [loader/ne/segment.c]
Call DllEntryPoint with correct arguments.
* [relay32/builtin32.c]
Bugfix: Relay debugging did not work for multiple processes.
* [controls/menu.c]
Bugfix: dwItemData was not set for MF_OWNERDRAW menus.
* [if1632/relay.c] [relay32/relay386.c]
Relay messages converted to use DPRINTF.
* [controls/desktop.c] [relay32/user32.spec]
Implemented PaintDesktop.
* [files/profile.c] [if1632/kernel.spec] [misc/network.c]
[misc/printdrv.c] [relay32/winspool.spec]
[win32/ordinals.c] [relay32/kernel32.spec]
Some stubs added.
* [relay32/mpr.spec]
All ordinals were off by one.
Tue May 26 13:32:57 1998 Bill Hawes <whawes@star.net>
* [misc/lstr.c] [include/casemap.h] [tools/unimap.pl]
Added Unicode case conversion routines towupper/towlower,
with mapping tables casemap.h created by tools/unimap.pl.
* [misc/ntdll.c] [include/winnls.h] [relay32/ntdll.spec]
[relay32/advapi.spec]
Minimal implementation of IsTextUnicode, just enough to get
NT4 notepad to open ascii/unicode files.
* [Make.rules.in] [resources/sysres_En.rc]
Added include file dlgs.h for building resource files, so that
resources can refer to defined values (e.g. pshHelp).
* [misc/crtdll.c] [relay32/crtdll.spec]
Use towupper/towlower for 32W case conversions.
* [memory/string.c]
Use towupper for 32W case conversions.
* [ole/ole2nls.c]
Use towupper for 32W case conversions; fix mem leak; minor cleanup
* [controls/edit.c]
Added soft break flag to edit state. Print unknown action values
for WM_VSCROLL (action 190 occurs when running NT4 notepad.)
Mon May 25 22:42:40 1998 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
* [files/file.c]
Care for a pathological case in SetFilePointer.
* [graphics/x11drv/xfont.c]
Handle longer Font names in LFD_ComposeLFD and try to catch errors.
* [loader/pe_image.c]
Unload Dummymodule when PE_LoadLibraryEx32A fails with
PE_LoadImage (makes Encarta 98 installer proceed).
* [misc/registry.c]
Move a check for a special case in RegCreateKeyEx32W after the
check for existence.
Tue May 25 20:18:26 1998 Matthew Becker <mbecker@glasscity.net>
* [misc/ntdll.c]
Added some stubs, just guessing at the size of their param lists.
* [misc/registry.c]
Added stubs for RegUnLoadKey, RegSetKeySecurity, RegSaveKey,
RegRestoreKey, and RegReplaceKey
* [programs/regtest/regtest.c]
Updated registry testing program.
Sun May 24 18:11:40 1998 Alex Priem <alexp@sci.kun.nl>
* [file/profile.c]
Added flag 'return_values' to PROFILE_GetSection.
Sun May 24 13:41:10 1998 James Juran <jrj120@psu.edu>
* [misc/shell.c] [files/directory.c]
Documentation/debugging info additions.
* [*/*.c] [include/*.h]
Moved many extern function definitions to appropriate header files.
Cleaned up a few compile warnings.
If #include "debug.h" is present, removed #include <stdio.h>.
debug.h includes stdio.h, so it is not necessary to include both.
* [graphics/*.c] [if1632/signal.c] [ipc/*.c] [scheduler/*.c]
[win32/*.c] [windows/*.c]
Final patch to convert fprintf statements to new debugging interface.
Some fprintfs are still left, especially in the debugger/ directory.
However, IMHO, it's not worth the effort to change the rest.
Fri May 22 21:58:35 1998 Morten Welinder <terra@diku.dk>
* [windows/keyboard.c]
Correct handling of keys "`-=[]\;',./".
Fri May 22 12:06:00 1998 Per Lindström <pelinstr@algonet.se>
* [include/windows.h] [relay32/kernel32.spec] [win32/console.c]
Added stub for ReadConsoleOutputCharacter32A.
Thu May 21 16:45:48 1998 Pascal Cuoq <pcuoq@ens-lyon.fr>
* [ole/ole2nls.c]
Began better implementation of LCMapString32A.
Not very well tested yet, and still need improvements.
* [controls/scroll.c]
Documented functions.
Wed May 20 21:37:56 1998 Peter Hunnisett <hunnise@nortel.ca>
* [include/windows.h][misc/main.c]
Change SystemParameterInfo to support SPI_GETHIGHCONTRAST. Also
include some missing SPI_ definitions.
* [include/dsound.h][multimedia/dsound.c][relay32/dplayx.spec]
Added stubs for DirectPlayLobbyCreate[AW]. Not sure if these
should go into a new files dplayx.c? Anyone care?
* [include/winnls.h]
Added two missing flags for the CompareString32 functions.
----------------------------------------------------------------------
Sun May 17 16:23:56 1998 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>

View File

@ -11,6 +11,7 @@
# RC_SRCS : resource source files (optional)
# EXTRA_SRCS : extra source files for make depend (optional)
# EXTRA_OBJS : extra object files (optional)
# WRCEXTRA : extra wrc flags (e.g. '-p _SysRes') (optional)
# First some useful definitions
@ -42,6 +43,8 @@ LINTFLAGS = +posixlib +gnuextensions +trytorecover
BUILD = $(TOPOBJDIR)/tools/build@PROGEXT@
MAKEDEP = $(TOPOBJDIR)/tools/makedep@PROGEXT@
WINERC = $(TOPOBJDIR)/rc/winerc@PROGEXT@
WRC = $(TOPOBJDIR)/tools/wrc/wrc@PROGEXT@
WRCFLAGS = -t -c
WINESTUB = $(TOPOBJDIR)/library/winestub.o
SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'OPTIONS=$(OPTIONS)'
@SET_MAKE@
@ -65,7 +68,7 @@ OBJS = $(C_SRCS:.c=.o) $(GEN_ASM_SRCS:.s=.o) $(ASM_SRCS:.S=.o) \
# Implicit rules
.SUFFIXES: .rc
.SUFFIXES: .rc .res
.c.o:
$(CC) -c $(ALLCFLAGS) -o $*.o $<
@ -76,26 +79,46 @@ OBJS = $(C_SRCS:.c=.o) $(GEN_ASM_SRCS:.s=.o) $(ASM_SRCS:.S=.o) \
.S.o:
$(CC) -c -o $*.o $<
.rc.c:
echo "#include \"windows.h\"" >$*-tmp.c
echo WINDOWS_H_ENDS_HERE >>$*-tmp.c
cat $< >>$*-tmp.c
$(CPP) $(DEFS) $(OPTIONS) $(DIVINCL) -DRC_INVOKED -P $*-tmp.c | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | $(WINERC) $(RCFLAGS) -c -o $* -p $*
$(RM) $*-tmp.c
.rc.s:
$(WRC) $(WRCFLAGS) $(WRCEXTRA) $(DIVINCL) $<
.rc.h:
echo "#include \"windows.h\"" >$*-tmp.c
echo WINDOWS_H_ENDS_HERE >>$*-tmp.c
cat $< >>$*-tmp.c
$(CPP) $(DEFS) $(OPTIONS) $(DIVINCL) -DRC_INVOKED -P $*-tmp.c | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | $(WINERC) $(RCFLAGS) -c -o $* -p $*
$(RM) $*-tmp.c
$(WRC) $(WRCFLAGS) $(WRCEXTRA) $(DIVINCL) -nh $<
.rc.res:
$(WRC) $(WRCFLAGS) $(WRCEXTRA) $(DIVINCL) -r $<
.res.s:
$(WRC) $(WRCFLAGS) $(WRCEXTRA) -b $<
.res.h:
$(WRC) $(WRCFLAGS) $(WRCEXTRA) -bnh $<
# Obsolete
#.rc.c:
# echo "#include \"windows.h\"" >$*-tmp.c
# echo WINDOWS_H_ENDS_HERE >>$*-tmp.c
# cat $< >>$*-tmp.c
# $(CPP) $(DEFS) $(OPTIONS) $(DIVINCL) -DRC_INVOKED -P $*-tmp.c | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | $(WINERC) $(RCFLAGS) -c -o $* -p $*
# $(RM) $*-tmp.c
#
#.rc.h:
# echo "#include \"windows.h\"" >$*-tmp.c
# echo WINDOWS_H_ENDS_HERE >>$*-tmp.c
# cat $< >>$*-tmp.c
# $(CPP) $(DEFS) $(OPTIONS) $(DIVINCL) -DRC_INVOKED -P $*-tmp.c | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | $(WINERC) $(RCFLAGS) -c -o $* -p $*
# $(RM) $*-tmp.c
#
# Rule to rebuild resource compiler
# Rule to rebuild the resource compiler
$(WINERC) check_winerc:
cd $(TOPOBJDIR)/rc; $(SUBMAKE) winerc@PROGEXT@
$(WRC) check_wrc:
cd $(TOPOBJDIR)/tools/wrc; $(SUBMAKE) wrc@PROGEXT@
# Rule to rebuild the 'makedep' program
$(MAKEDEP) check_makedep:
@ -132,7 +155,7 @@ depend:: $(MAKEDEP) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS)
$(MAKEDEP) $(DIVINCL) -C$(SRCDIR) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS)
clean::
$(RM) *.o \#*\# *~ *% *.bak *.orig *.rej *.flc *-tmp.c y.tab.c y.tab.h lex.yy.c core $(GEN_ASM_SRCS) $(RC_SRCS:.rc=.c) $(RC_SRCS:.rc=.h) $(PROGRAMS)
$(RM) *.o \#*\# *~ *% *.bak *.orig *.rej *.flc *-tmp.c y.tab.c y.tab.h lex.yy.c core $(GEN_ASM_SRCS) $(RC_SRCS:.rc=.s) $(RC_SRCS:.rc=.h) $(PROGRAMS)
dummy:

View File

@ -26,6 +26,7 @@ MODULE = none
LIBSUBDIRS = \
rc \
tools \
tools/wrc \
controls \
files \
graphics \

4
configure vendored
View File

@ -2407,7 +2407,7 @@ EOF
fi
for ac_func in clone getpagesize memmove sigaltstack strerror tcgetattr timegm usleep wait4 waitpid
for ac_func in clone getpagesize memmove sigaltstack strerror stricmp tcgetattr timegm usleep wait4 waitpid
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:2414: checking for $ac_func" >&5
@ -3291,6 +3291,7 @@ relay32/Makefile
resources/Makefile
scheduler/Makefile
tools/Makefile
tools/wrc/Makefile
tsx11/Makefile
win32/Makefile
windows/Makefile include/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
@ -3422,6 +3423,7 @@ relay32/Makefile
resources/Makefile
scheduler/Makefile
tools/Makefile
tools/wrc/Makefile
tsx11/Makefile
win32/Makefile
windows/Makefile "}

View File

@ -214,7 +214,7 @@ fi
dnl **** Check for functions and header files ****
AC_CHECK_FUNCS(clone getpagesize memmove sigaltstack strerror tcgetattr timegm usleep wait4 waitpid)
AC_CHECK_FUNCS(clone getpagesize memmove sigaltstack strerror stricmp tcgetattr timegm usleep wait4 waitpid)
AC_CHECK_HEADERS(wctype.h sys/syscall.h syscall.h sys/param.h sys/vfs.h sys/mount.h sys/statfs.h float.h linux/cdrom.h sys/cdio.h sys/filio.h)
AC_HEADER_STAT()
AC_C_CONST()
@ -449,6 +449,7 @@ relay32/Makefile
resources/Makefile
scheduler/Makefile
tools/Makefile
tools/wrc/Makefile
tsx11/Makefile
win32/Makefile
windows/Makefile ])

View File

@ -19,6 +19,7 @@ C_SRCS = \
scroll.c \
static.c \
status.c \
toolbar.c \
uitools.c \
updown.c \
widgets.c

View File

@ -6,7 +6,6 @@
* FIXME: roll up in Netscape 3.01.
*/
#include <stdio.h>
#include <string.h>
#include "windows.h"

View File

@ -11,12 +11,13 @@
#include "header.h"
#include "progress.h"
#include "status.h"
#include "toolbar.h"
#include "updown.h"
#include "debug.h"
/***********************************************************************
* DrawStatusText32A (COMCTL32.5)
* DrawStatusText32A [COMCTL32.5][COMCTL32.27]
*/
void WINAPI DrawStatusText32A( HDC32 hdc, LPRECT32 lprc, LPCSTR text,
UINT32 style )
@ -55,22 +56,7 @@ void WINAPI DrawStatusText32W( HDC32 hdc, LPRECT32 lprc, LPCWSTR text,
}
/***********************************************************************
* DrawStatusText16 (COMCTL32.27)
*/
void WINAPI DrawStatusText16( HDC16 hdc, LPRECT16 lprc, LPCSTR text,
UINT16 style )
{
if(!lprc)
DrawStatusText32A((HDC32)hdc, 0, text, (UINT32)style);
else{
RECT32 rect32;
CONV_RECT16TO32( lprc, &rect32 );
DrawStatusText32A((HDC32)hdc, &rect32, text, (UINT32)style);
}
}
/***********************************************************************
* CreateStatusWindow32A (COMCTL32.6)
* CreateStatusWindow32A [COMCTL32.6][COMCTL32.21]
*/
HWND32 WINAPI CreateStatusWindow32A( INT32 style, LPCSTR text, HWND32 parent,
UINT32 wid )
@ -81,18 +67,6 @@ HWND32 WINAPI CreateStatusWindow32A( INT32 style, LPCSTR text, HWND32 parent,
parent, wid, 0, 0);
}
/***********************************************************************
* CreateStatusWindow16 (COMCTL32.21)
*/
HWND16 WINAPI CreateStatusWindow16( INT16 style, LPCSTR text, HWND16 parent,
UINT16 wid )
{
return CreateWindow16(STATUSCLASSNAME16, text, style,
CW_USEDEFAULT16, CW_USEDEFAULT16,
CW_USEDEFAULT16, CW_USEDEFAULT16,
parent, wid, 0, 0);
}
/***********************************************************************
* CreateStatusWindow32W (COMCTL32.22)
*/
@ -177,7 +151,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
break;
case ICC_BAR_CLASSES:
TRACE (commctrl, "No toolbar class implemented!\n");
TOOLBAR_Register ();
STATUS_Register ();
TRACE (commctrl, "No trackbar class implemented!\n");
TRACE (commctrl, "No tooltip class implemented!\n");
@ -208,6 +182,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
TRACE (commctrl, "No month calendar class implemented!\n");
TRACE (commctrl, "No date picker class implemented!\n");
TRACE (commctrl, "No time picker class implemented!\n");
UPDOWN_Register ();
break;
case ICC_USEREX_CLASSES:
@ -288,3 +263,81 @@ MenuHelp (UINT32 uMsg, WPARAM32 wParam, LPARAM lParam, HMENU32 hMainMenu,
break;
}
}
/***********************************************************************
* CreateToolbarEx [COMCTL32.32]
*
*
*
*/
HWND32 WINAPI
CreateToolbarEx (HWND32 hwnd, DWORD style, UINT32 wID, INT32 nBitmaps,
HINSTANCE32 hBMInst, UINT32 wBMID, LPCTBBUTTON lpButtons,
INT32 iNumButtons, INT32 dxButton, INT32 dyButton,
INT32 dxBitmap, INT32 dyBitmap, UINT32 uStructSize)
{
HWND32 hwndTB =
CreateWindowEx32A(0, TOOLBARCLASSNAME32A, "", style, 0, 0, 0, 0,
hwnd, (HMENU32)wID, 0, NULL);
if(hwndTB) {
TBADDBITMAP tbab;
SendMessage32A (hwndTB, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
/* set bitmap and button size */
/* add bitmaps */
tbab.hInst = hBMInst;
tbab.nID = wBMID;
SendMessage32A (hwndTB, TB_ADDBITMAP,
(WPARAM32)nBitmaps, (LPARAM)&tbab);
/* add buttons */
SendMessage32A (hwndTB, TB_ADDBUTTONS32A,
(WPARAM32)iNumButtons, (LPARAM)&lpButtons);
}
return (hwndTB);
}
/***********************************************************************
* CreateMappedBitmap [COMCTL32.8]
*
*
*
*/
HBITMAP32 WINAPI
CreateMappedBitmap (HINSTANCE32 hInstance, INT32 idBitmap, UINT32 wFlags,
LPCOLORMAP lpColorMap, INT32 iNumMaps)
{
HBITMAP32 hbm;
FIXME (commctrl, "semi-stub!\n");
hbm = LoadBitmap32A (hInstance, MAKEINTRESOURCE32A(idBitmap));
return hbm;
}
/***********************************************************************
* CreateToolbar [COMCTL32.7]
*
*
*
*/
HWND32 WINAPI
CreateToolbar (HWND32 hwnd, DWORD style, UINT32 wID, INT32 nBitmaps,
HINSTANCE32 hBMInst, UINT32 wBMID,
LPCOLDTBBUTTON lpButtons,INT32 iNumButtons)
{
return CreateToolbarEx (hwnd, style | CCS_NODIVIDER, wID, nBitmaps,
hBMInst, wBMID, (LPCTBBUTTON)lpButtons,
iNumButtons, 0, 0, 0, 0, sizeof (OLDTBBUTTON));
}

View File

@ -166,6 +166,18 @@ LRESULT WINAPI DesktopWndProc( HWND32 hwnd, UINT32 message,
return 0;
}
/***********************************************************************
* PaintDesktop (USER32.415)
*
*/
BOOL32 WINAPI PaintDesktop(HDC32 hdc)
{
HWND32 hwnd = GetDesktopWindow32();
WND *wndPtr = WIN_FindWndPtr( hwnd );
DESKTOPINFO *infoPtr = (DESKTOPINFO *)wndPtr->wExtra;
return DESKTOP_DoEraseBkgnd( hwnd, hdc, infoPtr );
}
/***********************************************************************
* SetDeskPattern (USER.279)

View File

@ -11,7 +11,6 @@
* please read EDIT.TODO (and update it when you change things)
*/
#include <stdio.h>
#include "windows.h"
#include "winnt.h"
#include "win.h"
@ -41,6 +40,7 @@
#define EF_HSCROLL_HACK 0x0040 /* we already have informed the user of the hacked handler */
#define EF_AFTER_WRAP 0x0080 /* the caret is displayed after the last character of a
wrapped line, instead of in front of the next character */
#define EF_USE_SOFTBRK 0x0100 /* Enable soft breaks in text. */
typedef BOOL32 *LPBOOL32;
@ -1948,10 +1948,15 @@ static LRESULT EDIT_EM_CharFromPos(WND *wnd, EDITSTATE *es, INT32 x, INT32 y)
*
* EM_FMTLINES
*
* Enable or disable soft breaks.
*/
static BOOL32 EDIT_EM_FmtLines(WND *wnd, EDITSTATE *es, BOOL32 add_eol)
{
FIXME(edit, "message not implemented\n");
es->flags &= ~EF_USE_SOFTBRK;
if (add_eol) {
es->flags |= EF_USE_SOFTBRK;
FIXME(edit, "soft break enabled, not implemented\n");
}
return add_eol;
}
@ -1965,7 +1970,7 @@ static BOOL32 EDIT_EM_FmtLines(WND *wnd, EDITSTATE *es, BOOL32 add_eol)
* However, with this message a 32 bit application requests
* a handle to 32 bit moveable local heap memory, where it expects
* to find the text.
* It's a pitty that from this moment on we have to use this
* It's a pity that from this moment on we have to use this
* local heap, because applications may rely on the handle
* in the future.
*
@ -3896,7 +3901,8 @@ static LRESULT EDIT_WM_VScroll(WND *wnd, EDITSTATE *es, INT32 action, INT32 pos,
break;
default:
ERR(edit, "undocumented WM_VSCROLL parameter, please report\n");
ERR(edit, "undocumented WM_VSCROLL action %d, please report\n",
action);
return 0;
}
if (dy)

View File

@ -4,15 +4,20 @@
* Copyright 1998 Eric Kohl
*
* TODO:
* - Bitmap support (partially).
* - Imagelist support (partially).
* - Hottrack support (partially).
* - Control specific cursors (over dividers).
* - Callback items.
* - Owner draw support.
* - Order list support.
* - Control specific cursors (over dividers).
* - Hottrack support (partially).
* - Custom draw support (including Notifications).
* - Drag and Drop support (including Notifications).
* - Unicode support.
*
* FIXME:
* - Replace DrawText32A by DrawTextEx32A(...|DT_ENDELLIPSIS) in
* HEADER_DrawItem.
* - Little flaw when drawing a bitmap on the right side of the text.
*/
#include "windows.h"
@ -29,10 +34,6 @@
#define VERT_BORDER 4
#define DIVIDER_WIDTH 10
#define UNKNOWN_PARAM(msg, wParam, lParam) WARN(header, \
"Unknown parameter(s) for message " #msg \
"(%04x): wp=%04x lp=%08lx\n", msg, wParam, lParam);
#define HEADER_GetInfoPtr(wndPtr) ((HEADER_INFO *)wndPtr->wExtra[0])
@ -76,6 +77,8 @@ HEADER_DrawItem (WND *wndPtr, HDC32 hdc, HEADER_ITEM *phdi, BOOL32 bHotTrack)
HDC32 hdcBitmap;
INT32 yD, yS, cx, cy, rx, ry;
GetObject32A (phdi->hbm, sizeof(BITMAP32), (LPVOID)&bmp);
ry = r.bottom - r.top;
rx = r.right - r.left;
@ -98,7 +101,6 @@ HEADER_DrawItem (WND *wndPtr, HDC32 hdc, HEADER_ITEM *phdi, BOOL32 bHotTrack)
cx = rx - 6;
}
GetObject32A (phdi->hbm, sizeof(BITMAP32), (LPVOID)&bmp);
hdcBitmap = CreateCompatibleDC32 (hdc);
SelectObject32 (hdcBitmap, phdi->hbm);
BitBlt32 (hdc, r.left + 3, yD, cx, cy, hdcBitmap, 0, yS, SRCCOPY);
@ -107,24 +109,63 @@ HEADER_DrawItem (WND *wndPtr, HDC32 hdc, HEADER_ITEM *phdi, BOOL32 bHotTrack)
r.left += (bmp.bmWidth + 3);
}
/*
if ((phdi->fmt & HDF_BITMAP_ON_RIGHT) && (phdi->hbm)) {
BITMAP32 bmp;
HDC32 hdcBitmap;
INT32 xD, yD, yS, cx, cy, rx, ry, tx;
RECT32 textRect;
GetObject32A (phdi->hbm, sizeof(BITMAP32), (LPVOID)&bmp);
textRect = r;
DrawText32A(hdc, phdi->pszText, lstrlen32A(phdi->pszText),
&textRect, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CALCRECT);
tx = textRect.right - textRect.left;
ry = r.bottom - r.top;
rx = r.right - r.left;
if (ry >= bmp.bmHeight) {
cy = bmp.bmHeight;
yD = r.top + (ry - bmp.bmHeight) / 2;
yS = 0;
}
else {
cy = ry;
yD = r.top;
yS = (bmp.bmHeight - ry) / 2;
}
if (r.left + tx + bmp.bmWidth + 9 <= r.right) {
cx = bmp.bmWidth;
xD = r.left + tx + 6;
}
else {
if (rx >= bmp.bmWidth + 6) {
cx = bmp.bmWidth;
xD = r.right - bmp.bmWidth - 3;
r.right = xD - 3;
}
else {
cx = rx - 3;
xD = r.left;
r.right = r.left;
}
}
hdcBitmap = CreateCompatibleDC32 (hdc);
SelectObject32 (hdcBitmap, phdi->hbm);
BitBlt32 (hdc, xD, yD, cx, cy, hdcBitmap, 0, yS, SRCCOPY);
DeleteDC32 (hdcBitmap);
}
*/
/*
if (phdi->fmt & HDF_IMAGE) {
HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
ImageList_Draw (....);
// ImageList_Draw (infoPtr->himl, phdi->iImage,...);
}
*/
if ((phdi->fmt & HDF_STRING) && (phdi->pszText)) {
oldBkMode = SetBkMode32(hdc, TRANSPARENT);

View File

@ -5,7 +5,6 @@
*/
#include <string.h>
#include <stdio.h>
#include "windows.h"
#include "winerror.h"
#include "drive.h"

View File

@ -15,7 +15,6 @@
#include <assert.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "windows.h"
#include "bitmap.h"
@ -77,6 +76,7 @@ typedef struct {
HWND32 hWnd; /* Window containing the menu */
MENUITEM *items; /* Array of menu items */
UINT32 FocusedItem; /* Currently focused item */
WORD defitem; /* default item position. Unused (except for set/get)*/
} POPUPMENU, *LPPOPUPMENU;
/* internal flags for menu tracking */
@ -1444,9 +1444,13 @@ static BOOL32 MENU_SetItemData( MENUITEM *item, UINT32 flags, UINT32 id,
}
}
else if (flags & MF_BITMAP) item->text = (LPSTR)(HBITMAP32)LOWORD(str);
else if (flags & MF_OWNERDRAW) item->text = (LPSTR)str;
else item->text = NULL;
if (flags & MF_OWNERDRAW)
item->dwItemData = (DWORD)str;
else
item->dwItemData = 0;
if ((item->fType & MF_POPUP) && (flags & MF_POPUP) && (item->hSubMenu != id) )
DestroyMenu32( item->hSubMenu ); /* ModifyMenu() spec */
@ -3032,7 +3036,6 @@ BOOL32 WINAPI InsertMenu32A( HMENU32 hMenu, UINT32 pos, UINT32 flags,
((POPUPMENU *)USER_HEAP_LIN_ADDR((HMENU16)id))->wFlags |= MF_POPUP;
item->hCheckBit = item->hUnCheckBit = 0;
item->dwItemData = 0;
return TRUE;
}
@ -3735,7 +3738,7 @@ static BOOL32 GetMenuItemInfo32_common ( HMENU32 hmenu, UINT32 item,
LPMENUITEMINFO32A lpmii,
BOOL32 unicode)
{
MENUITEM *menu = MENU_FindItem (&hmenu, &item, bypos);
MENUITEM *menu = MENU_FindItem (&hmenu, &item, bypos? MF_BYPOSITION : 0);
debug_print_menuitem("GetMenuItemInfo32_common: ", menu, "");
if (!menu)
return FALSE;
@ -3853,7 +3856,7 @@ static BOOL32 SetMenuItemInfo32_common(MENUITEM * menu,
BOOL32 WINAPI SetMenuItemInfo32A(HMENU32 hmenu, UINT32 item, BOOL32 bypos,
const MENUITEMINFO32A *lpmii)
{
return SetMenuItemInfo32_common(MENU_FindItem(&hmenu, &item, bypos),
return SetMenuItemInfo32_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0),
lpmii, FALSE);
}
@ -3863,7 +3866,7 @@ BOOL32 WINAPI SetMenuItemInfo32A(HMENU32 hmenu, UINT32 item, BOOL32 bypos,
BOOL32 WINAPI SetMenuItemInfo32W(HMENU32 hmenu, UINT32 item, BOOL32 bypos,
const MENUITEMINFO32W *lpmii)
{
return SetMenuItemInfo32_common(MENU_FindItem(&hmenu, &item, bypos),
return SetMenuItemInfo32_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0),
(const MENUITEMINFO32A*)lpmii, TRUE);
}
@ -3872,14 +3875,36 @@ BOOL32 WINAPI SetMenuItemInfo32W(HMENU32 hmenu, UINT32 item, BOOL32 bypos,
*/
BOOL32 WINAPI SetMenuDefaultItem32(HMENU32 hmenu, UINT32 item, BOOL32 bypos)
{
MENUITEM *menu = MENU_FindItem(&hmenu, &item, bypos);
if (!menu) return FALSE;
debug_print_menuitem("SetMenuDefaultItem32: ", menu, "");
MENUITEM *menuitem = MENU_FindItem(&hmenu, &item, bypos);
POPUPMENU *menu;
if (!menuitem) return FALSE;
if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hmenu))) return FALSE;
menu->defitem = item; /* position */
debug_print_menuitem("SetMenuDefaultItem32: ", menuitem, "");
FIXME(menu, "(0x%x,%d,%d), empty stub!\n",
hmenu, item, bypos);
return TRUE;
}
/**********************************************************************
* GetMenuDefaultItem32 (USER32.260)
*/
UINT32 WINAPI GetMenuDefaultItem32(HMENU32 hmenu, UINT32 bypos, UINT32 flags)
{
POPUPMENU *menu;
if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hmenu))) return 0; /*FIXME*/
FIXME(menu, "(0x%x,%d,%d), stub!\n", hmenu, bypos, flags);
if (bypos & MF_BYPOSITION)
return menu->defitem;
else
return menu->items[menu->defitem].wID;
}
/*******************************************************************
* InsertMenuItem16 (USER.441)
*

View File

@ -159,9 +159,10 @@ LRESULT WINAPI ProgressWindowProc(HWND32 hwnd, UINT32 message,
{
case WM_CREATE:
/* allocate memory for info struct */
wndPtr->wExtra[0] = HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY,
infoPtr = (PROGRESS_INFO *)HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY,
sizeof(PROGRESS_INFO));
infoPtr = (PROGRESS_INFO *)wndPtr->wExtra[0];
wndPtr->wExtra[0] = (DWORD)infoPtr;
/* initialize the info struct */
infoPtr->MinVal=0;
infoPtr->MaxVal=100;
@ -169,11 +170,11 @@ LRESULT WINAPI ProgressWindowProc(HWND32 hwnd, UINT32 message,
infoPtr->Step=10;
infoPtr->ColorBar=CLR_DEFAULT;
infoPtr->ColorBk=CLR_DEFAULT;
TRACE(updown, "Progress Ctrl creation, hwnd=%04x\n", hwnd);
TRACE(progress, "Progress Ctrl creation, hwnd=%04x\n", hwnd);
break;
case WM_DESTROY:
TRACE(updown, "Progress Ctrl destruction, hwnd=%04x\n", hwnd);
TRACE(progress, "Progress Ctrl destruction, hwnd=%04x\n", hwnd);
HeapFree (SystemHeap, 0, infoPtr);
break;
@ -183,10 +184,12 @@ LRESULT WINAPI ProgressWindowProc(HWND32 hwnd, UINT32 message,
return 1;
case WM_GETFONT:
FIXME (progress, "WM_GETFONT - empty message!\n");
/* FIXME: What do we need to do? */
break;
case WM_SETFONT:
FIXME (progress, "WM_SETFONT - empty message!\n");
/* FIXME: What do we need to do? */
break;

View File

@ -6,7 +6,6 @@
*/
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "windows.h"
@ -900,9 +899,23 @@ INT16 WINAPI SetScrollInfo16( HWND16 hwnd, INT16 nBar, const SCROLLINFO *info,
/*************************************************************************
* SetScrollInfo32 (USER32.501)
* SetScrollInfo32 can be used to set the position, upper bound,
* lower bound, and page size of a scrollbar control.
*
* RETURNS
* Scrollbar position
*
* NOTE
* For 100 lines of text to be displayed in a window of 25 lines,
* one would for instance use info->nMin=0, info->nMax=75
* (corresponding to the 76 different positions of the window on
* the text), and info->nPage=25.
*/
INT32 WINAPI SetScrollInfo32( HWND32 hwnd, INT32 nBar, const SCROLLINFO *info,
BOOL32 bRedraw )
INT32 WINAPI SetScrollInfo32(
HWND32 hwnd /* [I] Handle of window whose scrollbar will be affected */,
INT32 nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */,
const SCROLLINFO *info /* [I] Specifies what to change and new values */,
BOOL32 bRedraw /* [I] Should scrollbar be redrawn afterwards ? */)
{
SCROLLBAR_INFO *infoPtr;
UINT32 new_flags;
@ -1019,8 +1032,15 @@ BOOL16 WINAPI GetScrollInfo16( HWND16 hwnd, INT16 nBar, LPSCROLLINFO info )
/*************************************************************************
* GetScrollInfo32 (USER32.284)
* GetScrollInfo32 can be used to retrieve the position, upper bound,
* lower bound, and page size of a scrollbar control.
*
* RETURNS STD
*/
BOOL32 WINAPI GetScrollInfo32( HWND32 hwnd, INT32 nBar, LPSCROLLINFO info )
BOOL32 WINAPI GetScrollInfo32(
HWND32 hwnd /* [I] Handle of window */ ,
INT32 nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */,
LPSCROLLINFO info /* [IO] (info.fMask [I] specifies which values are to retrieve) */)
{
SCROLLBAR_INFO *infoPtr;
@ -1054,9 +1074,20 @@ INT16 WINAPI SetScrollPos16( HWND16 hwnd, INT16 nBar, INT16 nPos,
/*************************************************************************
* SetScrollPos32 (USER32.502)
*
* RETURNS
* Success: Scrollbar position
* Failure: 0
*
* REMARKS
* Note the ambiguity when 0 is returned. Use GetLastError
* to make sure there was an error (and to know which one).
*/
INT32 WINAPI SetScrollPos32( HWND32 hwnd, INT32 nBar, INT32 nPos,
BOOL32 bRedraw )
INT32 WINAPI SetScrollPos32(
HWND32 hwnd /* [I] Handle of window whose scrollbar will be affected */,
INT32 nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */,
INT32 nPos /* [I] New value */,
BOOL32 bRedraw /* [I] Should scrollbar be redrawn afterwards ? */ )
{
SCROLLINFO info;
SCROLLBAR_INFO *infoPtr;
@ -1083,8 +1114,18 @@ INT16 WINAPI GetScrollPos16( HWND16 hwnd, INT16 nBar )
/*************************************************************************
* GetScrollPos32 (USER32.285)
*
* RETURNS
* Success: Current position
* Failure: 0
*
* REMARKS
* Note the ambiguity when 0 is returned. Use GetLastError
* to make sure there was an error (and to know which one).
*/
INT32 WINAPI GetScrollPos32( HWND32 hwnd, INT32 nBar )
INT32 WINAPI GetScrollPos32(
HWND32 hwnd, /* [I] Handle of window */
INT32 nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */)
{
SCROLLBAR_INFO *infoPtr;
@ -1107,9 +1148,15 @@ void WINAPI SetScrollRange16( HWND16 hwnd, INT16 nBar,
/*************************************************************************
* SetScrollRange32 (USER32.503)
*
* RETURNS STD
*/
BOOL32 WINAPI SetScrollRange32( HWND32 hwnd, INT32 nBar,
INT32 MinVal, INT32 MaxVal, BOOL32 bRedraw )
BOOL32 WINAPI SetScrollRange32(
HWND32 hwnd, /* [I] Handle of window whose scrollbar will be affected */
INT32 nBar, /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */
INT32 MinVal, /* [I] New minimum value */
INT32 MaxVal, /* [I] New maximum value */
BOOL32 bRedraw /* [I] Should scrollbar be redrawn afterwards ? */)
{
SCROLLINFO info;
@ -1172,9 +1219,14 @@ BOOL16 WINAPI GetScrollRange16( HWND16 hwnd, INT16 nBar,
/*************************************************************************
* GetScrollRange32 (USER32.286)
*
* RETURNS STD
*/
BOOL32 WINAPI GetScrollRange32( HWND32 hwnd, INT32 nBar,
LPINT32 lpMin, LPINT32 lpMax)
BOOL32 WINAPI GetScrollRange32(
HWND32 hwnd, /* [I] Handle of window */
INT32 nBar, /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */
LPINT32 lpMin, /* [O] Where to store minimum value */
LPINT32 lpMax /* [O] Where to store maximum value */)
{
SCROLLBAR_INFO *infoPtr;
@ -1201,8 +1253,13 @@ void WINAPI ShowScrollBar16( HWND16 hwnd, INT16 nBar, BOOL16 fShow )
/*************************************************************************
* ShowScrollBar32 (USER32.532)
*
* RETURNS STD
*/
BOOL32 WINAPI ShowScrollBar32( HWND32 hwnd, INT32 nBar, BOOL32 fShow )
BOOL32 WINAPI ShowScrollBar32(
HWND32 hwnd, /* [I] Handle of window whose scrollbar(s) will be affected */
INT32 nBar, /* [I] One of SB_HORZ, SB_VERT, SB_BOTH or SB_CTL */
BOOL32 fShow /* [I] TRUE = show, FALSE = hide */)
{
WND *wndPtr = WIN_FindWndPtr( hwnd );

View File

@ -5,7 +5,6 @@
*
*/
#include <stdio.h>
#include "windows.h"
#include "win.h"
#include "bitmap.h"

View File

@ -5,8 +5,6 @@
* Copyright 1998 Eric Kohl
*/
#include <stdio.h>
#include "windows.h"
#include "status.h"
#include "commctrl.h"
@ -21,16 +19,10 @@
/*
* Fixme/Todo
* 1) Don't hard code bar to bottom of window, allow CCS_TOP also
* 2) Add 'non hack' version of icon drawing code
* 1) Don't hard code bar to bottom of window, allow CCS_TOP also.
+ 2) Tooltip support.
*/
#define __GET_ICON_INFO_HACK__
#ifdef __GET_ICON_INFO_HACK__
#include "bitmap.h"
#endif
#define _MAX(a,b) (((a)>(b))?(a):(b))
#define _MIN(a,b) (((a)>(b))?(b):(a))
@ -92,61 +84,20 @@ SB_DrawPart( HDC32 hdc, LPRECT32 lprc, HICON32 hIcon,
RECT32 r = *lprc;
UINT32 border = BDR_SUNKENOUTER;
if(style==SBT_POPOUT)
if (style==SBT_POPOUT)
border = BDR_RAISEDOUTER;
else if(style==SBT_NOBORDERS)
else if (style==SBT_NOBORDERS)
border = 0;
DrawEdge32(hdc, &r, border, BF_RECT|BF_ADJUST);
/* draw the icon */
if (hIcon) {
#ifdef __GET_ICON_INFO_HACK__
HBITMAP32 hbmImage;
HBITMAP32 hbmMask;
CURSORICONINFO *ptr;
HDC32 hdcSrc;
INT32 y, cy, ry, ty;
INT32 cy = r.bottom - r.top;
if (ptr = (CURSORICONINFO *)GlobalLock16(hIcon)) {
hbmMask = CreateBitmap32 (ptr->nWidth, ptr->nHeight, 1, 1,
(char *)(ptr + 1));
hbmImage = CreateBitmap32 (ptr->nWidth, ptr->nHeight, ptr->bPlanes,
ptr->bBitsPerPixel,
(char *)(ptr + 1) + ptr->nHeight *
BITMAP_WIDTH_BYTES(ptr->nWidth, 1));
r.left += 2;
ry = r.bottom - r.top;
if (ry >= ptr->nHeight) {
/* full view of icon */
y = 0;
cy = ptr->nHeight;
ty = r.top + (ry - ptr->nHeight) / 2;
}
else {
/* partial view of icon */
y = (ptr->nHeight - ry) / 2;
cy = ry;
ty = r.top;
}
hdcSrc = CreateCompatibleDC32 (hdc);
SelectObject32 (hdcSrc, hbmMask);
BitBlt32 (hdc, r.left, r.top, ptr->nWidth, cy,
hdcSrc, 0, y, SRCAND);
SelectObject32 (hdcSrc, hbmImage);
BitBlt32 (hdc, r.left, r.top, ptr->nWidth, cy,
hdcSrc, 0, y, SRCPAINT);
DeleteDC32 (hdcSrc);
r.left += ptr->nWidth;
DeleteObject32 (hbmImage);
DeleteObject32 (hbmMask);
GlobalUnlock16 (hIcon);
}
#else
/* FIXME: no "non hack" version available!!! */
#endif
DrawIconEx32 (hdc, r.left, r.top, hIcon, cy, cy, 0, 0, DI_NORMAL);
r.left += cy;
}
/* now draw text */
@ -378,10 +329,11 @@ SW_Create(HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
STATUSWINDOWINFO *self;
wndPtr = WIN_FindWndPtr(hwnd);
wndPtr->wExtra[0] = HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY,
sizeof(STATUSWINDOWINFO));
self = (STATUSWINDOWINFO*)HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY,
sizeof(STATUSWINDOWINFO));
wndPtr->wExtra[0] = (DWORD)self;
self = (STATUSWINDOWINFO*)wndPtr->wExtra[0];
self->numParts = 1;
self->parts = 0;
self->simple = FALSE;
@ -397,33 +349,33 @@ SW_Create(HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
self->part0.hIcon = 0;
/* initialize first part */
self->parts = HeapAlloc(SystemHeap, HEAP_ZERO_MEMORY,
sizeof(STATUSWINDOWPART));
self->parts = HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY,
sizeof(STATUSWINDOWPART));
self->parts[0].bound = rect;
self->parts[0].text = 0;
self->parts[0].x = -1;
self->parts[0].style = 0;
self->parts[0].hIcon = 0;
if (len = lstrlen32A( lpCreate->lpszName ) ) {
self->parts[0].text = HeapAlloc( SystemHeap, 0, len + 1 );
lstrcpy32A( self->parts[0].text, lpCreate->lpszName );
if ((len = lstrlen32A (lpCreate->lpszName))) {
self->parts[0].text = HeapAlloc (SystemHeap, 0, len + 1);
lstrcpy32A (self->parts[0].text, lpCreate->lpszName);
}
height = 20;
if ((hdc = GetDC32(0))) {
if ((hdc = GetDC32 (0))) {
TEXTMETRIC32A tm;
GetTextMetrics32A(hdc, &tm);
self->textHeight = tm.tmHeight;
ReleaseDC32(0, hdc);
}
parent = GetParent32(hwnd);
GetClientRect32(parent, &rect);
parent = GetParent32 (hwnd);
GetClientRect32 (parent, &rect);
width = rect.right - rect.left;
self->height = self->textHeight + 4 + VERT_BORDER;
MoveWindow32(hwnd, lpCreate->x, lpCreate->y-1, width, self->height, FALSE);
SW_SetPartBounds(hwnd, self);
MoveWindow32 (hwnd, lpCreate->x, lpCreate->y-1, width, self->height, FALSE);
SW_SetPartBounds (hwnd, self);
return 0;
}
@ -495,12 +447,11 @@ SW_GetTextLength(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lP
static LRESULT
SW_SetMinHeight(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
INT32 width, height, x, y;
INT32 width, x, y;
RECT32 parent_rect;
HWND32 parent;
if (IsWindowVisible32 (hwnd)) {
/* width and height don't apply */
parent = GetParent32(hwnd);
GetClientRect32(parent, &parent_rect);
self->height = (INT32)wParam + VERT_BORDER;
@ -531,12 +482,10 @@ SW_SetBkColor(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lPara
static LRESULT
SW_SetIcon(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
SW_SetIcon (STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
HDC32 hdc;
INT32 nPart;
INT32 nPart = (INT32)wParam & 0x00ff;
nPart = (INT32)wParam & 0x00ff;
if ((nPart < -1) || (nPart >= self->numParts)) return FALSE;
if (nPart == -1) {
@ -558,7 +507,7 @@ SW_GetIcon(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
INT32 nPart;
nPart = (INT32)wParam & 0x00ff;
if ((nPart < -1) || (nPart >= self->numParts)) return NULL;
if ((nPart < -1) || (nPart >= self->numParts)) return 0;
if (nPart == -1)
return (self->part0.hIcon);
@ -663,7 +612,6 @@ SW_NcHitTest (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
static LRESULT
SW_NcLButtonDown (HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
// TRACE (status, "WM_NCLBUTTONDOWN\n");
PostMessage32A (GetParent32 (hwnd), WM_NCLBUTTONDOWN,
wParam, lParam);
return 0;
@ -673,7 +621,6 @@ SW_NcLButtonDown (HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
static LRESULT
SW_NcLButtonUp (HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
// TRACE (status, "WM_NCLBUTTONUP\n");
PostMessage32A (GetParent32 (hwnd), WM_NCLBUTTONUP,
wParam, lParam);
return 0;
@ -722,8 +669,8 @@ SW_WMSetText (STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lPara
HeapFree(SystemHeap, 0, part->text);
part->text = 0;
if (lParam && (len = lstrlen32A((LPCSTR)lParam))) {
part->text = HeapAlloc(SystemHeap, 0, len+1);
lstrcpy32A(part->text, (LPCSTR)lParam);
part->text = HeapAlloc (SystemHeap, 0, len+1);
lstrcpy32A (part->text, (LPCSTR)lParam);
}
InvalidateRect32(hwnd, &part->bound, FALSE);
@ -735,7 +682,7 @@ static LRESULT
SW_Size(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
/* Need to resize width to match parent */
INT32 width, height, x, y;
INT32 width, x, y;
RECT32 parent_rect;
HWND32 parent;
@ -836,7 +783,7 @@ StatusWindowProc (HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
case WM_NCHITTEST:
return SW_NcHitTest (wndPtr, wParam, lParam);
case WM_NCLBUTTONDOWN:
case WM_NCLBUTTONDOWN:
return SW_NcLButtonDown (hwnd, wParam, lParam);
case WM_NCLBUTTONUP:
@ -862,25 +809,25 @@ StatusWindowProc (HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
/***********************************************************************
* STATUS_Register [Internal]
* STATUS_Register [Internal]
*
* Registers the status window class.
*/
void STATUS_Register(void)
void STATUS_Register (void)
{
WNDCLASS32A wndClass;
if( GlobalFindAtom32A( STATUSCLASSNAME32A ) ) return;
if (GlobalFindAtom32A (STATUSCLASSNAME32A)) return;
ZeroMemory( &wndClass, sizeof( WNDCLASS32A ) );
ZeroMemory (&wndClass, sizeof(WNDCLASS32A));
wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS | CS_VREDRAW;
wndClass.lpfnWndProc = (WNDPROC32)StatusWindowProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = sizeof(STATUSWINDOWINFO *);
wndClass.hCursor = LoadCursor32A( 0, IDC_ARROW32A );
wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A);
wndClass.hbrBackground = (HBRUSH32)(COLOR_3DFACE + 1);
wndClass.lpszClassName = STATUSCLASSNAME32A;
RegisterClass32A( &wndClass );
RegisterClass32A (&wndClass);
}

1290
controls/toolbar.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,6 @@
* Copyright 1997 Bertho A. Stultiens
*/
#include <stdio.h>
#include "windows.h"
#include "debug.h"

View File

@ -25,7 +25,6 @@
*/
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <string.h>
#include "windows.h"

View File

@ -25,7 +25,7 @@
*/
/*
* HISTORY
* $Log: db_disasm.c,v $
*
* Revision 2.6 92/01/03 20:05:00 dbg
* Add a switch to disassemble 16-bit code.
* Fix spelling of 'lods' opcodes.

View File

@ -10,6 +10,7 @@
#include <signal.h>
#include <sys/stat.h>
#include <unistd.h>
#include "winbase.h"
#include "class.h"
#include "module.h"
#include "options.h"
@ -565,20 +566,20 @@ void DebugBreak( CONTEXT *regs )
void wine_debug( int signal, SIGCONTEXT *regs )
{
DEBUG_SetSigContext( regs );
#if 0
DWORD *stack = (DWORD *)ESP_reg(&DEBUG_context);
DWORD *stack = (DWORD *)ESP_sig(regs);
*(--stack) = 0;
*(--stack) = 0;
*(--stack) = EH_NONCONTINUABLE;
*(--stack) = EXCEPTION_ACCESS_VIOLATION;
*(--stack) = EIP_reg(&DEBUG_context);
ESP_reg(&DEBUG_context) = (DWORD)stack;
EIP_reg(&DEBUG_context) = GetProcAddress32( GetModuleHandle("KERNEL32"),
"RaiseException" );
#endif
*(--stack) = EIP_sig(regs);
ESP_sig(regs) = (DWORD)stack;
EIP_sig(regs) = (DWORD)RaiseException;
#else
DEBUG_SetSigContext( regs );
DEBUG_Main( signal );
DEBUG_GetSigContext( regs );
#endif
}
int yyerror(char * s)
@ -586,4 +587,3 @@ int yyerror(char * s)
fprintf(stderr,"%s\n", s);
return 0;
}

View File

@ -6,6 +6,7 @@
#include <sys/types.h>
#include <fcntl.h>
#include <assert.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <limits.h>
@ -128,14 +129,85 @@ static void stab_strcpy(char * dest, const char * source)
* ':'.
*/
while(*source != '\0' && *source != ':')
{
*dest++ = *source++;
}
*dest++ = '\0';
}
#define MAX_TD_NESTING 128
static int **typenums;
static int *nroftypenums=NULL;
static int nrofnroftypenums=0;
static int curtypenum = 0;
static
int
DEBUG_FileSubNr2StabEnum(int filenr,int subnr) {
if (nrofnroftypenums<=filenr) {
nroftypenums = xrealloc(nroftypenums,sizeof(nroftypenums[0])*(filenr+1));
memset(nroftypenums+nrofnroftypenums,0,(filenr+1-nrofnroftypenums)*sizeof(nroftypenums[0]));
typenums = xrealloc(typenums,sizeof(typenums[0])*(filenr+1));
memset(typenums+nrofnroftypenums,0,sizeof(typenums[0])*(filenr+1-nrofnroftypenums));
nrofnroftypenums=filenr+1;
}
if (nroftypenums[filenr]<=subnr) {
typenums[filenr] = xrealloc(typenums[filenr],sizeof(typenums[0][0])*(subnr+1));
memset(typenums[filenr]+nroftypenums[filenr],0,sizeof(typenums[0][0])*(subnr+1-nroftypenums[filenr]));
nroftypenums[filenr] = subnr+1;
}
if (!typenums[filenr][subnr])
typenums[filenr][subnr]=++curtypenum;
if( num_stab_types <= curtypenum ) {
num_stab_types = curtypenum + 256;
stab_types = (struct datatype **) xrealloc(stab_types,
num_stab_types * sizeof(struct datatype *)
);
}
//fprintf(stderr,"(%d,%d) is %d\n",filenr,subnr,typenums[filenr][subnr]);
return typenums[filenr][subnr];
}
static
int
DEBUG_ReadTypeEnumBackwards(char*x) {
int filenr,subnr;
if (*x==')') {
while (*x!='(')
x--;
x++; /* '(' */
filenr=strtol(x,&x,10); /* <int> */
assert(*(x++)==','); /* ',' */
subnr=strtol(x,&x,10); /* <int> */
assert(*(x++)==')'); /* ')' */
} else {
while ((*x>='0') && (*x<='9'))
x--;
filenr = 0;
subnr = atol(x+1);
}
return DEBUG_FileSubNr2StabEnum(filenr,subnr);
}
static
int
DEBUG_ReadTypeEnum(char **x) {
int filenr,subnr;
if (**x=='(') {
(*x)++; /* '(' */
filenr=strtol(*x,x,10); /* <int> */
(*x)++; /* ',' */
subnr=strtol(*x,x,10); /* <int> */
(*x)++; /* ')' */
} else {
filenr = 0;
subnr = strtol(*x,x,10); /* <int> */
}
return DEBUG_FileSubNr2StabEnum(filenr,subnr);
}
static
int
DEBUG_RegisterTypedef(const char * name, struct datatype ** types, int ndef)
@ -144,12 +216,10 @@ DEBUG_RegisterTypedef(const char * name, struct datatype ** types, int ndef)
struct known_typedef * ktd;
if( ndef == 1 )
{
return TRUE;
}
ktd = (struct known_typedef *) malloc(sizeof(struct known_typedef)
+ ndef * sizeof(struct datatype *));
ktd = (struct known_typedef *) xmalloc(sizeof(struct known_typedef)
+ ndef * sizeof(struct datatype *));
hash = stab_hash(name);
@ -171,27 +241,18 @@ DEBUG_HandlePreviousTypedef(const char * name, const char * stab)
int hash;
struct known_typedef * ktd;
char * ptr;
char * tc;
int typenum;
hash = stab_hash(name);
for(ktd = ktd_head[hash]; ktd; ktd = ktd->next)
{
if( (ktd->name[0] == name[0])
&& (strcmp(name, ktd->name) == 0) )
{
if ((ktd->name[0] == name[0]) && (strcmp(name, ktd->name) == 0) )
break;
}
}
/*
* Didn't find it. This must be a new one.
*/
if( ktd == NULL )
{
return FALSE;
}
/*
* Examine the stab to make sure it has the same number of definitions.
@ -200,9 +261,7 @@ DEBUG_HandlePreviousTypedef(const char * name, const char * stab)
for(ptr = strchr(stab, '='); ptr; ptr = strchr(ptr+1, '='))
{
if( count >= ktd->ndefs )
{
return FALSE;
}
/*
* Make sure the types of all of the objects is consistent with
@ -221,6 +280,7 @@ DEBUG_HandlePreviousTypedef(const char * name, const char * stab)
expect = ARRAY;
break;
case '1':
case '(':
case 'r':
expect = BASIC;
break;
@ -234,52 +294,24 @@ DEBUG_HandlePreviousTypedef(const char * name, const char * stab)
expect = FUNC;
break;
default:
fprintf(stderr, "Unknown type.\n");
fprintf(stderr, "Unknown type (%c).\n",ptr[1]);
return FALSE;
}
if( expect != DEBUG_GetType(ktd->types[count]) )
{
return FALSE;
}
count++;
}
if( ktd->ndefs != count )
{
return FALSE;
}
/*
* OK, this one is safe. Go through, dig out all of the type numbers,
* and substitute the appropriate things.
* Go through, dig out all of the type numbers, and substitute the
* appropriate things.
*/
count = 0;
for(ptr = strchr(stab, '='); ptr; ptr = strchr(ptr+1, '='))
{
/*
* Back up until we get to a non-numeric character. This is the type
* number.
*/
tc = ptr - 1;
while( *tc >= '0' && *tc <= '9' )
{
tc--;
}
typenum = atol(tc + 1);
if( num_stab_types <= typenum )
{
num_stab_types = typenum + 32;
stab_types = (struct datatype **) xrealloc(stab_types,
num_stab_types * sizeof(struct datatype *));
if( stab_types == NULL )
{
return FALSE;
}
}
stab_types[typenum] = ktd->types[count++];
}
stab_types[DEBUG_ReadTypeEnumBackwards(ptr-1)] = ktd->types[count++];
return TRUE;
}
@ -322,7 +354,6 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
int ntypes = 0;
int offset;
const char * orig_typename;
int rtn = FALSE;
int size;
char * tc;
char * tc2;
@ -330,10 +361,8 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
orig_typename = typename;
if( DEBUG_HandlePreviousTypedef(typename, ptr) == TRUE )
{
if( DEBUG_HandlePreviousTypedef(typename, ptr) )
return TRUE;
}
/*
* Go from back to front. First we go through and figure out what
@ -347,22 +376,7 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
* Back up until we get to a non-numeric character. This is the type
* number.
*/
tc = c - 1;
while( *tc >= '0' && *tc <= '9' )
{
tc--;
}
typenum = atol(tc + 1);
if( num_stab_types <= typenum )
{
num_stab_types = typenum + 32;
stab_types = (struct datatype **) xrealloc(stab_types,
num_stab_types * sizeof(struct datatype *));
if( stab_types == NULL )
{
goto leave;
}
}
typenum = DEBUG_ReadTypeEnumBackwards(c-1);
if( ntypes >= MAX_TD_NESTING )
{
@ -388,6 +402,7 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
stab_types[typenum] = DEBUG_NewDataType(ARRAY, NULL);
curr_types[ntypes++] = stab_types[typenum];
break;
case '(':
case '1':
case 'r':
stab_types[typenum] = DEBUG_NewDataType(BASIC, typename);
@ -407,7 +422,7 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
curr_types[ntypes++] = stab_types[typenum];
break;
default:
fprintf(stderr, "Unknown type.\n");
fprintf(stderr, "Unknown type (%c).\n",c[1]);
}
typename = NULL;
}
@ -426,16 +441,7 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
*/
for( c = strrchr(ptr, '='); c != NULL; c = strrchr(ptr, '=') )
{
/*
* Back up until we get to a non-numeric character. This is the type
* number.
*/
tc = c - 1;
while( *tc >= '0' && *tc <= '9' )
{
tc--;
}
typenum = atol(tc + 1);
int typenum = DEBUG_ReadTypeEnumBackwards(c-1);
curr_type = stab_types[typenum];
switch(c[1])
@ -443,34 +449,24 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
case 'x':
tc = c + 3;
while( *tc != ':' )
{
tc ++;
}
tc++;
tc++;
if( *tc == '\0' )
{
*c = '\0';
}
else
{
strcpy(c, tc);
}
break;
case '*':
case 'f':
tc = c + 2;
datatype = stab_types[strtol(tc, &tc, 10)];
datatype = stab_types[DEBUG_ReadTypeEnum(&tc)];
DEBUG_SetPointerType(curr_type, datatype);
if( *tc == '\0' )
{
*c = '\0';
}
else
{
strcpy(c, tc);
}
break;
case '(':
case '1':
case 'r':
/*
@ -479,25 +475,27 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
*c = '\0';
break;
case 'a':
tc = c + 5;
arrmin = strtol(tc, &tc, 10);
tc++;
arrmax = strtol(tc, &tc, 10);
tc++;
datatype = stab_types[strtol(tc, &tc, 10)];
/* ar<typeinfo_nodef>;<int>;<int>;<typeinfo>,<int>,<int>;; */
tc = c + 3;
assert(c[2]=='r');
DEBUG_ReadTypeEnum(&tc);
assert(*(tc++)==';'); /* ';' */
arrmin = strtol(tc, &tc, 10); /* <int> */
assert(*(tc++)==';'); /* ';' */
arrmax = strtol(tc, &tc, 10); /* <int> */
assert(*(tc++)==';'); /* ';' */
datatype = stab_types[DEBUG_ReadTypeEnum(&tc)]; /* <typeinfo> */
if( *tc == '\0' )
{
*c = '\0';
}
else
{
strcpy(c, tc);
}
DEBUG_SetArrayParams(curr_type, arrmin, arrmax, datatype);
break;
case 's':
case 'u':
case 'u': {
int failure = 0;
tc = c + 2;
if( DEBUG_SetStructSize(curr_type, strtol(tc, &tc, 10)) == FALSE )
{
@ -506,20 +504,14 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
* so just skip forward to the end of the definition.
*/
while( tc[0] != ';' && tc[1] != ';' )
{
tc++;
}
tc += 2;
if( *tc == '\0' )
{
*c = '\0';
}
else
{
strcpy(c, tc + 1);
}
continue;
}
@ -528,30 +520,44 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
*/
while(*tc != ';')
{
char *ti;
tc2 = element_name;
while(*tc != ':')
{
*tc2++ = *tc++;
}
tc++;
*tc2++ = '\0';
datatype = stab_types[strtol(tc, &tc, 10)];
ti=tc;
datatype = stab_types[DEBUG_ReadTypeEnum(&tc)];
*tc='\0';
tc++;
offset = strtol(tc, &tc, 10);
tc++;
size = strtol(tc, &tc, 10);
tc++;
DEBUG_AddStructElement(curr_type, element_name, datatype, offset, size);
if (datatype)
DEBUG_AddStructElement(curr_type, element_name, datatype, offset, size);
else {
failure = 1;
/* ... but proceed parsing to the end of the stab */
}
}
if (failure) {
/* if we had a undeclared value this one is undeclared too.
* remove it from the stab_types.
* I just set it to NULL to detect bugs in my thoughtprocess.
* FIXME: leaks the memory for the structure elements.
* FIXME: such structures should have been optimized away
* by ld.
*/
stab_types[typenum] = NULL;
}
if( *tc == '\0' )
{
*c = '\0';
}
else
{
strcpy(c, tc + 1);
}
break;
}
case 'e':
tc = c + 2;
/*
@ -561,9 +567,7 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
{
tc2 = element_name;
while(*tc != ':')
{
*tc2++ = *tc++;
}
tc++;
*tc2++ = '\0';
offset = strtol(tc, &tc, 10);
@ -571,25 +575,17 @@ DEBUG_ParseTypedefStab(char * ptr, const char * typename)
DEBUG_AddStructElement(curr_type, element_name, NULL, offset, 0);
}
if( *tc == '\0' )
{
*c = '\0';
}
else
{
strcpy(c, tc + 1);
}
break;
default:
fprintf(stderr, "Unknown type.\n");
fprintf(stderr, "Unknown type (%c).\n",c[1]);
break;
}
}
rtn = TRUE;
leave:
return rtn;
return TRUE;
}
@ -597,7 +593,6 @@ static struct datatype *
DEBUG_ParseStabType(const char * stab)
{
char * c;
int typenum;
/*
* Look through the stab definition, and figure out what datatype
@ -606,9 +601,7 @@ DEBUG_ParseStabType(const char * stab)
*/
c = strchr(stab, ':');
if( c == NULL )
{
return NULL;
}
c++;
/*
@ -616,15 +609,11 @@ DEBUG_ParseStabType(const char * stab)
* of symbol. Skip it.
*/
c++;
typenum = atol(c);
if( typenum < num_stab_types && stab_types[typenum] != NULL )
{
return stab_types[typenum];
}
return NULL;
/*
* The next is either an integer or a (integer,integer).
* The DEBUG_ReadTypeEnum takes care that stab_types is large enough.
*/
return stab_types[DEBUG_ReadTypeEnum(&c)];
}
static
@ -664,10 +653,6 @@ DEBUG_ParseStabs(char * addr, unsigned int load_offset,
*/
stabbufflen = 65536;
stabbuff = (char *) xmalloc(stabbufflen);
if( stabbuff == NULL )
{
goto leave;
}
strtabinc = 0;
stabbuff[0] = '\0';
@ -686,10 +671,6 @@ DEBUG_ParseStabs(char * addr, unsigned int load_offset,
{
stabbufflen += 65536;
stabbuff = (char *) xrealloc(stabbuff, stabbufflen);
if( stabbuff == NULL )
{
goto leave;
}
}
strncat(stabbuff, ptr, len - 1);
continue;
@ -886,7 +867,11 @@ DEBUG_ParseStabs(char * addr, unsigned int load_offset,
* The datatypes that we would need to use are reset when
* we start a new file.
*/
memset(stab_types, 0, num_stab_types * sizeof(stab_types));
memset(stab_types, 0, num_stab_types * sizeof(stab_types[0]));
/*
for (i=0;i<nrofnroftypenums;i++)
memset(typenums[i],0,sizeof(typenums[i][0])*nroftypenums[i]);
*/
}
else
{
@ -946,8 +931,6 @@ DEBUG_ParseStabs(char * addr, unsigned int load_offset,
#endif
}
leave:
if( stab_types != NULL )
{
free(stab_types);
@ -1025,9 +1008,7 @@ DEBUG_ProcessElfSymtab(char * addr, unsigned int load_offset,
*/
if( (DEBUG_GetSymbolValue(symname, -1, &new_addr, FALSE ) == TRUE)
&& (new_addr.off == (load_offset + symp->st_value)) )
{
continue;
}
new_addr.seg = 0;
new_addr.type = NULL;
@ -1035,22 +1016,16 @@ DEBUG_ProcessElfSymtab(char * addr, unsigned int load_offset,
flags = SYM_WINE | (ELF32_ST_BIND(symp->st_info) == STT_FUNC
? SYM_FUNC : SYM_DATA);
if( ELF32_ST_BIND(symp->st_info) == STB_GLOBAL )
{
curr_sym = DEBUG_AddSymbol( symname, &new_addr, NULL, flags );
}
else
{
curr_sym = DEBUG_AddSymbol( symname, &new_addr, curfile, flags );
}
/*
* Record the size of the symbol. This can come in handy in
* some cases. Not really used yet, however.
*/
if( symp->st_size != 0 )
{
DEBUG_SetSymbolSize(curr_sym, symp->st_size);
}
}
return TRUE;
@ -1078,9 +1053,7 @@ DEBUG_ProcessElfObject(char * filename, unsigned int load_offset)
* Make sure we can stat and open this file.
*/
if( filename == NULL )
{
goto leave;
}
status = stat(filename, &statbuf);
if( status == -1 )
@ -1116,9 +1089,7 @@ DEBUG_ProcessElfObject(char * filename, unsigned int load_offset)
*/
fd = open(filename, O_RDONLY);
if( fd == -1 )
{
goto leave;
}
/*
@ -1127,9 +1098,7 @@ DEBUG_ProcessElfObject(char * filename, unsigned int load_offset)
addr = mmap(0, statbuf.st_size, PROT_READ,
MAP_PRIVATE, fd, 0);
if( addr == (char *) 0xffffffff )
{
goto leave;
}
/*
* Give a nice status message here...
@ -1145,13 +1114,9 @@ DEBUG_ProcessElfObject(char * filename, unsigned int load_offset)
ehptr = (Elf32_Ehdr *) addr;
if( load_offset == 0 )
{
DEBUG_RegisterELFDebugInfo(ehptr->e_entry, statbuf.st_size, filename);
}
else
{
DEBUG_RegisterELFDebugInfo(load_offset, statbuf.st_size, filename);
}
spnt = (Elf32_Shdr *) (addr + ehptr->e_shoff);
nsect = ehptr->e_shnum;
@ -1162,20 +1127,14 @@ DEBUG_ProcessElfObject(char * filename, unsigned int load_offset)
for(i=0; i < nsect; i++)
{
if( strcmp(shstrtab + spnt[i].sh_name, ".stab") == 0 )
{
stabsect = i;
}
if( strcmp(shstrtab + spnt[i].sh_name, ".stabstr") == 0 )
{
stabstrsect = i;
}
}
if( stabsect == -1 || stabstrsect == -1 )
{
goto leave;
}
/*
* OK, now just parse all of the stabs.
@ -1187,38 +1146,28 @@ DEBUG_ProcessElfObject(char * filename, unsigned int load_offset)
spnt[stabstrsect].sh_size);
if( rtn != TRUE )
{
goto leave;
}
for(i=0; i < nsect; i++)
{
if( (strcmp(shstrtab + spnt[i].sh_name, ".symtab") == 0)
&& (spnt[i].sh_type == SHT_SYMTAB) )
{
DEBUG_ProcessElfSymtab(addr, load_offset,
spnt + i, spnt + spnt[i].sh_link);
}
if( (strcmp(shstrtab + spnt[i].sh_name, ".dynsym") == 0)
&& (spnt[i].sh_type == SHT_DYNSYM) )
{
DEBUG_ProcessElfSymtab(addr, load_offset,
spnt + i, spnt + spnt[i].sh_link);
}
}
leave:
if( addr != (char *) 0xffffffff )
{
munmap(addr, statbuf.st_size);
}
if( fd != -1 )
{
close(fd);
}
return (rtn);
@ -1241,9 +1190,7 @@ DEBUG_ReadExecutableDbgInfo(void)
* Make sure we can stat and open this file.
*/
if( exe_name == NULL )
{
goto leave;
}
DEBUG_ProcessElfObject(exe_name, 0);
@ -1254,27 +1201,19 @@ DEBUG_ReadExecutableDbgInfo(void)
*/
dynpnt = _DYNAMIC;
if( dynpnt == NULL )
{
goto leave;
}
/*
* Now walk the dynamic section (of the executable, looking for a DT_DEBUG
* entry.
*/
for(; dynpnt->d_tag != DT_NULL; dynpnt++)
{
if( dynpnt->d_tag == DT_DEBUG )
{
break;
}
}
if( (dynpnt->d_tag != DT_DEBUG)
|| (dynpnt->d_un.d_ptr == 0) )
{
goto leave;
}
/*
* OK, now dig into the actual tables themselves.
@ -1297,14 +1236,10 @@ DEBUG_ReadExecutableDbgInfo(void)
*/
ehdr = (Elf32_Ehdr *) lpnt->l_addr;
if( (lpnt->l_addr == 0) || (ehdr->e_type != ET_DYN) )
{
continue;
}
if( lpnt->l_name != NULL )
{
DEBUG_ProcessElfObject(lpnt->l_name, lpnt->l_addr);
}
}
rtn = TRUE;
@ -1340,24 +1275,18 @@ DEBUG_ReadExecutableDbgInfo(void)
* Make sure we can stat and open this file.
*/
if( exe_name == NULL )
{
goto leave;
}
status = stat(exe_name, &statbuf);
if( status == -1 )
{
goto leave;
}
/*
* Now open the file, so that we can mmap() it.
*/
fd = open(exe_name, O_RDONLY);
if( fd == -1 )
{
goto leave;
}
/*
@ -1366,9 +1295,7 @@ DEBUG_ReadExecutableDbgInfo(void)
addr = mmap(0, statbuf.st_size, PROT_READ,
MAP_PRIVATE, fd, 0);
if( addr == (char *) 0xffffffff )
{
goto leave;
}
ahdr = (struct exec *) addr;
@ -1390,14 +1317,10 @@ DEBUG_ReadExecutableDbgInfo(void)
leave:
if( addr != (char *) 0xffffffff )
{
munmap(addr, statbuf.st_size);
}
if( fd != -1 )
{
close(fd);
}
return (rtn);

50
documentation/ttfserver Normal file
View File

@ -0,0 +1,50 @@
1. Get freetype-1.0.full.tar.gz
2. Read docus, unpack, configure and install
3. Test the library, e.g. "ftview 20 /dosc/win95/fonts/times "
4. Get xfsft-beta1e.linux-i586
5. Install it and start it when booting, e.g. in an rc-script.
The manpage for xfs applies.
6. Follow the hints given by williamc@dai.ed.ac.uk
==========
I got xfsft from http://www.dcs.ed.ac.uk/home/jec/progindex.html.
I have it running all the time. Here is /usr/X11R6/lib/X11/fs/config:
clone-self = on
use-syslog = off
catalogue = /c/windows/fonts
error-file = /usr/X11R6/lib/X11/fs/fs-errors
default-point-size = 120
default-resolutions = 75,75,100,100
Obviously /c/windows/fonts is where my Windows fonts on my
Win95 C: drive live; could be e.g. /mnt/dosC/windows/system
for Win31.
In /c/windows/fonts/fonts.scale I have
14
arial.ttf -monotype-arial-medium-r-normal--0-0-0-0-p-0-iso8859-1
arialbd.ttf -monotype-arial-bold-r-normal--0-0-0-0-p-0-iso8859-1
arialbi.ttf -monotype-arial-bold-o-normal--0-0-0-0-p-0-iso8859-1
ariali.ttf -monotype-arial-medium-o-normal--0-0-0-0-p-0-iso8859-1
cour.ttf -monotype-courier-medium-r-normal--0-0-0-0-p-0-iso8859-1
courbd.ttf -monotype-courier-bold-r-normal--0-0-0-0-p-0-iso8859-1
courbi.ttf -monotype-courier-bold-o-normal--0-0-0-0-p-0-iso8859-1
couri.ttf -monotype-courier-medium-o-normal--0-0-0-0-p-0-iso8859-1
times.ttf -monotype-times-medium-r-normal--0-0-0-0-p-0-iso8859-1
timesbd.ttf -monotype-times-bold-r-normal--0-0-0-0-p-0-iso8859-1
timesbi.ttf -monotype-times-bold-i-normal--0-0-0-0-p-0-iso8859-1
timesi.ttf -monotype-times-medium-i-normal--0-0-0-0-p-0-iso8859-1
symbol.ttf -monotype-symbol-medium-r-normal--0-0-0-0-p-0-microsoft-symbol
wingding.ttf -microsoft-wingdings-medium-r-normal--0-0-0-0-p-0-microsoft-symbol
In /c/windows/fonts/fonts.dir I have exactly the same.
In /usr/X11R6/lib/X11/XF86Config I have
FontPath "tcp/localhost:7100"
in front of the other FontPath lines.
That's it! As an interesting by-product of course, all those web
pages which specify Arial come up in Arial in Netscape ...
=======
7. Shut down X and restart ( and debug errors you did while setting
up everything.
8. Test with e.g "xlsfont |grep arial"
Hope this helps

View File

@ -465,9 +465,11 @@ static BOOL32 DIR_TryModulePath( LPCSTR name, DOS_FULL_NAME *full_name )
if (pdb->flags & PDB32_WIN16_PROC) {
if (!GetCurrentTask()) return FALSE;
GetModuleFileName16( GetCurrentTask(), buffer, sizeof(buffer) );
if (!GetModuleFileName16( GetCurrentTask(), buffer, sizeof(buffer) ))
buffer[0]='\0';
} else {
GetModuleFileName32A( 0, buffer, sizeof(buffer) );
if (!GetModuleFileName32A( 0, buffer, sizeof(buffer) ))
buffer[0]='\0';
}
if (!(p = strrchr( buffer, '\\' ))) return FALSE;
if (sizeof(buffer) - (++p - buffer) <= strlen(name)) return FALSE;
@ -568,7 +570,31 @@ done:
/***********************************************************************
* SearchPath32A (KERNEL32.447)
* SearchPath32A [KERNEL32.447]
*
* Searches for a specified file in the search path.
*
* PARAMS
* path [I] Path to search
* name [I] Filename to search for.
* ext [I] File extension to append to file name. The first
* character must be a period. This parameter is
* specified only if the filename given does not
* contain an extension.
* buflen [I] size of buffer, in characters
* buffer [O] buffer for found filename
* lastpart [O] address of pointer to last used character in
* buffer (the final '\')
*
* RETURNS
* Success: length of string copied into buffer, not including
* terminating null character. If the filename found is
* longer than the length of the buffer, the length of the
* filename is returned.
* Failure: Zero
*
* NOTES
* Should call SetLastError(but currently doesn't).
*/
DWORD WINAPI SearchPath32A( LPCSTR path, LPCSTR name, LPCSTR ext, DWORD buflen,
LPSTR buffer, LPSTR *lastpart )
@ -587,6 +613,7 @@ DWORD WINAPI SearchPath32A( LPCSTR path, LPCSTR name, LPCSTR ext, DWORD buflen,
for (p = buffer; *p; p++) if (*p == '/') *p = '\\';
if (lastpart) *lastpart = strrchr( buffer, '\\' ) + 1;
}
TRACE(dosfs, "Returning %d\n", (*res ? strlen(res) + 2 : 3));
return *res ? strlen(res) + 2 : 3;
}

View File

@ -13,7 +13,6 @@
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <time.h>

View File

@ -9,7 +9,6 @@
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/errno.h>
@ -1004,7 +1003,15 @@ DWORD WINAPI SetFilePointer( HFILE32 hFile, LONG distance, LONG *highword,
}
if ((result = lseek( file->unix_handle, distance, origin )) == -1)
{
/* care for this pathological case:
SetFilePointer(00000006,ffffffff,00000000,00000002)
ret=0062ab4a fs=01c7 */
if ((distance != -1))
FILE_SetDosError();
else
result = 0;
}
FILE_ReleaseFile( file );
return (DWORD)result;
}
@ -1850,3 +1857,53 @@ BOOL32 WINAPI UnlockFile(
return TRUE;
}
/**************************************************************************
* GetFileAttributesEx32A [KERNEL32.874]
*/
BOOL32 WINAPI GetFileAttributesEx32A(
LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId,
LPVOID lpFileInformation)
{
DOS_FULL_NAME full_name;
BY_HANDLE_FILE_INFORMATION info;
if (lpFileName == NULL) return FALSE;
if (lpFileInformation == NULL) return FALSE;
if (fInfoLevelId == GetFileExInfoStandard) {
LPWIN32_FILE_ATTRIBUTE_DATA lpFad =
(LPWIN32_FILE_ATTRIBUTE_DATA) lpFileInformation;
if (!DOSFS_GetFullName( lpFileName, TRUE, &full_name )) return FALSE;
if (!FILE_Stat( full_name.long_name, &info )) return FALSE;
lpFad->dwFileAttributes = info.dwFileAttributes;
lpFad->ftCreationTime = info.ftCreationTime;
lpFad->ftLastAccessTime = info.ftLastAccessTime;
lpFad->ftLastWriteTime = info.ftLastWriteTime;
lpFad->nFileSizeHigh = info.nFileSizeHigh;
lpFad->nFileSizeLow = info.nFileSizeLow;
}
else {
FIXME (file, "invalid info level %d!\n", fInfoLevelId);
return FALSE;
}
return TRUE;
}
/**************************************************************************
* GetFileAttributesEx32W [KERNEL32.875]
*/
BOOL32 WINAPI GetFileAttributesEx32W(
LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId,
LPVOID lpFileInformation)
{
LPSTR nameA = HEAP_strdupWtoA( GetProcessHeap(), 0, lpFileName );
BOOL32 res =
GetFileAttributesEx32A( nameA, fInfoLevelId, lpFileInformation);
HeapFree( GetProcessHeap(), 0, nameA );
return res;
}

View File

@ -6,7 +6,6 @@
*/
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -459,10 +458,12 @@ static BOOL32 PROFILE_Open( LPCSTR filename )
/***********************************************************************
* PROFILE_GetSection
*
* Enumerate all the keys of a section.
* Returns all keys of a section.
* If return_values is TRUE, also include the corrseponding values.
*/
static INT32 PROFILE_GetSection( PROFILESECTION *section, LPCSTR section_name,
LPSTR buffer, INT32 len, BOOL32 handle_env )
LPSTR buffer, INT32 len, BOOL32 handle_env,
BOOL32 return_values )
{
PROFILEKEY *key;
while (section)
@ -477,6 +478,13 @@ static INT32 PROFILE_GetSection( PROFILESECTION *section, LPCSTR section_name,
PROFILE_CopyEntry( buffer, key->name, len - 1, handle_env );
len -= strlen(buffer) + 1;
buffer += strlen(buffer) + 1;
if (return_values && key->value) {
buffer[-1] = '=';
PROFILE_CopyEntry ( buffer,
key->value, len - 1, handle_env );
len -= strlen(buffer) + 1;
buffer += strlen(buffer) + 1;
}
}
*buffer = '\0';
if (len < 1)
@ -518,7 +526,8 @@ static INT32 PROFILE_GetString( LPCSTR section, LPCSTR key_name,
section, key_name, def_val, buffer );
return strlen( buffer );
}
return PROFILE_GetSection(CurProfile.section, section, buffer, len, FALSE);
return PROFILE_GetSection(CurProfile.section, section, buffer, len,
FALSE, FALSE);
}
@ -588,7 +597,7 @@ int PROFILE_GetWineIniString( const char *section, const char *key_name,
section, key_name, def, buffer );
return strlen( buffer );
}
return PROFILE_GetSection( WineProfile, section, buffer, len, TRUE );
return PROFILE_GetSection( WineProfile, section, buffer, len, TRUE, FALSE );
}
@ -988,7 +997,9 @@ INT32 WINAPI GetPrivateProfileSection32A( LPCSTR section, LPSTR buffer,
INT32 len, LPCSTR filename )
{
if (PROFILE_Open( filename ))
return PROFILE_GetString( section, NULL, NULL, buffer, len );
return PROFILE_GetSection(CurProfile.section, section, buffer, len,
FALSE, TRUE);
return 0;
}
@ -1052,6 +1063,16 @@ BOOL32 WINAPI WritePrivateProfileSection32A( LPCSTR section,
return FALSE;
}
/***********************************************************************
* GetPrivateProfileSectionNames16 (KERNEL.143)
*/
WORD WINAPI GetPrivateProfileSectionNames16( LPSTR buffer, WORD size,
LPCSTR filename )
{
FIXME(profile, "(%p,%d,%s):stub\n", buffer, size, filename);
buffer[0] = buffer[1] = '\0';
return 0;
}
/***********************************************************************
* WriteOutProfiles (KERNEL.315)

View File

@ -48,7 +48,6 @@
*/
#include "config.h"
#include <stdio.h>
#include <unistd.h>
#include <assert.h>
#include "ts_xlib.h"

View File

@ -4,7 +4,6 @@
* Copyright 1996 Alexandre Julliard
*/
#include <stdio.h>
#include "gdi.h"
#include "heap.h"
#include "debug.h"

View File

@ -42,7 +42,7 @@ HGDIOBJ32 WIN16DRV_SelectObject( DC *dc, HGDIOBJ32 handle )
ret = WIN16DRV_BRUSH_SelectObject( dc, handle, (BRUSHOBJ *)ptr );
break;
case BITMAP_MAGIC:
fprintf(stderr, "WIN16DRV_SelectObject for BITMAP not implemented\n");
FIXME(gdi, "WIN16DRV_SelectObject for BITMAP not implemented\n");
ret = 1;
break;
case FONT_MAGIC:

View File

@ -133,7 +133,7 @@ LOADED_PRINTER_DRIVER *LoadPrinterDriver(const char *pszDriver)
}
if (!bSlotFound)
{
fprintf(stderr,"Too many printers drivers loaded\n");
WARN(win16drv,"Too many printers drivers loaded\n");
return NULL;
}
@ -148,7 +148,7 @@ LOADED_PRINTER_DRIVER *LoadPrinterDriver(const char *pszDriver)
if (hInst <= 32)
{
/* Failed to load driver */
fprintf(stderr, "Failed to load printer driver %s\n", pszDriver);
WARN(win16drv, "Failed to load printer driver %s\n", pszDriver);
} else {
TRACE(win16drv, "Loaded the library\n");
/* Allocate some memory for printer driver info */
@ -297,7 +297,7 @@ WORD PRTDRV_EnumDFonts(LPPDEVICE lpDestDev, LPSTR lpFaceName,
if(lpFaceName)
SEGPTR_FREE(lP2);
} else
fprintf(stderr,"Failed to find device\n");
WARN(win16drv,"Failed to find device\n");
TRACE(win16drv, "return %x\n", wRet);
return wRet;
@ -340,7 +340,7 @@ BOOL16 PRTDRV_EnumObj(LPPDEVICE lpDestDev, WORD iStyle,
lP1, wP2, lP3, lP4 );
}
else
fprintf(stderr,"Failed to find device\n");
WARN(win16drv,"Failed to find device\n");
TRACE(win16drv, "return %x\n", wRet);
return wRet;
@ -395,7 +395,7 @@ WORD PRTDRV_Output(LPPDEVICE lpDestDev,
clip = HeapAlloc( SystemHeap, 0, size );
if(!clip)
{
fprintf(stderr, "Can't alloc clip array in PRTDRV_Output\n");
WARN(win16drv, "Can't alloc clip array in PRTDRV_Output\n");
return FALSE;
}
GetRegionData( hClipRgn, size, clip );
@ -486,8 +486,7 @@ DWORD PRTDRV_RealizeObject(LPPDEVICE lpDestDev, WORD wStyle,
case DRVOBJ_PBITMAP:
default:
fprintf(stderr,
"PRTDRV_RealizeObject: Object type %d not supported\n", wStyle);
WARN(win16drv, "Object type %d not supported\n", wStyle);
nSize = 0;
}
@ -670,26 +669,27 @@ int WINAPI dmEnumDFonts(LPPDEVICE lpDestDev, LPSTR lpFaceName, FARPROC16 lpCallb
int WINAPI dmRealizeObject(LPPDEVICE lpDestDev, INT16 wStyle, LPSTR lpInObj, LPSTR lpOutObj, SEGPTR lpTextXForm)
{
fprintf(stderr, "dmRealizeObject(lpDestDev: %08x, wStyle: %04x, lpInObj: %08x, lpOutObj: %08x, lpTextXForm: %08x): stub: ", (UINT32)lpDestDev, wStyle, (UINT32)lpInObj, (UINT32)lpOutObj, (UINT32)lpTextXForm);
FIXME(win16drv, "(lpDestDev=%08x,wStyle=%04x,lpInObj=%08x,lpOutObj=%08x,lpTextXForm=%08x): stub\n",
(UINT32)lpDestDev, wStyle, (UINT32)lpInObj, (UINT32)lpOutObj, (UINT32)lpTextXForm);
if (wStyle < 0) { /* Free extra memory of given object's structure */
switch ( -wStyle ) {
case DRVOBJ_PEN: {
/* LPLOGPEN16 DeletePen = (LPLOGPEN16)lpInObj; */
fprintf(stderr, "DRVOBJ_PEN_delete\n");
TRACE(win16drv, "DRVOBJ_PEN_delete\n");
break;
}
case DRVOBJ_BRUSH: {
fprintf(stderr, "DRVOBJ_BRUSH_delete\n");
TRACE(win16drv, "DRVOBJ_BRUSH_delete\n");
break;
}
case DRVOBJ_FONT: {
/* LPTEXTXFORM16 TextXForm
= (LPTEXTXFORM16)lpTextXForm; */
fprintf(stderr, "DRVOBJ_FONT_delete\n");
TRACE(win16drv, "DRVOBJ_FONT_delete\n");
break;
}
case DRVOBJ_PBITMAP: fprintf(stderr, "DRVOBJ_PBITMAP_delete\n");
case DRVOBJ_PBITMAP: TRACE(win16drv, "DRVOBJ_PBITMAP_delete\n");
break;
}
}
@ -699,7 +699,7 @@ int WINAPI dmRealizeObject(LPPDEVICE lpDestDev, INT16 wStyle, LPSTR lpInObj, LPS
case DRVOBJ_PEN: {
LPLOGPEN16 InPen = (LPLOGPEN16)lpInObj;
fprintf(stderr, "DRVOBJ_PEN\n");
TRACE(win16drv, "DRVOBJ_PEN\n");
if (lpOutObj) {
if (InPen->lopnStyle == PS_NULL) {
*(DWORD *)lpOutObj = 0;
@ -722,7 +722,7 @@ int WINAPI dmRealizeObject(LPPDEVICE lpDestDev, INT16 wStyle, LPSTR lpInObj, LPS
LPLOGBRUSH16 OutBrush = (LPLOGBRUSH16)lpOutObj;
/* LPPOINT16 Point = (LPPOINT16)lpTextXForm; */
fprintf(stderr, "DRVOBJ_BRUSH\n");
TRACE(win16drv, "DRVOBJ_BRUSH\n");
if (!lpOutObj) return sizeof(LOGBRUSH16);
else {
OutBrush->lbStyle = InBrush->lbStyle;
@ -736,10 +736,10 @@ int WINAPI dmRealizeObject(LPPDEVICE lpDestDev, INT16 wStyle, LPSTR lpInObj, LPS
case DRVOBJ_FONT: {
/* LPTEXTXFORM16 TextXForm
= (LPTEXTXFORM16)lpTextXForm; */
fprintf(stderr, "DRVOBJ_FONT\n");
TRACE(win16drv, "DRVOBJ_FONT\n");
return 0;/* DISPLAY.DRV doesn't realize fonts */
}
case DRVOBJ_PBITMAP: fprintf(stderr, "DRVOBJ_PBITMAP\n");
case DRVOBJ_PBITMAP: TRACE(win16drv, "DRVOBJ_PBITMAP\n");
return 0; /* create memory bitmap */
}
}

View File

@ -19,8 +19,6 @@
#include "xmalloc.h"
#include "debug.h"
extern void CLIPPING_UpdateGCRegion(DC* );
typedef enum WING_DITHER_TYPE
{
WING_DISPERSED_4x4, WING_DISPERSED_8x8, WING_CLUSTERED_4x4

View File

@ -38,8 +38,6 @@
#define SWAP_INT32(i1,i2) \
do { INT32 __t = *(i1); *(i1) = *(i2); *(i2) = __t; } while(0)
extern void CLIPPING_UpdateGCRegion(DC* );
static const unsigned char BITBLT_Opcodes[256][MAX_OP_LEN] =
{
{ OP(PAT,DST,GXclear) }, /* 0x00 0 */
@ -1381,9 +1379,11 @@ BOOL32 X11DRV_PatBlt( DC *dc, INT32 left, INT32 top,
struct StretchBlt_params params = { dc, left, top, width, height,
NULL, 0, 0, 0, 0, rop };
BOOL32 result;
DIB_UpdateDIBSection( dc, FALSE );
EnterCriticalSection( &X11DRV_CritSection );
result = (BOOL32)CALL_LARGE_STACK( BITBLT_DoStretchBlt, &params );
LeaveCriticalSection( &X11DRV_CritSection );
DIB_UpdateDIBSection( dc, TRUE );
return result;
}
@ -1398,9 +1398,13 @@ BOOL32 X11DRV_BitBlt( DC *dcDst, INT32 xDst, INT32 yDst,
struct StretchBlt_params params = { dcDst, xDst, yDst, width, height,
dcSrc, xSrc, ySrc, width, height, rop};
BOOL32 result;
DIB_UpdateDIBSection( dcDst, FALSE );
DIB_UpdateDIBSection( dcSrc, FALSE );
EnterCriticalSection( &X11DRV_CritSection );
result = (BOOL32)CALL_LARGE_STACK( BITBLT_DoStretchBlt, &params );
LeaveCriticalSection( &X11DRV_CritSection );
DIB_UpdateDIBSection( dcDst, TRUE );
DIB_UpdateDIBSection( dcSrc, TRUE );
return result;
}
@ -1417,8 +1421,12 @@ BOOL32 X11DRV_StretchBlt( DC *dcDst, INT32 xDst, INT32 yDst,
dcSrc, xSrc, ySrc, widthSrc, heightSrc,
rop };
BOOL32 result;
DIB_UpdateDIBSection( dcDst, FALSE );
DIB_UpdateDIBSection( dcSrc, FALSE );
EnterCriticalSection( &X11DRV_CritSection );
result = (BOOL32)CALL_LARGE_STACK( BITBLT_DoStretchBlt, &params );
LeaveCriticalSection( &X11DRV_CritSection );
DIB_UpdateDIBSection( dcDst, TRUE );
DIB_UpdateDIBSection( dcSrc, TRUE );
return result;
}

View File

@ -15,8 +15,6 @@
#include "heap.h"
#include "debug.h"
extern void CLIPPING_UpdateGCRegion(DC* );
/***********************************************************************
* X11DRV_BITMAP_Init
*/

View File

@ -24,7 +24,7 @@ void X11DRV_SetDeviceClipping( DC * dc )
RGNOBJ *obj = (RGNOBJ *) GDI_GetObjPtr(dc->w.hGCClipRgn, REGION_MAGIC);
if (!obj)
{
fprintf( stderr, "X11DRV_SetDeviceClipping: Rgn is 0. Please report this.\n");
ERR(x11drv, "Rgn is 0. Please report this.\n");
exit(1);
}
@ -38,7 +38,7 @@ void X11DRV_SetDeviceClipping( DC * dc )
sizeof(*pXrect) * obj->rgn->numRects );
if(!pXrect)
{
fprintf(stderr, "X11DRV_SetDeviceClipping() can't alloc buffer\n");
WARN(x11drv, "Can't alloc buffer\n");
return;
}

View File

@ -19,6 +19,7 @@
#include "ts_xlib.h"
#include <X11/Xatom.h>
#include <math.h>
#include <assert.h>
#include "heap.h"
#include "options.h"
#include "x11font.h"
@ -29,7 +30,7 @@
#define X_FMC_MAGIC (0x0000CAFE)
#define MAX_FONT_FAMILIES 64
#define MAX_LFD_LENGTH 128
#define MAX_LFD_LENGTH 256
#define REMOVE_SUBSETS 1
#define UNMARK_SUBSETS 0
@ -396,6 +397,7 @@ static BOOL32 LFD_ComposeLFD( fontObject* fo,
const char* lpEncoding = NULL;
char h_string[64], point_string[64];
*(lpLFD+MAX_LFD_LENGTH-1)=0;
lstrcpy32A( lpLFD, fo->fr->resource );
/* add weight */
@ -543,6 +545,7 @@ static BOOL32 LFD_ComposeLFD( fontObject* fo,
}
TRACE(font,"\tLFD: %s\n", lpLFD );
assert(*(lpLFD+MAX_LFD_LENGTH-1)==0); /* check if overwrittem */
return TRUE;
}
@ -1242,7 +1245,7 @@ static int XFONT_CheckIniSection()
PROFILE_EnumerateWineIniSection("Fonts", &XFONT_CheckIniCallback,
(void *)&found);
if(found)
fprintf(stderr, fontmsgepilogue);
MSG(fontmsgepilogue);
return 1;
}
@ -1267,21 +1270,21 @@ static void XFONT_CheckIniCallback(
/* Valid key; make sure the value doesn't contain a wildcard */
if(strchr(value, '*')) {
if(*(int *)found == 0) {
fprintf(stderr, fontmsgprologue);
MSG(fontmsgprologue);
++*(int *)found;
}
fprintf(stderr, " %s=%s [no wildcards allowed]\n", key, value);
MSG(" %s=%s [no wildcards allowed]\n", key, value);
}
}
else {
/* Not a valid key */
if(*(int *)found == 0) {
fprintf(stderr, fontmsgprologue);
MSG(fontmsgprologue);
++*(int *)found;
}
fprintf(stderr, " %s=%s [obsolete]\n", key, value);
MSG(" %s=%s [obsolete]\n", key, value);
}
return;

View File

@ -15,6 +15,7 @@ DLLS = \
lzexpand.spec \
mmsystem.spec \
mouse.spec \
msvideo.spec \
ole2.spec \
ole2conv.spec \
ole2disp.spec \

View File

@ -53,6 +53,7 @@ extern const WIN16_DESCRIPTOR KEYBOARD_Descriptor;
extern const WIN16_DESCRIPTOR LZEXPAND_Descriptor;
extern const WIN16_DESCRIPTOR MMSYSTEM_Descriptor;
extern const WIN16_DESCRIPTOR MOUSE_Descriptor;
extern const WIN16_DESCRIPTOR MSVIDEO_Descriptor;
extern const WIN16_DESCRIPTOR OLE2CONV_Descriptor;
extern const WIN16_DESCRIPTOR OLE2DISP_Descriptor;
extern const WIN16_DESCRIPTOR OLE2NLS_Descriptor;
@ -96,6 +97,7 @@ static BUILTIN16_DLL BuiltinDLLs[] =
{ &LZEXPAND_Descriptor, 0 },
{ &MMSYSTEM_Descriptor, 0 },
{ &MOUSE_Descriptor, 0 },
{ &MSVIDEO_Descriptor, 0 },
{ &OLE2CONV_Descriptor, DLL_FLAG_NOT_USED },
{ &OLE2DISP_Descriptor, DLL_FLAG_NOT_USED },
{ &OLE2NLS_Descriptor, DLL_FLAG_NOT_USED },

View File

@ -2,7 +2,6 @@
* Dummy function definitions
*/
#include <stdio.h>
#include "wintypes.h"
#include "debug.h"

View File

@ -107,7 +107,7 @@ file krnl386.exe
106 pascal SetSwapAreaSize(word) SetSwapAreaSize16
107 pascal16 SetErrorMode(word) SetErrorMode16
108 pascal16 SwitchStackTo(word word word) SwitchStackTo
109 register SwitchStackBack(word word word) SwitchStackBack
109 register SwitchStackBack() SwitchStackBack
110 pascal16 PatchCodeHandle(word) PatchCodeHandle
111 pascal GlobalWire(word) GlobalWire16
112 pascal16 GlobalUnWire(word) GlobalUnWire16
@ -143,7 +143,7 @@ file krnl386.exe
140 pascal16 SetSigHandler(segptr ptr ptr word word) SetSigHandler
141 stub InitTask1
142 stub GetProfileSectionNames
143 stub GetPrivateProfileSectionNames
143 pascal16 GetPrivateProfileSectionNames(ptr word str) GetPrivateProfileSectionNames16
144 pascal16 CreateDirectory(ptr ptr) CreateDirectory16
145 pascal16 RemoveDirectory(ptr) RemoveDirectory16
146 pascal16 DeleteFile(ptr) DeleteFile16
@ -280,7 +280,7 @@ file krnl386.exe
357 pascal MapSL(segptr) MapSL
358 pascal MapLS(long) MapLS
359 pascal UnMapLS(segptr) UnMapLS
360 stub OpenFileEx
360 pascal16 OpenFileEx(str ptr word) OpenFile16
#361 PIGLET_361
365 stub KERNEL_365
403 pascal16 FarSetOwner(word word) FarSetOwner
@ -311,6 +311,8 @@ file krnl386.exe
447 stub KERNEL_447
449 pascal KERNEL_449() KERNEL_449
450 pascal16 KERNEL_450() stub_KERNEL_450
452 stub KERNEL_452
453 stub KERNEL_453
454 equate __FLATCS 0 # initialized by BUILTIN_Init()
455 equate __FLATDS 0 # initialized by BUILTIN_Init()
471 pascal KERNEL_471() _KERNEL_471
@ -321,6 +323,7 @@ file krnl386.exe
481 stub KERNEL_481
482 pascal LoadLibrary32(str) LoadLibrary32A
485 stub KERNEL_485
486 stub KERNEL_486
491 stub RegisterServiceProcess
500 stub KERNEL_500
502 stub KERNEL_502

69
if1632/msvideo.spec Normal file
View File

@ -0,0 +1,69 @@
name msvideo
type win16
2 stub VIDEOFORWINDOWSVERSION
20 stub VIDEOGETNUMDEVS
21 stub VIDEOGETERRORTEXT
22 stub VIDEOCAPDRIVERDESCANDVER
28 stub VIDEOOPEN
29 stub VIDEOCLOSE
30 stub VIDEODIALOG
31 stub VIDEOFRAME
32 stub VIDEOCONFIGURE
33 stub VIDEOCONFIGURESTORAGE
34 stub VIDEOGETCHANNELCAPS
35 stub VIDEOUPDATE
40 stub VIDEOSTREAMADDBUFFER
41 stub VIDEOSTREAMFINI
42 stub VIDEOSTREAMGETERROR
43 stub VIDEOSTREAMGETPOSITION
44 stub VIDEOSTREAMINIT
46 stub VIDEOSTREAMPREPAREHEADER
47 stub VIDEOSTREAMRESET
49 stub VIDEOSTREAMSTART
50 stub VIDEOSTREAMSTOP
51 stub VIDEOSTREAMUNPREPAREHEADER
52 stub VIDEOSTREAMALLOCHDRANDBUFFER
53 stub VIDEOSTREAMFREEHDRANDBUFFER
60 stub VIDEOMESSAGE
102 stub DRAWDIBOPEN
103 stub DRAWDIBCLOSE
104 stub DRAWDIBBEGIN
105 stub DRAWDIBEND
106 stub DRAWDIBDRAW
108 stub DRAWDIBGETPALETTE
110 stub DRAWDIBSETPALETTE
111 stub DRAWDIBCHANGEPALETTE
112 stub DRAWDIBREALIZE
113 stub DRAWDIBTIME
114 stub DRAWDIBPROFILEDISPLAY
115 stub STRETCHDIB
118 stub DRAWDIBSTART
119 stub DRAWDIBSTOP
120 stub DRAWDIBGETBUFFER
200 stub ICINFO
201 stub ICINSTALL
202 stub ICREMOVE
203 stub ICOPEN
204 stub ICCLOSE
205 stub ICSENDMESSAGE
206 stub ICOPENFUNCTION
207 stub _ICMESSAGE
212 stub ICGETINFO
213 stub ICLOCATE
224 stub _ICCOMPRESS
230 stub _ICDECOMPRESS
232 stub _ICDRAWBEGIN
234 stub _ICDRAW
239 stub ICGETDISPLAYFORMAT
240 stub ICIMAGECOMPRESS
241 stub ICIMAGEDECOMPRESS
242 stub ICCOMPRESSORCHOOSE
243 stub ICCOMPRESSORFREE
244 stub ICSEQCOMPRESSFRAMESTART
245 stub ICSEQCOMPRESSFRAMEEND
246 stub ICSEQCOMPRESSFRAME
250 stub _MCIWNDCREATE
251 stub _MCIWNDREGISTERCLASS
252 stub GETOPENFILENAMEPREVIEW
253 stub GETSAVEFILENAMEPREVIEW

View File

@ -4,7 +4,6 @@
*/
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include "windows.h"
#include "winnt.h"
@ -71,9 +70,9 @@ void RELAY_DebugCallFrom16( int func_type, char *args,
if (!TRACE_ON(relay)) return;
frame = CURRENT_STACK16;
printf( "Call %s(", BUILTIN_GetEntryPoint16( frame->entry_cs,
frame->entry_ip,
&ordinal ));
DPRINTF( "Call %s(", BUILTIN_GetEntryPoint16( frame->entry_cs,
frame->entry_ip,
&ordinal ));
VA_START16( args16 );
if (func_type & 4) /* cdecl */
@ -84,32 +83,32 @@ void RELAY_DebugCallFrom16( int func_type, char *args,
{
case 'w':
case 's':
printf( "0x%04x", *(WORD *)args16 );
DPRINTF( "0x%04x", *(WORD *)args16 );
args16 += 2;
break;
case 'l':
printf( "0x%08x", *(int *)args16 );
DPRINTF( "0x%08x", *(int *)args16 );
args16 += 4;
break;
case 't':
printf( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
if (HIWORD(*(SEGPTR *)args16))
debug_dumpstr( (LPSTR)PTR_SEG_TO_LIN(*(SEGPTR *)args16 ));
args16 += 4;
break;
case 'p':
printf( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
args16 += 4;
break;
case 'T':
printf( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
if (HIWORD( *(SEGPTR *)args16 ))
debug_dumpstr( (LPSTR)PTR_SEG_TO_LIN(*(SEGPTR *)args16 ));
args16 += 4;
break;
}
args++;
if (*args) printf( "," );
if (*args) DPRINTF( "," );
}
}
else /* not cdecl */
@ -139,42 +138,42 @@ void RELAY_DebugCallFrom16( int func_type, char *args,
case 'w':
case 's':
args16 -= 2;
printf( "0x%04x", *(WORD *)args16 );
DPRINTF( "0x%04x", *(WORD *)args16 );
break;
case 'l':
args16 -= 4;
printf( "0x%08x", *(int *)args16 );
DPRINTF( "0x%08x", *(int *)args16 );
break;
case 't':
args16 -= 4;
printf( "0x%08x", *(int *)args16 );
DPRINTF( "0x%08x", *(int *)args16 );
if (HIWORD(*(SEGPTR *)args16))
debug_dumpstr( (LPSTR)PTR_SEG_TO_LIN(*(SEGPTR *)args16 ));
break;
case 'p':
args16 -= 4;
printf( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
break;
case 'T':
args16 -= 4;
printf( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
if (HIWORD( *(SEGPTR *)args16 ))
debug_dumpstr( (LPSTR)PTR_SEG_TO_LIN(*(SEGPTR *)args16 ));
break;
}
args++;
if (*args) printf( "," );
if (*args) DPRINTF( "," );
}
}
printf( ") ret=%04x:%04x ds=%04x\n", frame->cs, frame->ip, frame->ds );
DPRINTF( ") ret=%04x:%04x ds=%04x\n", frame->cs, frame->ip, frame->ds );
VA_END16( args16 );
if (func_type & 2) /* register function */
printf( " AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08lx\n",
AX_reg(context), BX_reg(context), CX_reg(context),
DX_reg(context), SI_reg(context), DI_reg(context),
(WORD)ES_reg(context), EFL_reg(context) );
DPRINTF( " AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08lx\n",
AX_reg(context), BX_reg(context), CX_reg(context),
DX_reg(context), SI_reg(context), DI_reg(context),
(WORD)ES_reg(context), EFL_reg(context) );
}
@ -188,23 +187,23 @@ void RELAY_DebugCallFrom16Ret( int func_type, int ret_val, CONTEXT *context)
if (!TRACE_ON(relay)) return;
frame = CURRENT_STACK16;
printf( "Ret %s() ", BUILTIN_GetEntryPoint16( frame->entry_cs,
DPRINTF( "Ret %s() ", BUILTIN_GetEntryPoint16( frame->entry_cs,
frame->entry_ip,
&ordinal ));
switch(func_type)
{
case 0: /* long */
printf( "retval=0x%08x ret=%04x:%04x ds=%04x\n",
ret_val, frame->cs, frame->ip, frame->ds );
DPRINTF( "retval=0x%08x ret=%04x:%04x ds=%04x\n",
ret_val, frame->cs, frame->ip, frame->ds );
break;
case 1: /* word */
printf( "retval=0x%04x ret=%04x:%04x ds=%04x\n",
ret_val & 0xffff, frame->cs, frame->ip, frame->ds );
DPRINTF( "retval=0x%04x ret=%04x:%04x ds=%04x\n",
ret_val & 0xffff, frame->cs, frame->ip, frame->ds );
break;
case 2: /* regs */
printf( "retval=none ret=%04x:%04x ds=%04x\n",
DPRINTF("retval=none ret=%04x:%04x ds=%04x\n",
(WORD)CS_reg(context), IP_reg(context), (WORD)DS_reg(context));
printf( " AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08lx\n",
DPRINTF(" AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08lx\n",
AX_reg(context), BX_reg(context), CX_reg(context),
DX_reg(context), SI_reg(context), DI_reg(context),
(WORD)ES_reg(context), EFL_reg(context) );
@ -251,25 +250,25 @@ void RELAY_DebugCallTo16( int* stack, int nb_args )
{
CONTEXT *context = (CONTEXT *)stack[0];
WORD *stack16 = (WORD *)THREAD_STACK16(thdb);
printf( "CallTo16(func=%04lx:%04x,ds=%04lx",
DPRINTF("CallTo16(func=%04lx:%04x,ds=%04lx",
CS_reg(context), IP_reg(context), DS_reg(context) );
nb_args = stack[1] / sizeof(WORD);
while (nb_args--) printf( ",0x%04x", *(--stack16) );
printf( ") ss:sp=%04x:%04x\n", SELECTOROF(thdb->cur_stack),
DPRINTF(") ss:sp=%04x:%04x\n", SELECTOROF(thdb->cur_stack),
OFFSETOF(thdb->cur_stack) );
printf( " AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x BP=%04x ES=%04x\n",
DPRINTF(" AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x BP=%04x ES=%04x\n",
AX_reg(context), BX_reg(context), CX_reg(context),
DX_reg(context), SI_reg(context), DI_reg(context),
BP_reg(context), (WORD)ES_reg(context) );
}
else
{
printf( "CallTo16(func=%04x:%04x,ds=%04x",
DPRINTF("CallTo16(func=%04x:%04x,ds=%04x",
HIWORD(stack[0]), LOWORD(stack[0]),
SELECTOROF(thdb->cur_stack) );
stack++;
while (nb_args--) printf( ",0x%04x", *stack++ );
printf( ") ss:sp=%04x:%04x\n", SELECTOROF(thdb->cur_stack),
while (nb_args--) DPRINTF(",0x%04x", *stack++ );
DPRINTF(") ss:sp=%04x:%04x\n", SELECTOROF(thdb->cur_stack),
OFFSETOF(thdb->cur_stack) );
}
}

View File

@ -4,7 +4,6 @@
* Copyright 1995 Alexandre Julliard
*/
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
@ -24,6 +23,30 @@
#include "thread.h"
#include "debug.h"
static const char * const SIGNAL_traps[] =
{
"Division by zero exception", /* 0 */
"Debug exception", /* 1 */
"NMI interrupt", /* 2 */
"Breakpoint exception", /* 3 */
"Overflow exception", /* 4 */
"Bound range exception", /* 5 */
"Invalid opcode exception", /* 6 */
"Device not available exception", /* 7 */
"Double fault exception", /* 8 */
"Coprocessor segment overrun", /* 9 */
"Invalid TSS exception", /* 10 */
"Segment not present exception", /* 11 */
"Stack fault", /* 12 */
"General protection fault", /* 13 */
"Page fault", /* 14 */
"Unknown exception", /* 15 */
"Floating point exception", /* 16 */
"Alignment check exception", /* 17 */
"Machine check exception" /* 18 */
};
#define NB_TRAPS (sizeof(SIGNAL_traps) / sizeof(SIGNAL_traps[0]))
extern void SIGNAL_SetHandler( int sig, void (*func)(), int flags );
extern BOOL32 INSTR_EmulateInstruction( SIGCONTEXT *context );
@ -62,20 +85,25 @@ static HANDLER_DEF(SIGNAL_trap)
*/
static HANDLER_DEF(SIGNAL_fault)
{
const char *fault = "Segmentation fault";
HANDLER_INIT();
if (INSTR_EmulateInstruction( HANDLER_CONTEXT )) return;
#ifdef TRAP_sig
if (TRAP_sig( HANDLER_CONTEXT ) < NB_TRAPS)
fault = SIGNAL_traps[TRAP_sig( HANDLER_CONTEXT )];
#endif
if (IS_SELECTOR_SYSTEM(CS_sig(HANDLER_CONTEXT)))
{
MSG("Segmentation fault in 32-bit code (0x%08lx).\n",
EIP_sig(HANDLER_CONTEXT) );
MSG("%s in 32-bit code (0x%08lx).\n", fault, EIP_sig(HANDLER_CONTEXT));
}
else
{
MSG("Segmentation fault in 16-bit code (%04x:%04lx).\n",
MSG("%s in 16-bit code (%04x:%04lx).\n", fault,
(WORD)CS_sig(HANDLER_CONTEXT), EIP_sig(HANDLER_CONTEXT) );
}
#ifdef CR2_sig
fprintf(stderr,"Fault address is 0x%08lx\n",CR2_sig(HANDLER_CONTEXT));
MSG("Fault address is 0x%08lx\n",CR2_sig(HANDLER_CONTEXT));
#endif
wine_debug( signal, HANDLER_CONTEXT );
}

View File

@ -2,9 +2,9 @@
* Emulator thunks
*
* Copyright 1996, 1997 Alexandre Julliard
* Copyright 1998 Ulrich Weigand
*/
#include <stdio.h>
#include "windows.h"
#include "callback.h"
#include "resource.h"
@ -13,12 +13,14 @@
#include "heap.h"
#include "hook.h"
#include "module.h"
#include "process.h"
#include "stackframe.h"
#include "selectors.h"
#include "task.h"
#include "except.h"
#include "win.h"
#include "debug.h"
#include "flatthunk.h"
/* List of the 16-bit callback functions. This list is used */
@ -710,3 +712,238 @@ static BOOL32 WINAPI THUNK_WOWCallback16Ex(
*pdwret = ret;
return TRUE;
}
/***********************************************************************
* 16->32 Flat Thunk routines:
*/
/***********************************************************************
* ThunkConnect16 (KERNEL.651)
* Connects a 32bit and a 16bit thunkbuffer.
*/
UINT32 WINAPI ThunkConnect16(
LPSTR module16, /* [in] name of win16 dll */
LPSTR module32, /* [in] name of win32 dll */
HINSTANCE16 hInst16, /* [in] hInst of win16 dll */
DWORD dwReason, /* [in] initialisation argument */
struct ThunkDataCommon *TD, /* [in/out] thunkbuffer */
LPSTR thunkfun32, /* [in] win32 thunkfunction */
WORD CS /* [in] CS of win16 dll */
) {
BOOL32 directionSL;
if (!lstrncmp32A(TD->magic, "SL01", 4))
{
directionSL = TRUE;
TRACE(thunk, "SL01 thunk %s (%lx) -> %s (%s), Reason: %ld\n",
module16, (DWORD)TD, module32, thunkfun32, dwReason);
}
else if (!lstrncmp32A(TD->magic, "LS01", 4))
{
directionSL = FALSE;
TRACE(thunk, "LS01 thunk %s (%lx) <- %s (%s), Reason: %ld\n",
module16, (DWORD)TD, module32, thunkfun32, dwReason);
}
else
{
ERR(thunk, "Invalid magic %c%c%c%c\n",
TD->magic[0], TD->magic[1], TD->magic[2], TD->magic[3]);
return 0;
}
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
if (directionSL)
{
struct ThunkDataSL16 *SL16 = (struct ThunkDataSL16 *)TD;
struct ThunkDataSL *SL = SL16->fpData;
if (SL == NULL)
{
SL = HeapAlloc(GetProcessHeap(), 0, sizeof(*SL));
SL->common = SL16->common;
SL->flags1 = SL16->flags1;
SL->flags2 = SL16->flags2;
SL->apiDB = PTR_SEG_TO_LIN(SL16->apiDatabase);
SL->targetDB = NULL;
lstrcpyn32A(SL->pszDll16, module16, 255);
lstrcpyn32A(SL->pszDll32, module32, 255);
/* We should create a SEGPTR to the ThunkDataSL,
but since the contents are not in the original format,
any access to this by 16-bit code would crash anyway. */
SL16->spData = 0;
SL16->fpData = SL;
}
if (SL->flags2 & 0x80000000)
{
TRACE(thunk, "Preloading 32-bit library\n");
LoadLibrary32A(module32);
}
}
else
{
/* nothing to do */
}
break;
case DLL_PROCESS_DETACH:
/* FIXME: cleanup */
break;
}
return 1;
}
/***********************************************************************
* C16ThkSL (KERNEL.630)
*/
void WINAPI C16ThkSL(CONTEXT *context)
{
extern void CallFrom16_t_long_(void);
LPBYTE stub = PTR_SEG_TO_LIN(EAX_reg(context)), x = stub;
WORD cs, ds;
GET_CS(cs);
GET_DS(ds);
/* We produce the following code:
*
* mov ax, __FLATDS
* mov es, ax
* movzx ecx, cx
* mov edx, es:[ecx + $EDX]
* push bp
* push edx
* call __FLATCS:CallFrom16_t_long_
*/
*x++ = 0xB8; *((WORD *)x)++ = ds;
*x++ = 0x8E; *x++ = 0xC0;
*x++ = 0x60; *x++ = 0x0F; *x++ = 0xB7; *x++ = 0xC9;
*x++ = 0x67; *x++ = 0x66; *x++ = 0x26; *x++ = 0x8B;
*x++ = 0x91; *((DWORD *)x)++ = EDX_reg(context);
*x++ = 0x55;
*x++ = 0x66; *x++ = 0x52;
*x++ = 0x66; *x++ = 0x9A; *((DWORD *)x)++ = (DWORD)CallFrom16_t_long_;
*((WORD *)x)++ = cs;
/* Jump to the stub code just created */
IP_reg(context) = LOWORD(EAX_reg(context));
CS_reg(context) = HIWORD(EAX_reg(context));
/* Since C16ThkSL got called by a jmp, we need to leave the
orginal return address on the stack */
SP_reg(context) -= 4;
}
/***********************************************************************
* C16ThkSL01 (KERNEL.631)
*/
void WINAPI C16ThkSL01(CONTEXT *context)
{
LPBYTE stub = PTR_SEG_TO_LIN(EAX_reg(context)), x = stub;
if (stub)
{
struct ThunkDataSL16 *SL16 = PTR_SEG_TO_LIN(EDX_reg(context));
struct ThunkDataSL *td = SL16->fpData;
extern void CallFrom16_t_long_(void);
DWORD procAddress = (DWORD)GetProcAddress16(GetModuleHandle16("KERNEL"), 631);
WORD cs;
GET_CS(cs);
if (!td)
{
ERR(thunk, "ThunkConnect16 was not called!\n");
return;
}
TRACE(thunk, "Creating stub for ThunkDataSL %08lx\n", (DWORD)td);
/* We produce the following code:
*
* xor eax, eax
* mov edx, $td
* call C16ThkSL01
* push bp
* push edx
* call __FLATCS:CallFrom16_t_long_
*/
*x++ = 0x66; *x++ = 0x33; *x++ = 0xC0;
*x++ = 0x66; *x++ = 0xBA; *((DWORD *)x)++ = (DWORD)td;
*x++ = 0x9A; *((DWORD *)x)++ = procAddress;
*x++ = 0x55;
*x++ = 0x66; *x++ = 0x52;
*x++ = 0x66; *x++ = 0x9A; *((DWORD *)x)++ = (DWORD)CallFrom16_t_long_;
*((WORD *)x)++ = cs;
/* Jump to the stub code just created */
IP_reg(context) = LOWORD(EAX_reg(context));
CS_reg(context) = HIWORD(EAX_reg(context));
/* Since C16ThkSL01 got called by a jmp, we need to leave the
orginal return address on the stack */
SP_reg(context) -= 4;
}
else
{
struct ThunkDataSL *td = (struct ThunkDataSL *)EDX_reg(context);
DWORD targetNr = CX_reg(context) / 4;
struct SLTargetDB *tdb;
TRACE(thunk, "Process %08lx calling target %ld of ThunkDataSL %08lx\n",
(DWORD)PROCESS_Current(), targetNr, (DWORD)td);
for (tdb = td->targetDB; tdb; tdb = tdb->next)
if (tdb->process == PROCESS_Current())
break;
if (!tdb)
{
TRACE(thunk, "Loading 32-bit library %s\n", td->pszDll32);
LoadLibrary32A(td->pszDll32);
for (tdb = td->targetDB; tdb; tdb = tdb->next)
if (tdb->process == PROCESS_Current())
break;
}
if (tdb)
{
EDX_reg(context) = tdb->targetTable[targetNr];
TRACE(thunk, "Call target is %08lx\n", EDX_reg(context));
}
else
{
WORD *stack = PTR_SEG_OFF_TO_LIN(SS_reg(context), SP_reg(context));
DX_reg(context) = HIWORD(td->apiDB[targetNr].errorReturnValue);
AX_reg(context) = LOWORD(td->apiDB[targetNr].errorReturnValue);
IP_reg(context) = stack[2];
CS_reg(context) = stack[3];
SP_reg(context) += td->apiDB[targetNr].nrArgBytes + 4;
/* Win95 allows delayed loading of the 32-bit DLL.
We don't do that at the moment. */
ERR(thunk, "Process %08lx did not ThunkConnect32 %s to %s\n",
(DWORD)PROCESS_Current(), td->pszDll32, td->pszDll16);
}
}
}

View File

@ -462,8 +462,8 @@ file user.exe
514 pascal16 WNetDeviceMode(word) WNetDeviceMode
515 pascal16 WNetBrowseDialog(word word ptr) WNetBrowseDialog
516 pascal16 WNetGetUser(ptr ptr ptr) WNetGetUser
517 pascal16 WNetAddConnection(ptr ptr ptr) WNetAddConnection16
518 pascal16 WNetCancelConnection(ptr word) WNetCancelConnection
517 pascal16 WNetAddConnection(str str str) WNetAddConnection16
518 pascal16 WNetCancelConnection(str word) WNetCancelConnection
519 pascal16 WNetGetError(ptr) WNetGetError
520 pascal16 WNetGetErrorText(word ptr ptr) WNetGetErrorText
521 stub WNetEnable

View File

@ -39,15 +39,15 @@ type win16
101 pascal16 WSAAsyncSelect(word word word long) WSAAsyncSelect16
102 pascal16 WSAAsyncGetHostByAddr(word word ptr word word segptr word)
WSAAsyncGetHostByAddr16
103 pascal16 WSAAsyncGetHostByName(word word ptr segptr word)
103 pascal16 WSAAsyncGetHostByName(word word str segptr word)
WSAAsyncGetHostByName16
104 pascal16 WSAAsyncGetProtoByNumber(word word word segptr word)
WSAAsyncGetProtoByNumber16
105 pascal16 WSAAsyncGetProtoByName(word word ptr segptr word)
105 pascal16 WSAAsyncGetProtoByName(word word str segptr word)
WSAAsyncGetProtoByName16
106 pascal16 WSAAsyncGetServByPort(word word word ptr segptr word)
106 pascal16 WSAAsyncGetServByPort(word word word str segptr word)
WSAAsyncGetServByPort16
107 pascal16 WSAAsyncGetServByName(word word ptr ptr segptr word)
107 pascal16 WSAAsyncGetServByName(word word str str segptr word)
WSAAsyncGetServByName16
108 pascal16 WSACancelAsyncRequest(word) WSACancelAsyncRequest16
109 pascal16 WSASetBlockingHook(segptr) WSASetBlockingHook16

View File

@ -29,6 +29,12 @@ typedef struct
BITMAP16 bitmap;
Pixmap pixmap;
SIZE16 size; /* For SetBitmapDimension() */
/* For device-independent bitmaps: */
DIBSECTION *dibSection;
RGBQUAD *colorMap;
int nColorMap;
} BITMAPOBJ;
/* GCs used for B&W and color bitmap operations */
@ -62,6 +68,8 @@ extern INT32 BITMAP_GetBitsWidth( int width, int depth );
extern int DIB_GetDIBWidthBytes( int width, int depth );
extern int DIB_GetXImageWidthBytes( int width, int depth );
extern int DIB_BitmapInfoSize( BITMAPINFO * info, WORD coloruse );
extern void DIB_UpdateDIBSection( DC *dc, BOOL32 toDIB );
/* objects/oembitmap.c */
extern BOOL32 OBM_Init(void);

View File

@ -15,7 +15,6 @@ typedef struct
int base; /* Ordinal base */
int nb_funcs; /* Number of functions */
int nb_names; /* Number of function names */
int nb_reg_funcs; /* Number of register functions */
const ENTRYPOINT32 *functions; /* Pointer to function table */
const char * const *names; /* Pointer to names table */
const unsigned short *ordinals; /* Pointer to ordinals table */

905
include/casemap.h Normal file
View File

@ -0,0 +1,905 @@
/*
* Automatically generated file -- do not edit!
* (Use tools/unimap.pl for generation)
*
* Mapping tables for Unicode case conversion
*/
/* Lowercase mappings 0000 - 00FF */
static const WCHAR lblk00[256] = {
0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
0x0078, 0x0079, 0x007A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00D7,
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00DF,
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF,
};
/* Lowercase mappings 0100 - 01FF */
static const WCHAR lblk01[256] = {
0x0101, 0x0101, 0x0103, 0x0103, 0x0105, 0x0105, 0x0107, 0x0107,
0x0109, 0x0109, 0x010B, 0x010B, 0x010D, 0x010D, 0x010F, 0x010F,
0x0111, 0x0111, 0x0113, 0x0113, 0x0115, 0x0115, 0x0117, 0x0117,
0x0119, 0x0119, 0x011B, 0x011B, 0x011D, 0x011D, 0x011F, 0x011F,
0x0121, 0x0121, 0x0123, 0x0123, 0x0125, 0x0125, 0x0127, 0x0127,
0x0129, 0x0129, 0x012B, 0x012B, 0x012D, 0x012D, 0x012F, 0x012F,
0x0069, 0x0131, 0x0133, 0x0133, 0x0135, 0x0135, 0x0137, 0x0137,
0x0138, 0x013A, 0x013A, 0x013C, 0x013C, 0x013E, 0x013E, 0x0140,
0x0140, 0x0142, 0x0142, 0x0144, 0x0144, 0x0146, 0x0146, 0x0148,
0x0148, 0x0149, 0x014B, 0x014B, 0x014D, 0x014D, 0x014F, 0x014F,
0x0151, 0x0151, 0x0153, 0x0153, 0x0155, 0x0155, 0x0157, 0x0157,
0x0159, 0x0159, 0x015B, 0x015B, 0x015D, 0x015D, 0x015F, 0x015F,
0x0161, 0x0161, 0x0163, 0x0163, 0x0165, 0x0165, 0x0167, 0x0167,
0x0169, 0x0169, 0x016B, 0x016B, 0x016D, 0x016D, 0x016F, 0x016F,
0x0171, 0x0171, 0x0173, 0x0173, 0x0175, 0x0175, 0x0177, 0x0177,
0x00FF, 0x017A, 0x017A, 0x017C, 0x017C, 0x017E, 0x017E, 0x017F,
0x0180, 0x0253, 0x0183, 0x0183, 0x0185, 0x0185, 0x0254, 0x0188,
0x0188, 0x0256, 0x0257, 0x018C, 0x018C, 0x018D, 0x0258, 0x0259,
0x025B, 0x0192, 0x0192, 0x0260, 0x0263, 0x0195, 0x0269, 0x0268,
0x0199, 0x0199, 0x019A, 0x019B, 0x026F, 0x0272, 0x019E, 0x019F,
0x01A1, 0x01A1, 0x01A3, 0x01A3, 0x01A5, 0x01A5, 0x01A6, 0x01A8,
0x01A8, 0x0283, 0x01AA, 0x01AB, 0x01AD, 0x01AD, 0x0288, 0x01B0,
0x01B0, 0x028A, 0x028B, 0x01B4, 0x01B4, 0x01B6, 0x01B6, 0x0292,
0x01B9, 0x01B9, 0x01BA, 0x01BB, 0x01BD, 0x01BD, 0x01BE, 0x01BF,
0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x01C6, 0x01C6, 0x01C6, 0x01C9,
0x01C9, 0x01C9, 0x01CC, 0x01CC, 0x01CC, 0x01CE, 0x01CE, 0x01D0,
0x01D0, 0x01D2, 0x01D2, 0x01D4, 0x01D4, 0x01D6, 0x01D6, 0x01D8,
0x01D8, 0x01DA, 0x01DA, 0x01DC, 0x01DC, 0x01DD, 0x01DF, 0x01DF,
0x01E1, 0x01E1, 0x01E3, 0x01E3, 0x01E5, 0x01E5, 0x01E7, 0x01E7,
0x01E9, 0x01E9, 0x01EB, 0x01EB, 0x01ED, 0x01ED, 0x01EF, 0x01EF,
0x01F0, 0x01F3, 0x01F3, 0x01F3, 0x01F5, 0x01F5, 0x01F6, 0x01F7,
0x01F8, 0x01F9, 0x01FB, 0x01FB, 0x01FD, 0x01FD, 0x01FF, 0x01FF,
};
/* Lowercase mappings 0200 - 02FF */
static const WCHAR lblk02[256] = {
0x0201, 0x0201, 0x0203, 0x0203, 0x0205, 0x0205, 0x0207, 0x0207,
0x0209, 0x0209, 0x020B, 0x020B, 0x020D, 0x020D, 0x020F, 0x020F,
0x0211, 0x0211, 0x0213, 0x0213, 0x0215, 0x0215, 0x0217, 0x0217,
0x0218, 0x0219, 0x021A, 0x021B, 0x021C, 0x021D, 0x021E, 0x021F,
0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0226, 0x0227,
0x0228, 0x0229, 0x022A, 0x022B, 0x022C, 0x022D, 0x022E, 0x022F,
0x0230, 0x0231, 0x0232, 0x0233, 0x0234, 0x0235, 0x0236, 0x0237,
0x0238, 0x0239, 0x023A, 0x023B, 0x023C, 0x023D, 0x023E, 0x023F,
0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247,
0x0248, 0x0249, 0x024A, 0x024B, 0x024C, 0x024D, 0x024E, 0x024F,
0x0250, 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257,
0x0258, 0x0259, 0x025A, 0x025B, 0x025C, 0x025D, 0x025E, 0x025F,
0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266, 0x0267,
0x0268, 0x0269, 0x026A, 0x026B, 0x026C, 0x026D, 0x026E, 0x026F,
0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277,
0x0278, 0x0279, 0x027A, 0x027B, 0x027C, 0x027D, 0x027E, 0x027F,
0x0280, 0x0281, 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287,
0x0288, 0x0289, 0x028A, 0x028B, 0x028C, 0x028D, 0x028E, 0x028F,
0x0290, 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297,
0x0298, 0x0299, 0x029A, 0x029B, 0x029C, 0x029D, 0x029E, 0x029F,
0x02A0, 0x02A1, 0x02A2, 0x02A3, 0x02A4, 0x02A5, 0x02A6, 0x02A7,
0x02A8, 0x02A9, 0x02AA, 0x02AB, 0x02AC, 0x02AD, 0x02AE, 0x02AF,
0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6, 0x02B7,
0x02B8, 0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD, 0x02BE, 0x02BF,
0x02C0, 0x02C1, 0x02C2, 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C7,
0x02C8, 0x02C9, 0x02CA, 0x02CB, 0x02CC, 0x02CD, 0x02CE, 0x02CF,
0x02D0, 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5, 0x02D6, 0x02D7,
0x02D8, 0x02D9, 0x02DA, 0x02DB, 0x02DC, 0x02DD, 0x02DE, 0x02DF,
0x02E0, 0x02E1, 0x02E2, 0x02E3, 0x02E4, 0x02E5, 0x02E6, 0x02E7,
0x02E8, 0x02E9, 0x02EA, 0x02EB, 0x02EC, 0x02ED, 0x02EE, 0x02EF,
0x02F0, 0x02F1, 0x02F2, 0x02F3, 0x02F4, 0x02F5, 0x02F6, 0x02F7,
0x02F8, 0x02F9, 0x02FA, 0x02FB, 0x02FC, 0x02FD, 0x02FE, 0x02FF,
};
/* Lowercase mappings 0300 - 03FF */
static const WCHAR lblk03[256] = {
0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307,
0x0308, 0x0309, 0x030A, 0x030B, 0x030C, 0x030D, 0x030E, 0x030F,
0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,
0x0318, 0x0319, 0x031A, 0x031B, 0x031C, 0x031D, 0x031E, 0x031F,
0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327,
0x0328, 0x0329, 0x032A, 0x032B, 0x032C, 0x032D, 0x032E, 0x032F,
0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337,
0x0338, 0x0339, 0x033A, 0x033B, 0x033C, 0x033D, 0x033E, 0x033F,
0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, 0x0346, 0x0347,
0x0348, 0x0349, 0x034A, 0x034B, 0x034C, 0x034D, 0x034E, 0x034F,
0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357,
0x0358, 0x0359, 0x035A, 0x035B, 0x035C, 0x035D, 0x035E, 0x035F,
0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367,
0x0368, 0x0369, 0x036A, 0x036B, 0x036C, 0x036D, 0x036E, 0x036F,
0x0370, 0x0371, 0x0372, 0x0373, 0x0374, 0x0375, 0x0376, 0x0377,
0x0378, 0x0379, 0x037A, 0x037B, 0x037C, 0x037D, 0x037E, 0x037F,
0x0380, 0x0381, 0x0382, 0x0383, 0x0384, 0x0385, 0x03AC, 0x0387,
0x03AD, 0x03AE, 0x03AF, 0x038B, 0x03CC, 0x038D, 0x03CD, 0x03CE,
0x0390, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
0x03C0, 0x03C1, 0x03A2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x03CF,
0x03D0, 0x03D1, 0x03D2, 0x03D3, 0x03D4, 0x03D5, 0x03D6, 0x03D7,
0x03D8, 0x03D9, 0x03DA, 0x03DB, 0x03DC, 0x03DD, 0x03DE, 0x03DF,
0x03E0, 0x03E1, 0x03E3, 0x03E3, 0x03E5, 0x03E5, 0x03E7, 0x03E7,
0x03E9, 0x03E9, 0x03EB, 0x03EB, 0x03ED, 0x03ED, 0x03EF, 0x03EF,
0x03F0, 0x03F1, 0x03F2, 0x03F3, 0x03F4, 0x03F5, 0x03F6, 0x03F7,
0x03F8, 0x03F9, 0x03FA, 0x03FB, 0x03FC, 0x03FD, 0x03FE, 0x03FF,
};
/* Lowercase mappings 0400 - 04FF */
static const WCHAR lblk04[256] = {
0x0400, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x040D, 0x045E, 0x045F,
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x045D, 0x045E, 0x045F,
0x0461, 0x0461, 0x0463, 0x0463, 0x0465, 0x0465, 0x0467, 0x0467,
0x0469, 0x0469, 0x046B, 0x046B, 0x046D, 0x046D, 0x046F, 0x046F,
0x0471, 0x0471, 0x0473, 0x0473, 0x0475, 0x0475, 0x0477, 0x0477,
0x0479, 0x0479, 0x047B, 0x047B, 0x047D, 0x047D, 0x047F, 0x047F,
0x0481, 0x0481, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487,
0x0488, 0x0489, 0x048A, 0x048B, 0x048C, 0x048D, 0x048E, 0x048F,
0x0491, 0x0491, 0x0493, 0x0493, 0x0495, 0x0495, 0x0497, 0x0497,
0x0499, 0x0499, 0x049B, 0x049B, 0x049D, 0x049D, 0x049F, 0x049F,
0x04A1, 0x04A1, 0x04A3, 0x04A3, 0x04A5, 0x04A5, 0x04A7, 0x04A7,
0x04A9, 0x04A9, 0x04AB, 0x04AB, 0x04AD, 0x04AD, 0x04AF, 0x04AF,
0x04B1, 0x04B1, 0x04B3, 0x04B3, 0x04B5, 0x04B5, 0x04B7, 0x04B7,
0x04B9, 0x04B9, 0x04BB, 0x04BB, 0x04BD, 0x04BD, 0x04BF, 0x04BF,
0x04C0, 0x04C2, 0x04C2, 0x04C4, 0x04C4, 0x04C5, 0x04C6, 0x04C8,
0x04C8, 0x04C9, 0x04CA, 0x04CC, 0x04CC, 0x04CD, 0x04CE, 0x04CF,
0x04D1, 0x04D1, 0x04D3, 0x04D3, 0x04D5, 0x04D5, 0x04D7, 0x04D7,
0x04D9, 0x04D9, 0x04DB, 0x04DB, 0x04DD, 0x04DD, 0x04DF, 0x04DF,
0x04E1, 0x04E1, 0x04E3, 0x04E3, 0x04E5, 0x04E5, 0x04E7, 0x04E7,
0x04E9, 0x04E9, 0x04EB, 0x04EB, 0x04EC, 0x04ED, 0x04EF, 0x04EF,
0x04F1, 0x04F1, 0x04F3, 0x04F3, 0x04F5, 0x04F5, 0x04F6, 0x04F7,
0x04F9, 0x04F9, 0x04FA, 0x04FB, 0x04FC, 0x04FD, 0x04FE, 0x04FF,
};
/* Lowercase mappings 0500 - 05FF */
static const WCHAR lblk05[256] = {
0x0500, 0x0501, 0x0502, 0x0503, 0x0504, 0x0505, 0x0506, 0x0507,
0x0508, 0x0509, 0x050A, 0x050B, 0x050C, 0x050D, 0x050E, 0x050F,
0x0510, 0x0511, 0x0512, 0x0513, 0x0514, 0x0515, 0x0516, 0x0517,
0x0518, 0x0519, 0x051A, 0x051B, 0x051C, 0x051D, 0x051E, 0x051F,
0x0520, 0x0521, 0x0522, 0x0523, 0x0524, 0x0525, 0x0526, 0x0527,
0x0528, 0x0529, 0x052A, 0x052B, 0x052C, 0x052D, 0x052E, 0x052F,
0x0530, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 0x0566, 0x0567,
0x0568, 0x0569, 0x056A, 0x056B, 0x056C, 0x056D, 0x056E, 0x056F,
0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577,
0x0578, 0x0579, 0x057A, 0x057B, 0x057C, 0x057D, 0x057E, 0x057F,
0x0580, 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0557,
0x0558, 0x0559, 0x055A, 0x055B, 0x055C, 0x055D, 0x055E, 0x055F,
0x0560, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 0x0566, 0x0567,
0x0568, 0x0569, 0x056A, 0x056B, 0x056C, 0x056D, 0x056E, 0x056F,
0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577,
0x0578, 0x0579, 0x057A, 0x057B, 0x057C, 0x057D, 0x057E, 0x057F,
0x0580, 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0587,
0x0588, 0x0589, 0x058A, 0x058B, 0x058C, 0x058D, 0x058E, 0x058F,
0x0590, 0x0591, 0x0592, 0x0593, 0x0594, 0x0595, 0x0596, 0x0597,
0x0598, 0x0599, 0x059A, 0x059B, 0x059C, 0x059D, 0x059E, 0x059F,
0x05A0, 0x05A1, 0x05A2, 0x05A3, 0x05A4, 0x05A5, 0x05A6, 0x05A7,
0x05A8, 0x05A9, 0x05AA, 0x05AB, 0x05AC, 0x05AD, 0x05AE, 0x05AF,
0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7,
0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF,
0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05C4, 0x05C5, 0x05C6, 0x05C7,
0x05C8, 0x05C9, 0x05CA, 0x05CB, 0x05CC, 0x05CD, 0x05CE, 0x05CF,
0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
0x05E8, 0x05E9, 0x05EA, 0x05EB, 0x05EC, 0x05ED, 0x05EE, 0x05EF,
0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0x05F5, 0x05F6, 0x05F7,
0x05F8, 0x05F9, 0x05FA, 0x05FB, 0x05FC, 0x05FD, 0x05FE, 0x05FF,
};
/* Lowercase mappings 1000 - 10FF */
static const WCHAR lblk10[256] = {
0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006, 0x1007,
0x1008, 0x1009, 0x100A, 0x100B, 0x100C, 0x100D, 0x100E, 0x100F,
0x1010, 0x1011, 0x1012, 0x1013, 0x1014, 0x1015, 0x1016, 0x1017,
0x1018, 0x1019, 0x101A, 0x101B, 0x101C, 0x101D, 0x101E, 0x101F,
0x1020, 0x1021, 0x1022, 0x1023, 0x1024, 0x1025, 0x1026, 0x1027,
0x1028, 0x1029, 0x102A, 0x102B, 0x102C, 0x102D, 0x102E, 0x102F,
0x1030, 0x1031, 0x1032, 0x1033, 0x1034, 0x1035, 0x1036, 0x1037,
0x1038, 0x1039, 0x103A, 0x103B, 0x103C, 0x103D, 0x103E, 0x103F,
0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047,
0x1048, 0x1049, 0x104A, 0x104B, 0x104C, 0x104D, 0x104E, 0x104F,
0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057,
0x1058, 0x1059, 0x105A, 0x105B, 0x105C, 0x105D, 0x105E, 0x105F,
0x1060, 0x1061, 0x1062, 0x1063, 0x1064, 0x1065, 0x1066, 0x1067,
0x1068, 0x1069, 0x106A, 0x106B, 0x106C, 0x106D, 0x106E, 0x106F,
0x1070, 0x1071, 0x1072, 0x1073, 0x1074, 0x1075, 0x1076, 0x1077,
0x1078, 0x1079, 0x107A, 0x107B, 0x107C, 0x107D, 0x107E, 0x107F,
0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086, 0x1087,
0x1088, 0x1089, 0x108A, 0x108B, 0x108C, 0x108D, 0x108E, 0x108F,
0x1090, 0x1091, 0x1092, 0x1093, 0x1094, 0x1095, 0x1096, 0x1097,
0x1098, 0x1099, 0x109A, 0x109B, 0x109C, 0x109D, 0x109E, 0x109F,
0x10D0, 0x10D1, 0x10D2, 0x10D3, 0x10D4, 0x10D5, 0x10D6, 0x10D7,
0x10D8, 0x10D9, 0x10DA, 0x10DB, 0x10DC, 0x10DD, 0x10DE, 0x10DF,
0x10E0, 0x10E1, 0x10E2, 0x10E3, 0x10E4, 0x10E5, 0x10E6, 0x10E7,
0x10E8, 0x10E9, 0x10EA, 0x10EB, 0x10EC, 0x10ED, 0x10EE, 0x10EF,
0x10F0, 0x10F1, 0x10F2, 0x10F3, 0x10F4, 0x10F5, 0x10C6, 0x10C7,
0x10C8, 0x10C9, 0x10CA, 0x10CB, 0x10CC, 0x10CD, 0x10CE, 0x10CF,
0x10D0, 0x10D1, 0x10D2, 0x10D3, 0x10D4, 0x10D5, 0x10D6, 0x10D7,
0x10D8, 0x10D9, 0x10DA, 0x10DB, 0x10DC, 0x10DD, 0x10DE, 0x10DF,
0x10E0, 0x10E1, 0x10E2, 0x10E3, 0x10E4, 0x10E5, 0x10E6, 0x10E7,
0x10E8, 0x10E9, 0x10EA, 0x10EB, 0x10EC, 0x10ED, 0x10EE, 0x10EF,
0x10F0, 0x10F1, 0x10F2, 0x10F3, 0x10F4, 0x10F5, 0x10F6, 0x10F7,
0x10F8, 0x10F9, 0x10FA, 0x10FB, 0x10FC, 0x10FD, 0x10FE, 0x10FF,
};
/* Lowercase mappings 1E00 - 1EFF */
static const WCHAR lblk1E[256] = {
0x1E01, 0x1E01, 0x1E03, 0x1E03, 0x1E05, 0x1E05, 0x1E07, 0x1E07,
0x1E09, 0x1E09, 0x1E0B, 0x1E0B, 0x1E0D, 0x1E0D, 0x1E0F, 0x1E0F,
0x1E11, 0x1E11, 0x1E13, 0x1E13, 0x1E15, 0x1E15, 0x1E17, 0x1E17,
0x1E19, 0x1E19, 0x1E1B, 0x1E1B, 0x1E1D, 0x1E1D, 0x1E1F, 0x1E1F,
0x1E21, 0x1E21, 0x1E23, 0x1E23, 0x1E25, 0x1E25, 0x1E27, 0x1E27,
0x1E29, 0x1E29, 0x1E2B, 0x1E2B, 0x1E2D, 0x1E2D, 0x1E2F, 0x1E2F,
0x1E31, 0x1E31, 0x1E33, 0x1E33, 0x1E35, 0x1E35, 0x1E37, 0x1E37,
0x1E39, 0x1E39, 0x1E3B, 0x1E3B, 0x1E3D, 0x1E3D, 0x1E3F, 0x1E3F,
0x1E41, 0x1E41, 0x1E43, 0x1E43, 0x1E45, 0x1E45, 0x1E47, 0x1E47,
0x1E49, 0x1E49, 0x1E4B, 0x1E4B, 0x1E4D, 0x1E4D, 0x1E4F, 0x1E4F,
0x1E51, 0x1E51, 0x1E53, 0x1E53, 0x1E55, 0x1E55, 0x1E57, 0x1E57,
0x1E59, 0x1E59, 0x1E5B, 0x1E5B, 0x1E5D, 0x1E5D, 0x1E5F, 0x1E5F,
0x1E61, 0x1E61, 0x1E63, 0x1E63, 0x1E65, 0x1E65, 0x1E67, 0x1E67,
0x1E69, 0x1E69, 0x1E6B, 0x1E6B, 0x1E6D, 0x1E6D, 0x1E6F, 0x1E6F,
0x1E71, 0x1E71, 0x1E73, 0x1E73, 0x1E75, 0x1E75, 0x1E77, 0x1E77,
0x1E79, 0x1E79, 0x1E7B, 0x1E7B, 0x1E7D, 0x1E7D, 0x1E7F, 0x1E7F,
0x1E81, 0x1E81, 0x1E83, 0x1E83, 0x1E85, 0x1E85, 0x1E87, 0x1E87,
0x1E89, 0x1E89, 0x1E8B, 0x1E8B, 0x1E8D, 0x1E8D, 0x1E8F, 0x1E8F,
0x1E91, 0x1E91, 0x1E93, 0x1E93, 0x1E95, 0x1E95, 0x1E96, 0x1E97,
0x1E98, 0x1E99, 0x1E9A, 0x1E9B, 0x1E9C, 0x1E9D, 0x1E9E, 0x1E9F,
0x1EA1, 0x1EA1, 0x1EA3, 0x1EA3, 0x1EA5, 0x1EA5, 0x1EA7, 0x1EA7,
0x1EA9, 0x1EA9, 0x1EAB, 0x1EAB, 0x1EAD, 0x1EAD, 0x1EAF, 0x1EAF,
0x1EB1, 0x1EB1, 0x1EB3, 0x1EB3, 0x1EB5, 0x1EB5, 0x1EB7, 0x1EB7,
0x1EB9, 0x1EB9, 0x1EBB, 0x1EBB, 0x1EBD, 0x1EBD, 0x1EBF, 0x1EBF,
0x1EC1, 0x1EC1, 0x1EC3, 0x1EC3, 0x1EC5, 0x1EC5, 0x1EC7, 0x1EC7,
0x1EC9, 0x1EC9, 0x1ECB, 0x1ECB, 0x1ECD, 0x1ECD, 0x1ECF, 0x1ECF,
0x1ED1, 0x1ED1, 0x1ED3, 0x1ED3, 0x1ED5, 0x1ED5, 0x1ED7, 0x1ED7,
0x1ED9, 0x1ED9, 0x1EDB, 0x1EDB, 0x1EDD, 0x1EDD, 0x1EDF, 0x1EDF,
0x1EE1, 0x1EE1, 0x1EE3, 0x1EE3, 0x1EE5, 0x1EE5, 0x1EE7, 0x1EE7,
0x1EE9, 0x1EE9, 0x1EEB, 0x1EEB, 0x1EED, 0x1EED, 0x1EEF, 0x1EEF,
0x1EF1, 0x1EF1, 0x1EF3, 0x1EF3, 0x1EF5, 0x1EF5, 0x1EF7, 0x1EF7,
0x1EF9, 0x1EF9, 0x1EFA, 0x1EFB, 0x1EFC, 0x1EFD, 0x1EFE, 0x1EFF,
};
/* Lowercase mappings 1F00 - 1FFF */
static const WCHAR lblk1F[256] = {
0x1F00, 0x1F01, 0x1F02, 0x1F03, 0x1F04, 0x1F05, 0x1F06, 0x1F07,
0x1F00, 0x1F01, 0x1F02, 0x1F03, 0x1F04, 0x1F05, 0x1F06, 0x1F07,
0x1F10, 0x1F11, 0x1F12, 0x1F13, 0x1F14, 0x1F15, 0x1F16, 0x1F17,
0x1F10, 0x1F11, 0x1F12, 0x1F13, 0x1F14, 0x1F15, 0x1F1E, 0x1F1F,
0x1F20, 0x1F21, 0x1F22, 0x1F23, 0x1F24, 0x1F25, 0x1F26, 0x1F27,
0x1F20, 0x1F21, 0x1F22, 0x1F23, 0x1F24, 0x1F25, 0x1F26, 0x1F27,
0x1F30, 0x1F31, 0x1F32, 0x1F33, 0x1F34, 0x1F35, 0x1F36, 0x1F37,
0x1F30, 0x1F31, 0x1F32, 0x1F33, 0x1F34, 0x1F35, 0x1F36, 0x1F37,
0x1F40, 0x1F41, 0x1F42, 0x1F43, 0x1F44, 0x1F45, 0x1F46, 0x1F47,
0x1F40, 0x1F41, 0x1F42, 0x1F43, 0x1F44, 0x1F45, 0x1F4E, 0x1F4F,
0x1F50, 0x1F51, 0x1F52, 0x1F53, 0x1F54, 0x1F55, 0x1F56, 0x1F57,
0x1F58, 0x1F51, 0x1F5A, 0x1F53, 0x1F5C, 0x1F55, 0x1F5E, 0x1F57,
0x1F60, 0x1F61, 0x1F62, 0x1F63, 0x1F64, 0x1F65, 0x1F66, 0x1F67,
0x1F60, 0x1F61, 0x1F62, 0x1F63, 0x1F64, 0x1F65, 0x1F66, 0x1F67,
0x1F70, 0x1F71, 0x1F72, 0x1F73, 0x1F74, 0x1F75, 0x1F76, 0x1F77,
0x1F78, 0x1F79, 0x1F7A, 0x1F7B, 0x1F7C, 0x1F7D, 0x1F7E, 0x1F7F,
0x1F80, 0x1F81, 0x1F82, 0x1F83, 0x1F84, 0x1F85, 0x1F86, 0x1F87,
0x1F80, 0x1F81, 0x1F82, 0x1F83, 0x1F84, 0x1F85, 0x1F86, 0x1F87,
0x1F90, 0x1F91, 0x1F92, 0x1F93, 0x1F94, 0x1F95, 0x1F96, 0x1F97,
0x1F90, 0x1F91, 0x1F92, 0x1F93, 0x1F94, 0x1F95, 0x1F96, 0x1F97,
0x1FA0, 0x1FA1, 0x1FA2, 0x1FA3, 0x1FA4, 0x1FA5, 0x1FA6, 0x1FA7,
0x1FA0, 0x1FA1, 0x1FA2, 0x1FA3, 0x1FA4, 0x1FA5, 0x1FA6, 0x1FA7,
0x1FB0, 0x1FB1, 0x1FB2, 0x1FB3, 0x1FB4, 0x1FB5, 0x1FB6, 0x1FB7,
0x1FB0, 0x1FB1, 0x1F70, 0x1F71, 0x1FB3, 0x1FBD, 0x1FBE, 0x1FBF,
0x1FC0, 0x1FC1, 0x1FC2, 0x1FC3, 0x1FC4, 0x1FC5, 0x1FC6, 0x1FC7,
0x1F72, 0x1F73, 0x1F74, 0x1F75, 0x1FC3, 0x1FCD, 0x1FCE, 0x1FCF,
0x1FD0, 0x1FD1, 0x1FD2, 0x1FD3, 0x1FD4, 0x1FD5, 0x1FD6, 0x1FD7,
0x1FD0, 0x1FD1, 0x1F76, 0x1F77, 0x1FDC, 0x1FDD, 0x1FDE, 0x1FDF,
0x1FE0, 0x1FE1, 0x1FE2, 0x1FE3, 0x1FE4, 0x1FE5, 0x1FE6, 0x1FE7,
0x1FE0, 0x1FE1, 0x1F7A, 0x1F7B, 0x1FE5, 0x1FED, 0x1FEE, 0x1FEF,
0x1FF0, 0x1FF1, 0x1FF2, 0x1FF3, 0x1FF4, 0x1FF5, 0x1FF6, 0x1FF7,
0x1F78, 0x1F79, 0x1F7C, 0x1F7D, 0x1FF3, 0x1FFD, 0x1FFE, 0x1FFF,
};
/* Lowercase mappings 2100 - 21FF */
static const WCHAR lblk21[256] = {
0x2100, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107,
0x2108, 0x2109, 0x210A, 0x210B, 0x210C, 0x210D, 0x210E, 0x210F,
0x2110, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117,
0x2118, 0x2119, 0x211A, 0x211B, 0x211C, 0x211D, 0x211E, 0x211F,
0x2120, 0x2121, 0x2122, 0x2123, 0x2124, 0x2125, 0x2126, 0x2127,
0x2128, 0x2129, 0x212A, 0x212B, 0x212C, 0x212D, 0x212E, 0x212F,
0x2130, 0x2131, 0x2132, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137,
0x2138, 0x2139, 0x213A, 0x213B, 0x213C, 0x213D, 0x213E, 0x213F,
0x2140, 0x2141, 0x2142, 0x2143, 0x2144, 0x2145, 0x2146, 0x2147,
0x2148, 0x2149, 0x214A, 0x214B, 0x214C, 0x214D, 0x214E, 0x214F,
0x2150, 0x2151, 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157,
0x2158, 0x2159, 0x215A, 0x215B, 0x215C, 0x215D, 0x215E, 0x215F,
0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F,
0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F,
0x2180, 0x2181, 0x2182, 0x2183, 0x2184, 0x2185, 0x2186, 0x2187,
0x2188, 0x2189, 0x218A, 0x218B, 0x218C, 0x218D, 0x218E, 0x218F,
0x2190, 0x2191, 0x2192, 0x2193, 0x2194, 0x2195, 0x2196, 0x2197,
0x2198, 0x2199, 0x219A, 0x219B, 0x219C, 0x219D, 0x219E, 0x219F,
0x21A0, 0x21A1, 0x21A2, 0x21A3, 0x21A4, 0x21A5, 0x21A6, 0x21A7,
0x21A8, 0x21A9, 0x21AA, 0x21AB, 0x21AC, 0x21AD, 0x21AE, 0x21AF,
0x21B0, 0x21B1, 0x21B2, 0x21B3, 0x21B4, 0x21B5, 0x21B6, 0x21B7,
0x21B8, 0x21B9, 0x21BA, 0x21BB, 0x21BC, 0x21BD, 0x21BE, 0x21BF,
0x21C0, 0x21C1, 0x21C2, 0x21C3, 0x21C4, 0x21C5, 0x21C6, 0x21C7,
0x21C8, 0x21C9, 0x21CA, 0x21CB, 0x21CC, 0x21CD, 0x21CE, 0x21CF,
0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x21D4, 0x21D5, 0x21D6, 0x21D7,
0x21D8, 0x21D9, 0x21DA, 0x21DB, 0x21DC, 0x21DD, 0x21DE, 0x21DF,
0x21E0, 0x21E1, 0x21E2, 0x21E3, 0x21E4, 0x21E5, 0x21E6, 0x21E7,
0x21E8, 0x21E9, 0x21EA, 0x21EB, 0x21EC, 0x21ED, 0x21EE, 0x21EF,
0x21F0, 0x21F1, 0x21F2, 0x21F3, 0x21F4, 0x21F5, 0x21F6, 0x21F7,
0x21F8, 0x21F9, 0x21FA, 0x21FB, 0x21FC, 0x21FD, 0x21FE, 0x21FF,
};
/* Lowercase mappings 2400 - 24FF */
static const WCHAR lblk24[256] = {
0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407,
0x2408, 0x2409, 0x240A, 0x240B, 0x240C, 0x240D, 0x240E, 0x240F,
0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417,
0x2418, 0x2419, 0x241A, 0x241B, 0x241C, 0x241D, 0x241E, 0x241F,
0x2420, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427,
0x2428, 0x2429, 0x242A, 0x242B, 0x242C, 0x242D, 0x242E, 0x242F,
0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437,
0x2438, 0x2439, 0x243A, 0x243B, 0x243C, 0x243D, 0x243E, 0x243F,
0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447,
0x2448, 0x2449, 0x244A, 0x244B, 0x244C, 0x244D, 0x244E, 0x244F,
0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457,
0x2458, 0x2459, 0x245A, 0x245B, 0x245C, 0x245D, 0x245E, 0x245F,
0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E, 0x246F,
0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477,
0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F,
0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F,
0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
0x2498, 0x2499, 0x249A, 0x249B, 0x249C, 0x249D, 0x249E, 0x249F,
0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7,
0x24A8, 0x24A9, 0x24AA, 0x24AB, 0x24AC, 0x24AD, 0x24AE, 0x24AF,
0x24B0, 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x24D0, 0x24D1,
0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9,
0x24DA, 0x24DB, 0x24DC, 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1,
0x24E2, 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7, 0x24E8, 0x24E9,
0x24D0, 0x24D1, 0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6, 0x24D7,
0x24D8, 0x24D9, 0x24DA, 0x24DB, 0x24DC, 0x24DD, 0x24DE, 0x24DF,
0x24E0, 0x24E1, 0x24E2, 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7,
0x24E8, 0x24E9, 0x24EA, 0x24EB, 0x24EC, 0x24ED, 0x24EE, 0x24EF,
0x24F0, 0x24F1, 0x24F2, 0x24F3, 0x24F4, 0x24F5, 0x24F6, 0x24F7,
0x24F8, 0x24F9, 0x24FA, 0x24FB, 0x24FC, 0x24FD, 0x24FE, 0x24FF,
};
/* Lowercase mappings FF00 - FFFF */
static const WCHAR lblkFF[256] = {
0xFF00, 0xFF01, 0xFF02, 0xFF03, 0xFF04, 0xFF05, 0xFF06, 0xFF07,
0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F,
0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17,
0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F,
0xFF20, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
0xFF58, 0xFF59, 0xFF5A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F,
0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFF5E, 0xFF5F,
0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67,
0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F,
0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77,
0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F,
0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87,
0xFF88, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F,
0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97,
0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F,
0xFFA0, 0xFFA1, 0xFFA2, 0xFFA3, 0xFFA4, 0xFFA5, 0xFFA6, 0xFFA7,
0xFFA8, 0xFFA9, 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, 0xFFAE, 0xFFAF,
0xFFB0, 0xFFB1, 0xFFB2, 0xFFB3, 0xFFB4, 0xFFB5, 0xFFB6, 0xFFB7,
0xFFB8, 0xFFB9, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBD, 0xFFBE, 0xFFBF,
0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC6, 0xFFC7,
0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF,
0xFFD0, 0xFFD1, 0xFFD2, 0xFFD3, 0xFFD4, 0xFFD5, 0xFFD6, 0xFFD7,
0xFFD8, 0xFFD9, 0xFFDA, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFDE, 0xFFDF,
0xFFE0, 0xFFE1, 0xFFE2, 0xFFE3, 0xFFE4, 0xFFE5, 0xFFE6, 0xFFE7,
0xFFE8, 0xFFE9, 0xFFEA, 0xFFEB, 0xFFEC, 0xFFED, 0xFFEE, 0xFFEF,
0xFFF0, 0xFFF1, 0xFFF2, 0xFFF3, 0xFFF4, 0xFFF5, 0xFFF6, 0xFFF7,
0xFFF8, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF,
};
static const WCHAR * const lwrtable[256] = {
lblk00, lblk01, lblk02, lblk03, lblk04, lblk05, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
lblk10, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, lblk1E, lblk1F,
000000, lblk21, 000000, 000000, lblk24, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, lblkFF,
};
/* Uppercase mappings 0000 - 00FF */
static const WCHAR ublk00[256] = {
0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
0x0060, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
0x0058, 0x0059, 0x005A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00F7,
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x0178,
};
/* Uppercase mappings 0100 - 01FF */
static const WCHAR ublk01[256] = {
0x0100, 0x0100, 0x0102, 0x0102, 0x0104, 0x0104, 0x0106, 0x0106,
0x0108, 0x0108, 0x010A, 0x010A, 0x010C, 0x010C, 0x010E, 0x010E,
0x0110, 0x0110, 0x0112, 0x0112, 0x0114, 0x0114, 0x0116, 0x0116,
0x0118, 0x0118, 0x011A, 0x011A, 0x011C, 0x011C, 0x011E, 0x011E,
0x0120, 0x0120, 0x0122, 0x0122, 0x0124, 0x0124, 0x0126, 0x0126,
0x0128, 0x0128, 0x012A, 0x012A, 0x012C, 0x012C, 0x012E, 0x012E,
0x0130, 0x0049, 0x0132, 0x0132, 0x0134, 0x0134, 0x0136, 0x0136,
0x0138, 0x0139, 0x0139, 0x013B, 0x013B, 0x013D, 0x013D, 0x013F,
0x013F, 0x0141, 0x0141, 0x0143, 0x0143, 0x0145, 0x0145, 0x0147,
0x0147, 0x0149, 0x014A, 0x014A, 0x014C, 0x014C, 0x014E, 0x014E,
0x0150, 0x0150, 0x0152, 0x0152, 0x0154, 0x0154, 0x0156, 0x0156,
0x0158, 0x0158, 0x015A, 0x015A, 0x015C, 0x015C, 0x015E, 0x015E,
0x0160, 0x0160, 0x0162, 0x0162, 0x0164, 0x0164, 0x0166, 0x0166,
0x0168, 0x0168, 0x016A, 0x016A, 0x016C, 0x016C, 0x016E, 0x016E,
0x0170, 0x0170, 0x0172, 0x0172, 0x0174, 0x0174, 0x0176, 0x0176,
0x0178, 0x0179, 0x0179, 0x017B, 0x017B, 0x017D, 0x017D, 0x0053,
0x0180, 0x0181, 0x0182, 0x0182, 0x0184, 0x0184, 0x0186, 0x0187,
0x0187, 0x0189, 0x018A, 0x018B, 0x018B, 0x018D, 0x018E, 0x018F,
0x0190, 0x0191, 0x0191, 0x0193, 0x0194, 0x0195, 0x0196, 0x0197,
0x0198, 0x0198, 0x019A, 0x019B, 0x019C, 0x019D, 0x019E, 0x019F,
0x01A0, 0x01A0, 0x01A2, 0x01A2, 0x01A4, 0x01A4, 0x01A6, 0x01A7,
0x01A7, 0x01A9, 0x01AA, 0x01AB, 0x01AC, 0x01AC, 0x01AE, 0x01AF,
0x01AF, 0x01B1, 0x01B2, 0x01B3, 0x01B3, 0x01B5, 0x01B5, 0x01B7,
0x01B8, 0x01B8, 0x01BA, 0x01BB, 0x01BC, 0x01BC, 0x01BE, 0x01BF,
0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x01C4, 0x01C4, 0x01C4, 0x01C7,
0x01C7, 0x01C7, 0x01CA, 0x01CA, 0x01CA, 0x01CD, 0x01CD, 0x01CF,
0x01CF, 0x01D1, 0x01D1, 0x01D3, 0x01D3, 0x01D5, 0x01D5, 0x01D7,
0x01D7, 0x01D9, 0x01D9, 0x01DB, 0x01DB, 0x01DD, 0x01DE, 0x01DE,
0x01E0, 0x01E0, 0x01E2, 0x01E2, 0x01E4, 0x01E4, 0x01E6, 0x01E6,
0x01E8, 0x01E8, 0x01EA, 0x01EA, 0x01EC, 0x01EC, 0x01EE, 0x01EE,
0x01F0, 0x01F1, 0x01F1, 0x01F1, 0x01F4, 0x01F4, 0x01F6, 0x01F7,
0x01F8, 0x01F9, 0x01FA, 0x01FA, 0x01FC, 0x01FC, 0x01FE, 0x01FE,
};
/* Uppercase mappings 0200 - 02FF */
static const WCHAR ublk02[256] = {
0x0200, 0x0200, 0x0202, 0x0202, 0x0204, 0x0204, 0x0206, 0x0206,
0x0208, 0x0208, 0x020A, 0x020A, 0x020C, 0x020C, 0x020E, 0x020E,
0x0210, 0x0210, 0x0212, 0x0212, 0x0214, 0x0214, 0x0216, 0x0216,
0x0218, 0x0219, 0x021A, 0x021B, 0x021C, 0x021D, 0x021E, 0x021F,
0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0226, 0x0227,
0x0228, 0x0229, 0x022A, 0x022B, 0x022C, 0x022D, 0x022E, 0x022F,
0x0230, 0x0231, 0x0232, 0x0233, 0x0234, 0x0235, 0x0236, 0x0237,
0x0238, 0x0239, 0x023A, 0x023B, 0x023C, 0x023D, 0x023E, 0x023F,
0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247,
0x0248, 0x0249, 0x024A, 0x024B, 0x024C, 0x024D, 0x024E, 0x024F,
0x0250, 0x0251, 0x0252, 0x0181, 0x0186, 0x0255, 0x0189, 0x018A,
0x018E, 0x018F, 0x025A, 0x0190, 0x025C, 0x025D, 0x025E, 0x025F,
0x0193, 0x0261, 0x0262, 0x0194, 0x0264, 0x0265, 0x0266, 0x0267,
0x0197, 0x0196, 0x026A, 0x026B, 0x026C, 0x026D, 0x026E, 0x019C,
0x0270, 0x0271, 0x019D, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277,
0x0278, 0x0279, 0x027A, 0x027B, 0x027C, 0x027D, 0x027E, 0x027F,
0x0280, 0x0281, 0x0282, 0x01A9, 0x0284, 0x0285, 0x0286, 0x0287,
0x01AE, 0x0289, 0x01B1, 0x01B2, 0x028C, 0x028D, 0x028E, 0x028F,
0x0290, 0x0291, 0x01B7, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297,
0x0298, 0x0299, 0x029A, 0x029B, 0x029C, 0x029D, 0x029E, 0x029F,
0x02A0, 0x02A1, 0x02A2, 0x02A3, 0x02A4, 0x02A5, 0x02A6, 0x02A7,
0x02A8, 0x02A9, 0x02AA, 0x02AB, 0x02AC, 0x02AD, 0x02AE, 0x02AF,
0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6, 0x02B7,
0x02B8, 0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD, 0x02BE, 0x02BF,
0x02C0, 0x02C1, 0x02C2, 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C7,
0x02C8, 0x02C9, 0x02CA, 0x02CB, 0x02CC, 0x02CD, 0x02CE, 0x02CF,
0x02D0, 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5, 0x02D6, 0x02D7,
0x02D8, 0x02D9, 0x02DA, 0x02DB, 0x02DC, 0x02DD, 0x02DE, 0x02DF,
0x02E0, 0x02E1, 0x02E2, 0x02E3, 0x02E4, 0x02E5, 0x02E6, 0x02E7,
0x02E8, 0x02E9, 0x02EA, 0x02EB, 0x02EC, 0x02ED, 0x02EE, 0x02EF,
0x02F0, 0x02F1, 0x02F2, 0x02F3, 0x02F4, 0x02F5, 0x02F6, 0x02F7,
0x02F8, 0x02F9, 0x02FA, 0x02FB, 0x02FC, 0x02FD, 0x02FE, 0x02FF,
};
/* Uppercase mappings 0300 - 03FF */
static const WCHAR ublk03[256] = {
0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307,
0x0308, 0x0309, 0x030A, 0x030B, 0x030C, 0x030D, 0x030E, 0x030F,
0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,
0x0318, 0x0319, 0x031A, 0x031B, 0x031C, 0x031D, 0x031E, 0x031F,
0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327,
0x0328, 0x0329, 0x032A, 0x032B, 0x032C, 0x032D, 0x032E, 0x032F,
0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337,
0x0338, 0x0339, 0x033A, 0x033B, 0x033C, 0x033D, 0x033E, 0x033F,
0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, 0x0346, 0x0347,
0x0348, 0x0349, 0x034A, 0x034B, 0x034C, 0x034D, 0x034E, 0x034F,
0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357,
0x0358, 0x0359, 0x035A, 0x035B, 0x035C, 0x035D, 0x035E, 0x035F,
0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367,
0x0368, 0x0369, 0x036A, 0x036B, 0x036C, 0x036D, 0x036E, 0x036F,
0x0370, 0x0371, 0x0372, 0x0373, 0x0374, 0x0375, 0x0376, 0x0377,
0x0378, 0x0379, 0x037A, 0x037B, 0x037C, 0x037D, 0x037E, 0x037F,
0x0380, 0x0381, 0x0382, 0x0383, 0x0384, 0x0385, 0x0386, 0x0387,
0x0388, 0x0389, 0x038A, 0x038B, 0x038C, 0x038D, 0x038E, 0x038F,
0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
0x03A0, 0x03A1, 0x03A2, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x0386, 0x0388, 0x0389, 0x038A,
0x03B0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
0x03A0, 0x03A1, 0x03C2, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x038C, 0x038E, 0x038F, 0x03CF,
0x0392, 0x0398, 0x03D2, 0x03D3, 0x03D4, 0x03A6, 0x03A0, 0x03D7,
0x03D8, 0x03D9, 0x03DA, 0x03DB, 0x03DC, 0x03DD, 0x03DE, 0x03DF,
0x03E0, 0x03E1, 0x03E2, 0x03E2, 0x03E4, 0x03E4, 0x03E6, 0x03E6,
0x03E8, 0x03E8, 0x03EA, 0x03EA, 0x03EC, 0x03EC, 0x03EE, 0x03EE,
0x039A, 0x03A1, 0x03F2, 0x03F3, 0x03F4, 0x03F5, 0x03F6, 0x03F7,
0x03F8, 0x03F9, 0x03FA, 0x03FB, 0x03FC, 0x03FD, 0x03FE, 0x03FF,
};
/* Uppercase mappings 0400 - 04FF */
static const WCHAR ublk04[256] = {
0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x040D, 0x040E, 0x040F,
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
0x0450, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x045D, 0x040E, 0x040F,
0x0460, 0x0460, 0x0462, 0x0462, 0x0464, 0x0464, 0x0466, 0x0466,
0x0468, 0x0468, 0x046A, 0x046A, 0x046C, 0x046C, 0x046E, 0x046E,
0x0470, 0x0470, 0x0472, 0x0472, 0x0474, 0x0474, 0x0476, 0x0476,
0x0478, 0x0478, 0x047A, 0x047A, 0x047C, 0x047C, 0x047E, 0x047E,
0x0480, 0x0480, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487,
0x0488, 0x0489, 0x048A, 0x048B, 0x048C, 0x048D, 0x048E, 0x048F,
0x0490, 0x0490, 0x0492, 0x0492, 0x0494, 0x0494, 0x0496, 0x0496,
0x0498, 0x0498, 0x049A, 0x049A, 0x049C, 0x049C, 0x049E, 0x049E,
0x04A0, 0x04A0, 0x04A2, 0x04A2, 0x04A4, 0x04A4, 0x04A6, 0x04A6,
0x04A8, 0x04A8, 0x04AA, 0x04AA, 0x04AC, 0x04AC, 0x04AE, 0x04AE,
0x04B0, 0x04B0, 0x04B2, 0x04B2, 0x04B4, 0x04B4, 0x04B6, 0x04B6,
0x04B8, 0x04B8, 0x04BA, 0x04BA, 0x04BC, 0x04BC, 0x04BE, 0x04BE,
0x04C0, 0x04C1, 0x04C1, 0x04C3, 0x04C3, 0x04C5, 0x04C6, 0x04C7,
0x04C7, 0x04C9, 0x04CA, 0x04CB, 0x04CB, 0x04CD, 0x04CE, 0x04CF,
0x04D0, 0x04D0, 0x04D2, 0x04D2, 0x04D4, 0x04D4, 0x04D6, 0x04D6,
0x04D8, 0x04D8, 0x04DA, 0x04DA, 0x04DC, 0x04DC, 0x04DE, 0x04DE,
0x04E0, 0x04E0, 0x04E2, 0x04E2, 0x04E4, 0x04E4, 0x04E6, 0x04E6,
0x04E8, 0x04E8, 0x04EA, 0x04EA, 0x04EC, 0x04ED, 0x04EE, 0x04EE,
0x04F0, 0x04F0, 0x04F2, 0x04F2, 0x04F4, 0x04F4, 0x04F6, 0x04F7,
0x04F8, 0x04F8, 0x04FA, 0x04FB, 0x04FC, 0x04FD, 0x04FE, 0x04FF,
};
/* Uppercase mappings 0500 - 05FF */
static const WCHAR ublk05[256] = {
0x0500, 0x0501, 0x0502, 0x0503, 0x0504, 0x0505, 0x0506, 0x0507,
0x0508, 0x0509, 0x050A, 0x050B, 0x050C, 0x050D, 0x050E, 0x050F,
0x0510, 0x0511, 0x0512, 0x0513, 0x0514, 0x0515, 0x0516, 0x0517,
0x0518, 0x0519, 0x051A, 0x051B, 0x051C, 0x051D, 0x051E, 0x051F,
0x0520, 0x0521, 0x0522, 0x0523, 0x0524, 0x0525, 0x0526, 0x0527,
0x0528, 0x0529, 0x052A, 0x052B, 0x052C, 0x052D, 0x052E, 0x052F,
0x0530, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537,
0x0538, 0x0539, 0x053A, 0x053B, 0x053C, 0x053D, 0x053E, 0x053F,
0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547,
0x0548, 0x0549, 0x054A, 0x054B, 0x054C, 0x054D, 0x054E, 0x054F,
0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0557,
0x0558, 0x0559, 0x055A, 0x055B, 0x055C, 0x055D, 0x055E, 0x055F,
0x0560, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537,
0x0538, 0x0539, 0x053A, 0x053B, 0x053C, 0x053D, 0x053E, 0x053F,
0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547,
0x0548, 0x0549, 0x054A, 0x054B, 0x054C, 0x054D, 0x054E, 0x054F,
0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0587,
0x0588, 0x0589, 0x058A, 0x058B, 0x058C, 0x058D, 0x058E, 0x058F,
0x0590, 0x0591, 0x0592, 0x0593, 0x0594, 0x0595, 0x0596, 0x0597,
0x0598, 0x0599, 0x059A, 0x059B, 0x059C, 0x059D, 0x059E, 0x059F,
0x05A0, 0x05A1, 0x05A2, 0x05A3, 0x05A4, 0x05A5, 0x05A6, 0x05A7,
0x05A8, 0x05A9, 0x05AA, 0x05AB, 0x05AC, 0x05AD, 0x05AE, 0x05AF,
0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7,
0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF,
0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05C4, 0x05C5, 0x05C6, 0x05C7,
0x05C8, 0x05C9, 0x05CA, 0x05CB, 0x05CC, 0x05CD, 0x05CE, 0x05CF,
0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
0x05E8, 0x05E9, 0x05EA, 0x05EB, 0x05EC, 0x05ED, 0x05EE, 0x05EF,
0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0x05F5, 0x05F6, 0x05F7,
0x05F8, 0x05F9, 0x05FA, 0x05FB, 0x05FC, 0x05FD, 0x05FE, 0x05FF,
};
/* Uppercase mappings 1E00 - 1EFF */
static const WCHAR ublk1E[256] = {
0x1E00, 0x1E00, 0x1E02, 0x1E02, 0x1E04, 0x1E04, 0x1E06, 0x1E06,
0x1E08, 0x1E08, 0x1E0A, 0x1E0A, 0x1E0C, 0x1E0C, 0x1E0E, 0x1E0E,
0x1E10, 0x1E10, 0x1E12, 0x1E12, 0x1E14, 0x1E14, 0x1E16, 0x1E16,
0x1E18, 0x1E18, 0x1E1A, 0x1E1A, 0x1E1C, 0x1E1C, 0x1E1E, 0x1E1E,
0x1E20, 0x1E20, 0x1E22, 0x1E22, 0x1E24, 0x1E24, 0x1E26, 0x1E26,
0x1E28, 0x1E28, 0x1E2A, 0x1E2A, 0x1E2C, 0x1E2C, 0x1E2E, 0x1E2E,
0x1E30, 0x1E30, 0x1E32, 0x1E32, 0x1E34, 0x1E34, 0x1E36, 0x1E36,
0x1E38, 0x1E38, 0x1E3A, 0x1E3A, 0x1E3C, 0x1E3C, 0x1E3E, 0x1E3E,
0x1E40, 0x1E40, 0x1E42, 0x1E42, 0x1E44, 0x1E44, 0x1E46, 0x1E46,
0x1E48, 0x1E48, 0x1E4A, 0x1E4A, 0x1E4C, 0x1E4C, 0x1E4E, 0x1E4E,
0x1E50, 0x1E50, 0x1E52, 0x1E52, 0x1E54, 0x1E54, 0x1E56, 0x1E56,
0x1E58, 0x1E58, 0x1E5A, 0x1E5A, 0x1E5C, 0x1E5C, 0x1E5E, 0x1E5E,
0x1E60, 0x1E60, 0x1E62, 0x1E62, 0x1E64, 0x1E64, 0x1E66, 0x1E66,
0x1E68, 0x1E68, 0x1E6A, 0x1E6A, 0x1E6C, 0x1E6C, 0x1E6E, 0x1E6E,
0x1E70, 0x1E70, 0x1E72, 0x1E72, 0x1E74, 0x1E74, 0x1E76, 0x1E76,
0x1E78, 0x1E78, 0x1E7A, 0x1E7A, 0x1E7C, 0x1E7C, 0x1E7E, 0x1E7E,
0x1E80, 0x1E80, 0x1E82, 0x1E82, 0x1E84, 0x1E84, 0x1E86, 0x1E86,
0x1E88, 0x1E88, 0x1E8A, 0x1E8A, 0x1E8C, 0x1E8C, 0x1E8E, 0x1E8E,
0x1E90, 0x1E90, 0x1E92, 0x1E92, 0x1E94, 0x1E94, 0x1E96, 0x1E97,
0x1E98, 0x1E99, 0x1E9A, 0x1E9B, 0x1E9C, 0x1E9D, 0x1E9E, 0x1E9F,
0x1EA0, 0x1EA0, 0x1EA2, 0x1EA2, 0x1EA4, 0x1EA4, 0x1EA6, 0x1EA6,
0x1EA8, 0x1EA8, 0x1EAA, 0x1EAA, 0x1EAC, 0x1EAC, 0x1EAE, 0x1EAE,
0x1EB0, 0x1EB0, 0x1EB2, 0x1EB2, 0x1EB4, 0x1EB4, 0x1EB6, 0x1EB6,
0x1EB8, 0x1EB8, 0x1EBA, 0x1EBA, 0x1EBC, 0x1EBC, 0x1EBE, 0x1EBE,
0x1EC0, 0x1EC0, 0x1EC2, 0x1EC2, 0x1EC4, 0x1EC4, 0x1EC6, 0x1EC6,
0x1EC8, 0x1EC8, 0x1ECA, 0x1ECA, 0x1ECC, 0x1ECC, 0x1ECE, 0x1ECE,
0x1ED0, 0x1ED0, 0x1ED2, 0x1ED2, 0x1ED4, 0x1ED4, 0x1ED6, 0x1ED6,
0x1ED8, 0x1ED8, 0x1EDA, 0x1EDA, 0x1EDC, 0x1EDC, 0x1EDE, 0x1EDE,
0x1EE0, 0x1EE0, 0x1EE2, 0x1EE2, 0x1EE4, 0x1EE4, 0x1EE6, 0x1EE6,
0x1EE8, 0x1EE8, 0x1EEA, 0x1EEA, 0x1EEC, 0x1EEC, 0x1EEE, 0x1EEE,
0x1EF0, 0x1EF0, 0x1EF2, 0x1EF2, 0x1EF4, 0x1EF4, 0x1EF6, 0x1EF6,
0x1EF8, 0x1EF8, 0x1EFA, 0x1EFB, 0x1EFC, 0x1EFD, 0x1EFE, 0x1EFF,
};
/* Uppercase mappings 1F00 - 1FFF */
static const WCHAR ublk1F[256] = {
0x1F08, 0x1F09, 0x1F0A, 0x1F0B, 0x1F0C, 0x1F0D, 0x1F0E, 0x1F0F,
0x1F08, 0x1F09, 0x1F0A, 0x1F0B, 0x1F0C, 0x1F0D, 0x1F0E, 0x1F0F,
0x1F18, 0x1F19, 0x1F1A, 0x1F1B, 0x1F1C, 0x1F1D, 0x1F16, 0x1F17,
0x1F18, 0x1F19, 0x1F1A, 0x1F1B, 0x1F1C, 0x1F1D, 0x1F1E, 0x1F1F,
0x1F28, 0x1F29, 0x1F2A, 0x1F2B, 0x1F2C, 0x1F2D, 0x1F2E, 0x1F2F,
0x1F28, 0x1F29, 0x1F2A, 0x1F2B, 0x1F2C, 0x1F2D, 0x1F2E, 0x1F2F,
0x1F38, 0x1F39, 0x1F3A, 0x1F3B, 0x1F3C, 0x1F3D, 0x1F3E, 0x1F3F,
0x1F38, 0x1F39, 0x1F3A, 0x1F3B, 0x1F3C, 0x1F3D, 0x1F3E, 0x1F3F,
0x1F48, 0x1F49, 0x1F4A, 0x1F4B, 0x1F4C, 0x1F4D, 0x1F46, 0x1F47,
0x1F48, 0x1F49, 0x1F4A, 0x1F4B, 0x1F4C, 0x1F4D, 0x1F4E, 0x1F4F,
0x1F50, 0x1F59, 0x1F52, 0x1F5B, 0x1F54, 0x1F5D, 0x1F56, 0x1F5F,
0x1F58, 0x1F59, 0x1F5A, 0x1F5B, 0x1F5C, 0x1F5D, 0x1F5E, 0x1F5F,
0x1F68, 0x1F69, 0x1F6A, 0x1F6B, 0x1F6C, 0x1F6D, 0x1F6E, 0x1F6F,
0x1F68, 0x1F69, 0x1F6A, 0x1F6B, 0x1F6C, 0x1F6D, 0x1F6E, 0x1F6F,
0x1FBA, 0x1FBB, 0x1FC8, 0x1FC9, 0x1FCA, 0x1FCB, 0x1FDA, 0x1FDB,
0x1FF8, 0x1FF9, 0x1FEA, 0x1FEB, 0x1FFA, 0x1FFB, 0x1F7E, 0x1F7F,
0x1F88, 0x1F89, 0x1F8A, 0x1F8B, 0x1F8C, 0x1F8D, 0x1F8E, 0x1F8F,
0x1F88, 0x1F89, 0x1F8A, 0x1F8B, 0x1F8C, 0x1F8D, 0x1F8E, 0x1F8F,
0x1F98, 0x1F99, 0x1F9A, 0x1F9B, 0x1F9C, 0x1F9D, 0x1F9E, 0x1F9F,
0x1F98, 0x1F99, 0x1F9A, 0x1F9B, 0x1F9C, 0x1F9D, 0x1F9E, 0x1F9F,
0x1FA8, 0x1FA9, 0x1FAA, 0x1FAB, 0x1FAC, 0x1FAD, 0x1FAE, 0x1FAF,
0x1FA8, 0x1FA9, 0x1FAA, 0x1FAB, 0x1FAC, 0x1FAD, 0x1FAE, 0x1FAF,
0x1FB8, 0x1FB9, 0x1FB2, 0x1FBC, 0x1FB4, 0x1FB5, 0x1FB6, 0x1FB7,
0x1FB8, 0x1FB9, 0x1FBA, 0x1FBB, 0x1FBC, 0x1FBD, 0x1FBE, 0x1FBF,
0x1FC0, 0x1FC1, 0x1FC2, 0x1FCC, 0x1FC4, 0x1FC5, 0x1FC6, 0x1FC7,
0x1FC8, 0x1FC9, 0x1FCA, 0x1FCB, 0x1FCC, 0x1FCD, 0x1FCE, 0x1FCF,
0x1FD8, 0x1FD9, 0x1FD2, 0x1FD3, 0x1FD4, 0x1FD5, 0x1FD6, 0x1FD7,
0x1FD8, 0x1FD9, 0x1FDA, 0x1FDB, 0x1FDC, 0x1FDD, 0x1FDE, 0x1FDF,
0x1FE8, 0x1FE9, 0x1FE2, 0x1FE3, 0x1FE4, 0x1FEC, 0x1FE6, 0x1FE7,
0x1FE8, 0x1FE9, 0x1FEA, 0x1FEB, 0x1FEC, 0x1FED, 0x1FEE, 0x1FEF,
0x1FF0, 0x1FF1, 0x1FF2, 0x1FFC, 0x1FF4, 0x1FF5, 0x1FF6, 0x1FF7,
0x1FF8, 0x1FF9, 0x1FFA, 0x1FFB, 0x1FFC, 0x1FFD, 0x1FFE, 0x1FFF,
};
/* Uppercase mappings 2100 - 21FF */
static const WCHAR ublk21[256] = {
0x2100, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107,
0x2108, 0x2109, 0x210A, 0x210B, 0x210C, 0x210D, 0x210E, 0x210F,
0x2110, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117,
0x2118, 0x2119, 0x211A, 0x211B, 0x211C, 0x211D, 0x211E, 0x211F,
0x2120, 0x2121, 0x2122, 0x2123, 0x2124, 0x2125, 0x2126, 0x2127,
0x2128, 0x2129, 0x212A, 0x212B, 0x212C, 0x212D, 0x212E, 0x212F,
0x2130, 0x2131, 0x2132, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137,
0x2138, 0x2139, 0x213A, 0x213B, 0x213C, 0x213D, 0x213E, 0x213F,
0x2140, 0x2141, 0x2142, 0x2143, 0x2144, 0x2145, 0x2146, 0x2147,
0x2148, 0x2149, 0x214A, 0x214B, 0x214C, 0x214D, 0x214E, 0x214F,
0x2150, 0x2151, 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157,
0x2158, 0x2159, 0x215A, 0x215B, 0x215C, 0x215D, 0x215E, 0x215F,
0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F,
0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F,
0x2180, 0x2181, 0x2182, 0x2183, 0x2184, 0x2185, 0x2186, 0x2187,
0x2188, 0x2189, 0x218A, 0x218B, 0x218C, 0x218D, 0x218E, 0x218F,
0x2190, 0x2191, 0x2192, 0x2193, 0x2194, 0x2195, 0x2196, 0x2197,
0x2198, 0x2199, 0x219A, 0x219B, 0x219C, 0x219D, 0x219E, 0x219F,
0x21A0, 0x21A1, 0x21A2, 0x21A3, 0x21A4, 0x21A5, 0x21A6, 0x21A7,
0x21A8, 0x21A9, 0x21AA, 0x21AB, 0x21AC, 0x21AD, 0x21AE, 0x21AF,
0x21B0, 0x21B1, 0x21B2, 0x21B3, 0x21B4, 0x21B5, 0x21B6, 0x21B7,
0x21B8, 0x21B9, 0x21BA, 0x21BB, 0x21BC, 0x21BD, 0x21BE, 0x21BF,
0x21C0, 0x21C1, 0x21C2, 0x21C3, 0x21C4, 0x21C5, 0x21C6, 0x21C7,
0x21C8, 0x21C9, 0x21CA, 0x21CB, 0x21CC, 0x21CD, 0x21CE, 0x21CF,
0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x21D4, 0x21D5, 0x21D6, 0x21D7,
0x21D8, 0x21D9, 0x21DA, 0x21DB, 0x21DC, 0x21DD, 0x21DE, 0x21DF,
0x21E0, 0x21E1, 0x21E2, 0x21E3, 0x21E4, 0x21E5, 0x21E6, 0x21E7,
0x21E8, 0x21E9, 0x21EA, 0x21EB, 0x21EC, 0x21ED, 0x21EE, 0x21EF,
0x21F0, 0x21F1, 0x21F2, 0x21F3, 0x21F4, 0x21F5, 0x21F6, 0x21F7,
0x21F8, 0x21F9, 0x21FA, 0x21FB, 0x21FC, 0x21FD, 0x21FE, 0x21FF,
};
/* Uppercase mappings 2400 - 24FF */
static const WCHAR ublk24[256] = {
0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407,
0x2408, 0x2409, 0x240A, 0x240B, 0x240C, 0x240D, 0x240E, 0x240F,
0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417,
0x2418, 0x2419, 0x241A, 0x241B, 0x241C, 0x241D, 0x241E, 0x241F,
0x2420, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427,
0x2428, 0x2429, 0x242A, 0x242B, 0x242C, 0x242D, 0x242E, 0x242F,
0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437,
0x2438, 0x2439, 0x243A, 0x243B, 0x243C, 0x243D, 0x243E, 0x243F,
0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447,
0x2448, 0x2449, 0x244A, 0x244B, 0x244C, 0x244D, 0x244E, 0x244F,
0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457,
0x2458, 0x2459, 0x245A, 0x245B, 0x245C, 0x245D, 0x245E, 0x245F,
0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E, 0x246F,
0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477,
0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F,
0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F,
0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
0x2498, 0x2499, 0x249A, 0x249B, 0x249C, 0x249D, 0x249E, 0x249F,
0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7,
0x24A8, 0x24A9, 0x24AA, 0x24AB, 0x24AC, 0x24AD, 0x24AE, 0x24AF,
0x24B0, 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x24B6, 0x24B7,
0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, 0x24BF,
0x24C0, 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7,
0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF,
0x24B6, 0x24B7, 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD,
0x24BE, 0x24BF, 0x24C0, 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5,
0x24C6, 0x24C7, 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD,
0x24CE, 0x24CF, 0x24EA, 0x24EB, 0x24EC, 0x24ED, 0x24EE, 0x24EF,
0x24F0, 0x24F1, 0x24F2, 0x24F3, 0x24F4, 0x24F5, 0x24F6, 0x24F7,
0x24F8, 0x24F9, 0x24FA, 0x24FB, 0x24FC, 0x24FD, 0x24FE, 0x24FF,
};
/* Uppercase mappings FF00 - FFFF */
static const WCHAR ublkFF[256] = {
0xFF00, 0xFF01, 0xFF02, 0xFF03, 0xFF04, 0xFF05, 0xFF06, 0xFF07,
0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F,
0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17,
0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F,
0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27,
0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37,
0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F,
0xFF40, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27,
0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37,
0xFF38, 0xFF39, 0xFF3A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFF5E, 0xFF5F,
0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67,
0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F,
0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77,
0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F,
0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87,
0xFF88, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F,
0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97,
0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F,
0xFFA0, 0xFFA1, 0xFFA2, 0xFFA3, 0xFFA4, 0xFFA5, 0xFFA6, 0xFFA7,
0xFFA8, 0xFFA9, 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, 0xFFAE, 0xFFAF,
0xFFB0, 0xFFB1, 0xFFB2, 0xFFB3, 0xFFB4, 0xFFB5, 0xFFB6, 0xFFB7,
0xFFB8, 0xFFB9, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBD, 0xFFBE, 0xFFBF,
0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC6, 0xFFC7,
0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF,
0xFFD0, 0xFFD1, 0xFFD2, 0xFFD3, 0xFFD4, 0xFFD5, 0xFFD6, 0xFFD7,
0xFFD8, 0xFFD9, 0xFFDA, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFDE, 0xFFDF,
0xFFE0, 0xFFE1, 0xFFE2, 0xFFE3, 0xFFE4, 0xFFE5, 0xFFE6, 0xFFE7,
0xFFE8, 0xFFE9, 0xFFEA, 0xFFEB, 0xFFEC, 0xFFED, 0xFFEE, 0xFFEF,
0xFFF0, 0xFFF1, 0xFFF2, 0xFFF3, 0xFFF4, 0xFFF5, 0xFFF6, 0xFFF7,
0xFFF8, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF,
};
static const WCHAR * const uprtable[256] = {
ublk00, ublk01, ublk02, ublk03, ublk04, ublk05, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, ublk1E, ublk1F,
000000, ublk21, 000000, 000000, ublk24, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000,
000000, 000000, 000000, 000000, 000000, 000000, 000000, ublkFF,
};

View File

@ -192,14 +192,12 @@ typedef struct
/* Functions prototypes */
HWND16 WINAPI CreateStatusWindow16(INT16,LPCSTR,HWND16,UINT16);
HWND32 WINAPI CreateStatusWindow32A(INT32,LPCSTR,HWND32,UINT32);
HWND32 WINAPI CreateStatusWindow32W(INT32,LPCWSTR,HWND32,UINT32);
#define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
HWND32 WINAPI CreateUpDownControl(DWORD,INT32,INT32,INT32,INT32,
HWND32,INT32,HINSTANCE32,HWND32,
INT32,INT32,INT32);
VOID WINAPI DrawStatusText16(HDC16,LPRECT16,LPCSTR,UINT16);
VOID WINAPI DrawStatusText32A(HDC32,LPRECT32,LPCSTR,UINT32);
VOID WINAPI DrawStatusText32W(HDC32,LPRECT32,LPCWSTR,UINT32);
#define DrawStatusText WINELIB_NAME_AW(DrawStatusText)
@ -276,6 +274,7 @@ typedef struct _IMAGELISTDRAWPARAMS
INT32 WINAPI ImageList_Add(HIMAGELIST,HBITMAP32,HBITMAP32);
INT32 WINAPI ImageList_AddIcon (HIMAGELIST, HICON32);
INT32 WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP32,COLORREF);
BOOL32 WINAPI ImageList_BeginDrag(HIMAGELIST,INT32,INT32,INT32);
BOOL32 WINAPI ImageList_Copy(HIMAGELIST,INT32,HIMAGELIST,INT32,INT32);
@ -284,7 +283,7 @@ BOOL32 WINAPI ImageList_Destroy(HIMAGELIST);
BOOL32 WINAPI ImageList_DragEnter(HWND32,INT32,INT32);
BOOL32 WINAPI ImageList_DragLeave(HWND32);
BOOL32 WINAPI ImageList_DragMove(INT32,INT32);
BOOL32 WINAPI ImageList_DragShowNolock (BOOL32 bShow);
BOOL32 WINAPI ImageList_DragShowNolock (BOOL32);
BOOL32 WINAPI ImageList_Draw(HIMAGELIST,INT32,HDC32,INT32,INT32,UINT32);
BOOL32 WINAPI ImageList_DrawEx(HIMAGELIST,INT32,HDC32,INT32,INT32,INT32,
INT32,COLORREF,COLORREF,UINT32);
@ -304,18 +303,25 @@ HIMAGELIST WINAPI ImageList_LoadImage32W(HINSTANCE32,LPCWSTR,INT32,INT32,
COLORREF,UINT32,UINT32);
#define ImageList_LoadImage WINELIB_NAME_AW(ImageList_LoadImage)
HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,INT32,HIMAGELIST,INT32,INT32,INT32);
#ifdef __IStream_INTREFACE_DEFINED__
HIMAGELIST WINAPI ImageList_Read (LPSTREAM32);
#endif
BOOL32 WINAPI ImageList_Remove(HIMAGELIST,INT32);
BOOL32 WINAPI ImageList_Replace(HIMAGELIST,INT32,HBITMAP32,HBITMAP32);
INT32 WINAPI ImageList_ReplaceIcon(HIMAGELIST,INT32,HICON32);
COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF);
BOOL32 WINAPI ImageList_SetDragCursorImage(HIMAGELIST,INT32,INT32,INT32);
BOOL32 WINAPI ImageList_SetIconSize (HIMAGELIST,INT32,INT32);
BOOL32 WINAPI ImageList_SetImageCount (HIMAGELIST,INT32);
BOOL32 WINAPI ImageList_SetOverlayImage(HIMAGELIST,INT32,INT32);
#ifdef __IStream_INTREFACE_DEFINED__
BOOL32 WINAPI ImageList_Write (HIMAGELIST, LPSTREAM32);
#endif
#ifndef __WINE__
#define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
#endif
#define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
#define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) \
ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0)
@ -415,11 +421,6 @@ BOOL32 WINAPI ImageList_SetOverlayImage(HIMAGELIST,INT32,INT32);
#define HDN_BEGINDRACK (HDN_FIRST-10)
#define HDN_ENDDRACK (HDN_FIRST-11)
#define Header_Layout(hwndHD,playout) \
(BOOL32)SendMessage32A((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
typedef struct _HD_LAYOUT
{
RECT32 *prc;
@ -428,7 +429,6 @@ typedef struct _HD_LAYOUT
#define HD_LAYOUT HDLAYOUT
typedef struct _HD_ITEMA
{
UINT32 mask;
@ -442,7 +442,6 @@ typedef struct _HD_ITEMA
INT32 iOrder;
} HD_ITEMA;
typedef struct _HD_HITTESTINFO
{
POINT32 pt;
@ -452,7 +451,6 @@ typedef struct _HD_HITTESTINFO
#define HD_HITTESTINFO HDHITTESTINFO
typedef struct tagNMHEADERA
{
NMHDR hdr;
@ -462,4 +460,191 @@ typedef struct tagNMHEADERA
} NMHEADERA, *LPNMHEADERA;
#define Header_GetItemCount(hwndHD) \
(INT32)SendMessage32A((hwndHD),HDM_GETITEMCOUNT,0,0L)
#define Header_InsertItem(hwndHD,i,phdi) \
(INT32)SendMessage32A((hwndHD),HDM_INSERTITEM,(WPARAM32)(INT32)(i),\
(LPARAM)(const HD_ITEMA*)(phdi))
#define Header_DeleteItem(hwndHD,i) \
(BOOL32)SendMessage32A((hwndHD),HDM_DELETEITEM,(WPARAM32)(INT32)(i),0L)
#define Header_GetItem(hwndHD,i,phdi) \
(BOOL32)SendMessage32A((hwndHD),HDM_GETITEM,(WPARAM32)(INT32)(i),(LPARAM)(HD_ITEMA*)(phdi))
#define Header_SetItem(hwndHD,i,phdi) \
(BOOL32)SendMessage32A((hwndHD),HDM_SETITEM,(WPARAM32)(INT32)(i),(LPARAM)(const HD_ITEMA*)(phdi))
#define Header_Layout(hwndHD,playout) \
(BOOL32)SendMessage32A((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
#define Header_GetItemRect(hwnd,iItem,lprc) \
(BOOL32)SendMessage32A((hwnd),HDM_GETITEMRECT,(WPARAM32)iItem,(LPARAM)lprc)
#define Header_SetImageList(hwnd,himl) \
(HIMAGELIST)SendMessage32A((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
#define Header_GetImageList(hwnd) \
(HIMAGELIST)SendMessage32A((hwnd),HDM_GETIMAGELIST,0,0)
#define Header_OrderToIndex(hwnd,i) \
(INT32)SendMessage32A((hwnd),HDM_ORDERTOINDEX,(WPARAM32)i,0)
#define Header_CreateDragImage(hwnd,i) \
(HIMAGELIST)SendMessage32A((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM32)i,0)
#define Header_GetOrderArray(hwnd,iCount,lpi) \
(BOOL32)SendMessage32A((hwnd),HDM_GETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
#define Header_SetOrderArray(hwnd,iCount,lpi) \
(BOOL32)SendMessage32A((hwnd),HDM_SETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
#define Header_SetHotDivider(hwnd,fPos,dw) \
(INT32)SendMessage32A((hwnd),HDM_SETHOTDIVIDER,(WPARAM32)fPos,(LPARAM)dw)
#define Header_SetUnicodeFormat(hwnd,fUnicode) \
(BOOL32)SendMessage32A((hwnd),HDM_SETUNICODEFORMAT,(WPARAM32)(fUnicode),0)
#define Header_GetUnicodeFormat(hwnd) \
(BOOL32)SendMessage32A((hwnd),HDM_GETUNICODEFORMAT,0,0)
/* Toolbar */
#define TOOLBARCLASSNAME16 "ToolbarWindow"
#define TOOLBARCLASSNAME32W L"ToolbarWindow32"
#define TOOLBARCLASSNAME32A "ToolbarWindow32"
#define TOOLBARCLASSNAME WINELIB_NAME_AW(TOOLBARCLASSNAME)
#define CMB_MASKED 0x02
#define TBSTATE_CHECKED 0x01
#define TBSTATE_PRESSED 0x02
#define TBSTATE_ENABLED 0x04
#define TBSTATE_HIDDEN 0x08
#define TBSTATE_INDETERMINATE 0x10
#define TBSTATE_WRAP 0x20
#define TBSTATE_ELLIPSES 0x40
#define TBSTATE_MARKED 0x80
#define TBSTYLE_BUTTON 0x00
#define TBSTYLE_SEP 0x01
#define TBSTYLE_CHECK 0x02
#define TBSTYLE_GROUP 0x04
#define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK)
#define TBSTYLE_DROPDOWN 0x08
#define TBSTYLE_TOOLTIPS 0x0100
#define TBSTYLE_WRAPABLE 0x0200
#define TBSTYLE_ALTDRAG 0x0400
#define TBSTYLE_FLAT 0x0800
#define TBSTYLE_LIST 0x1000
#define TBSTYLE_CUSTOMERASE 0x2000
#define TB_ENABLEBUTTON (WM_USER+1)
#define TB_CHECKBUTTON (WM_USER+2)
#define TB_PRESSBUTTON (WM_USER+3)
#define TB_HIDEBUTTON (WM_USER+4)
#define TB_INDETERMINATE (WM_USER+5)
#define TB_ISBUTTONENABLED (WM_USER+9)
#define TB_ISBUTTONCHECKED (WM_USER+10)
#define TB_ISBUTTONPRESSED (WM_USER+11)
#define TB_ISBUTTONHIDDEN (WM_USER+12)
#define TB_ISBUTTONINDETERMINATE (WM_USER+13)
#define TB_ISBUTTONHIGHLIGHTED (WM_USER+14)
#define TB_SETSTATE (WM_USER+17)
#define TB_GETSTATE (WM_USER+18)
#define TB_ADDBITMAP (WM_USER+19)
#define TB_ADDBUTTONS32A (WM_USER+20)
#define TB_ADDBUTTONS32W (WM_USER+68)
#define TB_ADDBUTTONS WINELIB_NAME_AW(TB_ADDBUTTONS)
#define TB_HITTEST (WM_USER+69)
#define TB_INSERTBUTTON32A (WM_USER+21)
#define TB_INSERTBUTTON32W (WM_USER+67)
#define TB_INSERTBUTTON WINELIB_NAME_AW(TB_INSERTBUTTON)
#define TB_DELETEBUTTON (WM_USER+22)
#define TB_GETBUTTON (WM_USER+23)
#define TB_BUTTONCOUNT (WM_USER+24)
#define TB_COMMANDTOINDEX (WM_USER+25)
#define TB_SAVERESTORE32A (WM_USER+26)
#define TB_SAVERESTORE32W (WM_USER+76)
#define TB_SAVERESTORE WINELIB_NAME_AW(TB_SAVERESTORE)
#define TB_CUSTOMIZE (WM_USER+27)
#define TB_ADDSTRING32A (WM_USER+28)
#define TB_ADDSTRING32W (WM_USER+77)
#define TB_ADDSTRING WINELIB_NAME_AW(TB_ADDSTRING)
#define TB_GETITEMRECT (WM_USER+29)
#define TB_BUTTONSTRUCTSIZE (WM_USER+30)
#define TB_SETBUTTONSIZE (WM_USER+31)
#define TB_SETBITMAPSIZE (WM_USER+32)
#define TB_AUTOSIZE (WM_USER+33)
#define TB_GETTOOLTIPS (WM_USER+35)
#define TB_SETTOOLTIPS (WM_USER+36)
#define TB_SETPARENT (WM_USER+37)
#define TB_SETROWS (WM_USER+39)
#define TB_GETROWS (WM_USER+40)
#define TB_SETCMDID (WM_USER+42)
#define TB_CHANGEBITMAP (WM_USER+43)
#define TB_GETBITMAP (WM_USER+44)
#define TB_GETBUTTONTEXT32A (WM_USER+45)
#define TB_GETBUTTONTEXT32W (WM_USER+75)
#define TB_GETBUTTONTEXT WINELIB_NAME_AW(TB_GETBUTTONTEXT)
#define TB_REPLACEBITMAP (WM_USER+46)
#define TB_SETINDENT (WM_USER+47)
#define TB_SETIMAGELIST (WM_USER+48)
#define TB_GETIMAGELIST (WM_USER+49)
#define TB_LOADIMAGES (WM_USER+50)
#define TB_GETRECT (WM_USER+51) /* wParam is the Cmd instead of index */
#define TB_SETHOTIMAGELIST (WM_USER+52)
#define TB_GETHOTIMAGELIST (WM_USER+53)
#define TB_SETDISABLEDIMAGELIST (WM_USER+54)
#define TB_GETDISABLEDIMAGELIST (WM_USER+55)
#define TB_SETSTYLE (WM_USER+56)
#define TB_GETSTYLE (WM_USER+57)
#define TB_GETBUTTONSIZE (WM_USER+58)
#define TB_SETBUTTONWIDTH (WM_USER+59)
#define TB_SETMAXTEXTROWS (WM_USER+60)
#define TB_GETTEXTROWS (WM_USER+61)
/* This is just for old CreateToolbar. */
/* Don't use it in new programs. */
typedef struct _OLDTBBUTTON {
INT32 iBitmap;
INT32 idCommand;
BYTE fsState;
BYTE fsStyle;
BYTE bReserved[2];
DWORD dwData;
} OLDTBBUTTON, *POLDTBBUTTON, *LPOLDTBBUTTON;
typedef const OLDTBBUTTON *LPCOLDTBBUTTON;
typedef struct _TBBUTTON {
INT32 iBitmap;
INT32 idCommand;
BYTE fsState;
BYTE fsStyle;
BYTE bReserved[2];
DWORD dwData;
INT32 iString;
} TBBUTTON, *PTBBUTTON, *LPTBBUTTON;
typedef const TBBUTTON *LPCTBBUTTON;
typedef struct _COLORMAP {
COLORREF from;
COLORREF to;
} COLORMAP, *LPCOLORMAP;
typedef struct tagTBADDBITMAP {
HINSTANCE32 hInst;
UINT32 nID;
} TBADDBITMAP, *LPTBADDBITMAP;
#define HINST_COMMCTRL ((HINSTANCE32)-1)
HWND32 WINAPI
CreateToolbar(HWND32, DWORD, UINT32, INT32, HINSTANCE32,
UINT32, LPCOLDTBBUTTON, INT32);
HWND32 WINAPI
CreateToolbarEx(HWND32, DWORD, UINT32, INT32,
HINSTANCE32, UINT32, LPCTBBUTTON,
INT32, INT32, INT32, INT32, INT32, UINT32);
HBITMAP32 WINAPI
CreateMappedBitmap (HINSTANCE32, INT32, UINT32, LPCOLORMAP, INT32);
#endif /* __WINE_COMMCTRL_H */

View File

@ -113,8 +113,8 @@ typedef struct {
LPCWSTR lpTemplateName;
} OPENFILENAME32W,*LPOPENFILENAME32W;
DECL_WINELIB_TYPE_AW(OPENFILENAME);
DECL_WINELIB_TYPE_AW(LPOPENFILENAME);
DECL_WINELIB_TYPE_AW(OPENFILENAME)
DECL_WINELIB_TYPE_AW(LPOPENFILENAME)
typedef UINT32 (CALLBACK *LPCCHOOKPROC) (HWND32, UINT32, WPARAM32, LPARAM);
@ -157,8 +157,8 @@ typedef struct {
} CHOOSECOLOR32W;
typedef CHOOSECOLOR32W *LPCHOOSECOLOR32W;
DECL_WINELIB_TYPE_AW(CHOOSECOLOR);
DECL_WINELIB_TYPE_AW(LPCHOOSECOLOR);
DECL_WINELIB_TYPE_AW(CHOOSECOLOR)
DECL_WINELIB_TYPE_AW(LPCHOOSECOLOR)
#define CC_RGBINIT 0x00000001
@ -214,8 +214,8 @@ typedef struct {
LPCWSTR lpTemplateName;
} FINDREPLACE32W, *LPFINDREPLACE32W;
DECL_WINELIB_TYPE_AW(FINDREPLACE);
DECL_WINELIB_TYPE_AW(LPFINDREPLACE);
DECL_WINELIB_TYPE_AW(FINDREPLACE)
DECL_WINELIB_TYPE_AW(LPFINDREPLACE)
#define FR_DOWN 0x00000001
#define FR_WHOLEWORD 0x00000002
@ -303,8 +303,8 @@ typedef struct
INT32 nSizeMax;
} CHOOSEFONT32W, *LPCHOOSEFONT32W;
DECL_WINELIB_TYPE_AW(CHOOSEFONT);
DECL_WINELIB_TYPE_AW(LPCHOOSEFONT);
DECL_WINELIB_TYPE_AW(CHOOSEFONT)
DECL_WINELIB_TYPE_AW(LPCHOOSEFONT)
#pragma pack(4)
@ -433,8 +433,8 @@ typedef struct
HGLOBAL32 hSetupTemplate;
} PRINTDLG32W, *LPPRINTDLG32W;
DECL_WINELIB_TYPE_AW(PRINTDLG);
DECL_WINELIB_TYPE_AW(LPPRINTDLG);
DECL_WINELIB_TYPE_AW(PRINTDLG)
DECL_WINELIB_TYPE_AW(LPPRINTDLG)
#define PD_ALLPAGES 0x00000000
#define PD_SELECTION 0x00000001

View File

@ -69,6 +69,9 @@
/* Define if you have the strerror function. */
#undef HAVE_STRERROR
/* Define if you have the stricmp function. */
#undef HAVE_STRICMP
/* Define if you have the tcgetattr function. */
#undef HAVE_TCGETATTR

View File

@ -22,4 +22,7 @@
#define CRTDLL_LEADBYTE 0x8000
#define CRTDLL_ALPHA (0x0100|CRTDLL_UPPER|CRTDLL_LOWER)
#endif
/* function prototypes used in crtdll.c */
extern int LastErrorToErrno(DWORD);
#endif /* __WINE_CRTDLL_H */

View File

@ -25,7 +25,9 @@ extern void DC_UpdateXforms( DC * dc );
extern const int DC_XROPfunction[];
/* objects/clipping.c */
INT32 CLIPPING_IntersectClipRect( DC * dc, INT32 left, INT32 top,
INT32 right, INT32 bottom, UINT32 flags );
INT32 right, INT32 bottom, UINT32 flags );
extern void CLIPPING_UpdateGCRegion( DC * dc );
#endif /* __WINE_DC_H */

View File

@ -19,7 +19,7 @@ typedef HDDEDATA (CALLBACK *PFNCALLBACK16)(UINT16,UINT16,HCONV,HSZ,HSZ,
HDDEDATA,DWORD,DWORD);
typedef HDDEDATA (CALLBACK *PFNCALLBACK32)(UINT32,UINT32,HCONV,HSZ,HSZ,
HDDEDATA,DWORD,DWORD);
DECL_WINELIB_TYPE(PFNCALLBACK);
DECL_WINELIB_TYPE(PFNCALLBACK)
typedef struct
{
@ -41,8 +41,8 @@ typedef struct
DWORD dwSecurity;
} CONVCONTEXT32, *LPCONVCONTEXT32;
DECL_WINELIB_TYPE(CONVCONTEXT);
DECL_WINELIB_TYPE(LPCONVCONTEXT);
DECL_WINELIB_TYPE(CONVCONTEXT)
DECL_WINELIB_TYPE(LPCONVCONTEXT)
UINT16 WINAPI DdeInitialize16(LPDWORD,PFNCALLBACK16,DWORD,DWORD);
UINT32 WINAPI DdeInitialize32A(LPDWORD,PFNCALLBACK32,DWORD,DWORD);
@ -54,7 +54,9 @@ BOOL32 WINAPI DdeUninitialize32(DWORD);
HCONVLIST WINAPI DdeConnectList16(DWORD,HSZ,HSZ,HCONVLIST,LPCONVCONTEXT16);
HCONVLIST WINAPI DdeConnectList32(DWORD,HSZ,HSZ,HCONVLIST,LPCONVCONTEXT32);
#define DdeConnectList WINELIB_NAME(DdeConnectList)
HCONV WINAPI DdeQueryNextServer(HCONVLIST, HCONV);
HCONV WINAPI DdeQueryNextServer16(HCONVLIST, HCONV);
HCONV WINAPI DdeQueryNextServer32(HCONVLIST, HCONV);
#define DdeQueryNextServer WINELIB_NAME(DdeQueryNextServer)
BOOL16 WINAPI DdeDisconnectList16(HCONVLIST);
BOOL32 WINAPI DdeDisconnectList32(HCONVLIST);
#define DdeDisConnectList WINELIB_NAME(DdeDisconnectList)

View File

@ -668,7 +668,7 @@ typedef struct {
typedef BOOL32 (CALLBACK * LPDDENUMCALLBACK32A)(GUID *, LPSTR, LPSTR, LPVOID);
typedef BOOL32 (CALLBACK * LPDDENUMCALLBACK32W)(GUID *, LPWSTR, LPWSTR, LPVOID);
DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACK);
DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACK)
typedef HRESULT (CALLBACK * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
typedef HRESULT (CALLBACK * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
@ -676,7 +676,7 @@ typedef HRESULT (CALLBACK * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDS
typedef HANDLE32 HMONITOR;
typedef BOOL32 (CALLBACK * LPDDENUMCALLBACKEX32A)(GUID *, LPSTR, LPSTR, LPVOID, HMONITOR);
typedef BOOL32 (CALLBACK * LPDDENUMCALLBACKEX32W)(GUID *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACKEX);
DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACKEX)
HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEX32A lpCallback, LPVOID lpContext, DWORD dwFlags);
HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEX32W lpCallback, LPVOID lpContext, DWORD dwFlags);

View File

@ -30,94 +30,97 @@
#define dbch_ddraw 22
#define dbch_debug 23
#define dbch_dialog 24
#define dbch_dll 25
#define dbch_dosfs 26
#define dbch_dosmem 27
#define dbch_driver 28
#define dbch_dsound 29
#define dbch_edit 30
#define dbch_event 31
#define dbch_exec 32
#define dbch_file 33
#define dbch_fixup 34
#define dbch_font 35
#define dbch_gdi 36
#define dbch_global 37
#define dbch_graphics 38
#define dbch_header 39
#define dbch_heap 40
#define dbch_hook 41
#define dbch_icon 42
#define dbch_imagelist 43
#define dbch_int 44
#define dbch_int21 45
#define dbch_int31 46
#define dbch_key 47
#define dbch_keyboard 48
#define dbch_ldt 49
#define dbch_listbox 50
#define dbch_local 51
#define dbch_mci 52
#define dbch_mcianim 53
#define dbch_mciwave 54
#define dbch_mdi 55
#define dbch_menu 56
#define dbch_message 57
#define dbch_metafile 58
#define dbch_midi 59
#define dbch_mmaux 60
#define dbch_mmio 61
#define dbch_mmsys 62
#define dbch_mmtime 63
#define dbch_module 64
#define dbch_mpr 65
#define dbch_msg 66
#define dbch_nonclient 67
#define dbch_ntdll 68
#define dbch_ole 69
#define dbch_palette 70
#define dbch_print 71
#define dbch_profile 72
#define dbch_progress 73
#define dbch_prop 74
#define dbch_reg 75
#define dbch_region 76
#define dbch_relay 77
#define dbch_resource 78
#define dbch_scroll 79
#define dbch_security 80
#define dbch_segment 81
#define dbch_selector 82
#define dbch_sem 83
#define dbch_sendmsg 84
#define dbch_shell 85
#define dbch_shm 86
#define dbch_sound 87
#define dbch_static 88
#define dbch_status 89
#define dbch_stress 90
#define dbch_string 91
#define dbch_system 92
#define dbch_task 93
#define dbch_text 94
#define dbch_thread 95
#define dbch_thunk 96
#define dbch_timer 97
#define dbch_toolhelp 98
#define dbch_tweak 99
#define dbch_uitools 100
#define dbch_updown 101
#define dbch_ver 102
#define dbch_virtual 103
#define dbch_vxd 104
#define dbch_win 105
#define dbch_win16drv 106
#define dbch_win32 107
#define dbch_wing 108
#define dbch_winsock 109
#define dbch_wnet 110
#define dbch_x11 111
#define dbch_x11drv 112
#define dbch_dinput 25
#define dbch_dll 26
#define dbch_dosfs 27
#define dbch_dosmem 28
#define dbch_driver 29
#define dbch_dsound 30
#define dbch_edit 31
#define dbch_event 32
#define dbch_exec 33
#define dbch_file 34
#define dbch_fixup 35
#define dbch_font 36
#define dbch_gdi 37
#define dbch_global 38
#define dbch_graphics 39
#define dbch_header 40
#define dbch_heap 41
#define dbch_hook 42
#define dbch_icon 43
#define dbch_imagelist 44
#define dbch_int 45
#define dbch_int21 46
#define dbch_int31 47
#define dbch_key 48
#define dbch_keyboard 49
#define dbch_ldt 50
#define dbch_listbox 51
#define dbch_local 52
#define dbch_mci 53
#define dbch_mcianim 54
#define dbch_mciwave 55
#define dbch_mdi 56
#define dbch_menu 57
#define dbch_message 58
#define dbch_metafile 59
#define dbch_midi 60
#define dbch_mmaux 61
#define dbch_mmio 62
#define dbch_mmsys 63
#define dbch_mmtime 64
#define dbch_module 65
#define dbch_mpr 66
#define dbch_msg 67
#define dbch_nonclient 68
#define dbch_ntdll 69
#define dbch_ole 70
#define dbch_palette 71
#define dbch_print 72
#define dbch_process 73
#define dbch_profile 74
#define dbch_progress 75
#define dbch_prop 76
#define dbch_reg 77
#define dbch_region 78
#define dbch_relay 79
#define dbch_resource 80
#define dbch_scroll 81
#define dbch_security 82
#define dbch_segment 83
#define dbch_selector 84
#define dbch_sem 85
#define dbch_sendmsg 86
#define dbch_shell 87
#define dbch_shm 88
#define dbch_sound 89
#define dbch_static 90
#define dbch_stress 91
#define dbch_string 92
#define dbch_syscolor 93
#define dbch_system 94
#define dbch_task 95
#define dbch_text 96
#define dbch_thread 97
#define dbch_thunk 98
#define dbch_timer 99
#define dbch_toolbar 100
#define dbch_toolhelp 101
#define dbch_tweak 102
#define dbch_uitools 103
#define dbch_updown 104
#define dbch_ver 105
#define dbch_virtual 106
#define dbch_vxd 107
#define dbch_win 108
#define dbch_win16drv 109
#define dbch_win32 110
#define dbch_wing 111
#define dbch_winsock 112
#define dbch_wnet 113
#define dbch_x11 114
#define dbch_x11drv 115
/* Definitions for classes identifiers */
#define dbcl_fixme 0
#define dbcl_err 1

View File

@ -4,7 +4,7 @@
#include "debugtools.h"
#endif
#define DEBUG_CHANNEL_COUNT 113
#define DEBUG_CHANNEL_COUNT 116
#ifdef DEBUG_RUNTIME
short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
{1, 1, 0, 0},
@ -120,6 +120,9 @@ short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
{1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 0},
};
const char* debug_ch_name[] = {
"accel",
@ -147,6 +150,7 @@ const char* debug_ch_name[] = {
"ddraw",
"debug",
"dialog",
"dinput",
"dll",
"dosfs",
"dosmem",
@ -194,6 +198,7 @@ const char* debug_ch_name[] = {
"ole",
"palette",
"print",
"process",
"profile",
"progress",
"prop",
@ -211,15 +216,16 @@ const char* debug_ch_name[] = {
"shm",
"sound",
"static",
"status",
"stress",
"string",
"syscolor",
"system",
"task",
"text",
"thread",
"thunk",
"timer",
"toolbar",
"toolhelp",
"tweak",
"uitools",

View File

@ -155,8 +155,8 @@ typedef struct {
WORD wReserved;
#endif /* DIRECTINPUT_VERSION >= 0x0500 */
} DIDEVICEOBJECTINSTANCE32W, *LPDIDEVICEOBJECTINSTANCE32W,*LPCDIDEVICEOBJECTINSTANCE32W;
DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE);
DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE);
DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE)
DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE)
typedef struct {
@ -186,17 +186,17 @@ typedef struct {
WORD wUsage;
#endif /* DIRECTINPUT_VERSION >= 0x0500 */
} DIDEVICEINSTANCE32W, *LPDIDEVICEINSTANCE32W, *LPCDIDEVICEINSTANCE32W;
DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE);
DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE);
DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE);
DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE)
DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE)
DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE)
typedef BOOL32 (CALLBACK * LPDIENUMDEVICESCALLBACK32A)(LPCDIDEVICEINSTANCE32A,LPVOID);
typedef BOOL32 (CALLBACK * LPDIENUMDEVICESCALLBACK32W)(LPCDIDEVICEINSTANCE32W,LPVOID);
DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK);
DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK)
typedef BOOL32 (CALLBACK * LPDIENUMDEVICEOBJECTSCALLBACK32A)(LPCDIDEVICEOBJECTINSTANCE32A, LPVOID);
typedef BOOL32 (CALLBACK * LPDIENUMDEVICEOBJECTSCALLBACK32W)(LPCDIDEVICEOBJECTINSTANCE32W,LPVOID);
DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK);
DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK)
#define DIK_ESCAPE 0x01
#define DIK_1 0x02

View File

@ -246,10 +246,34 @@ struct IDirectSoundNotify {
LPDIRECTSOUNDBUFFER dsb;
};
#undef THIS
#undef STDMETHOD
#undef STDMETHOD_
#undef PURE
#undef FAR
#undef THIS_
/* DirectPlayLobby stuff */
/* {AF465C71-9588-11cf-A020-00AA006157AC} */
DEFINE_GUID(IID_IDirectPlayLobby, 0xaf465c71, 0x9588, 0x11cf, 0xa0, 0x20, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac);
/* {26C66A70-B367-11cf-A024-00AA006157AC} */
DEFINE_GUID(IID_IDirectPlayLobbyA, 0x26c66a70, 0xb367, 0x11cf, 0xa0, 0x24, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac);
/* {0194C220-A303-11d0-9C4F-00A0C905425E} */
DEFINE_GUID(IID_IDirectPlayLobby2, 0x194c220, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
/* {1BB4AF80-A303-11d0-9C4F-00A0C905425E} */
DEFINE_GUID(IID_IDirectPlayLobby2A, 0x1bb4af80, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
/* {2FE8F810-B2A5-11d0-A787-0000F803ABFC} */
DEFINE_GUID(CLSID_DirectPlayLobby, 0x2fe8f810, 0xb2a5, 0x11d0, 0xa7, 0x87, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
typedef struct IDirectPlayLobby *LPDIRECTPLAYLOBBY;
typedef struct IDirectPlayLobby *LPDIRECTPLAYLOBBYA;
typedef struct IDirectPlayLobby IDirectPlayLobbyA;
typedef struct IDirectPlayLobby2 *LPDIRECTPLAYLOBBY2;
typedef struct IDirectPlayLobby2 *LPDIRECTPLAYLOBBY2A;
typedef struct IDirectPlayLobby2 IDirectPlayLobby2A;
extern HRESULT WINAPI DirectPlayLobbyCreateW(LPGUID, LPDIRECTPLAYLOBBY *, IUnknown *, LPVOID, DWORD );
extern HRESULT WINAPI DirectPlayLobbyCreateA(LPGUID, LPDIRECTPLAYLOBBYA *, IUnknown *, LPVOID, DWORD );
#endif

View File

@ -32,13 +32,6 @@ typedef struct __EXCEPTION_FRAME
PEXCEPTION_HANDLER Handler;
} EXCEPTION_FRAME, *PEXCEPTION_FRAME;
/*
* Function definitions
*/
void WINAPI RaiseException(DWORD exccode, DWORD excflags,
DWORD nargs, const LPDWORD pargs,
PCONTEXT pcontext /* Wine additional parameter */);
/*
* this undocumented function is called when an exception
@ -53,11 +46,9 @@ void WINAPI RaiseException(DWORD exccode, DWORD excflags,
* a fourth parameter, that is used as the eax in the
* context.
*/
void WINAPI RtlUnwind( PEXCEPTION_FRAME pestframe,
LPVOID unusedEIP,
PEXCEPTION_RECORD pexcrec,
DWORD contextEAX,
PCONTEXT pcontext /* Wine additional parameter */ );
DWORD contextEAX );
#endif /* __WINE_EXCEPT_H */

111
include/flatthunk.h Normal file
View File

@ -0,0 +1,111 @@
/*
* Win95 Flat Thunk data structures
*
* Copyright 1998 Ulrich Weigand
*/
#ifndef __WINE_FLATTHUNK_H
#define __WINE_FLATTHUNK_H
struct ThunkDataCommon
{
char magic[4]; /* 00 */
DWORD checksum; /* 04 */
};
struct ThunkDataLS16
{
struct ThunkDataCommon common; /* 00 */
SEGPTR targetTable; /* 08 */
DWORD firstTime; /* 0C */
};
struct ThunkDataLS32
{
struct ThunkDataCommon common; /* 00 */
DWORD * targetTable; /* 08 */
char lateBinding[4]; /* 0C */
DWORD flags; /* 10 */
DWORD reserved1; /* 14 */
DWORD reserved2; /* 18 */
DWORD offsetQTThunk; /* 1C */
DWORD offsetFTProlog; /* 20 */
};
struct ThunkDataSL16
{
struct ThunkDataCommon common; /* 00 */
DWORD flags1; /* 08 */
DWORD reserved1; /* 0C */
struct ThunkDataSL * fpData; /* 10 */
SEGPTR spData; /* 14 */
DWORD reserved2; /* 18 */
char lateBinding[4]; /* 1C */
DWORD flags2; /* 20 */
DWORD reserved3; /* 20 */
SEGPTR apiDatabase; /* 28 */
};
struct ThunkDataSL32
{
struct ThunkDataCommon common; /* 00 */
DWORD reserved1; /* 08 */
struct ThunkDataSL * data; /* 0C */
char lateBinding[4]; /* 10 */
DWORD flags; /* 14 */
DWORD reserved2; /* 18 */
DWORD reserved3; /* 1C */
DWORD offsetTargetTable; /* 20 */
};
struct ThunkDataSL
{
#if 0
This structure differs from the Win95 original,
but this should not matter since it is strictly internal to
the thunk handling routines in KRNL386 / KERNEL32.
For reference, here is the Win95 layout:
struct ThunkDataCommon common; /* 00 */
DWORD flags1; /* 08 */
SEGPTR apiDatabase; /* 0C */
WORD exePtr; /* 10 */
WORD segMBA; /* 12 */
DWORD lenMBATotal; /* 14 */
DWORD lenMBAUsed; /* 18 */
DWORD flags2; /* 1C */
char pszDll16[256]; /* 20 */
char pszDll32[256]; /*120 */
We do it differently since all our thunk handling is done
by 32-bit code. Therefore we do not need do provide
easy access to this data, especially the process target
table database, for 16-bit code.
#endif
struct ThunkDataCommon common;
DWORD flags1;
struct SLApiDB * apiDB;
struct SLTargetDB * targetDB;
DWORD flags2;
char pszDll16[256];
char pszDll32[256];
};
struct SLTargetDB
{
struct SLTargetDB * next;
PDB32 * process;
DWORD * targetTable;
};
struct SLApiDB
{
DWORD nrArgBytes;
DWORD errorReturnValue;
};
#endif /* __WINE_FLATTHUNK_H */

View File

@ -429,6 +429,8 @@ extern BOOL32 DRIVER_RegisterDriver( LPCSTR name, const DC_FUNCTIONS *funcs );
extern const DC_FUNCTIONS *DRIVER_FindDriver( LPCSTR name );
extern BOOL32 DRIVER_UnregisterDriver( LPCSTR name );
extern BOOL32 DIB_Init(void);
extern Display * display;
extern Screen * screen;
extern Window rootWindow;

View File

@ -28,6 +28,7 @@ extern HGLOBAL16 GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL16 hOwner,
extern WORD GlobalHandleToSel( HGLOBAL16 handle );
/* memory/virtual.c */
extern BOOL32 VIRTUAL_Init( void );
extern DWORD VIRTUAL_GetPageSize(void);
extern DWORD VIRTUAL_GetGranularity(void);

View File

@ -107,6 +107,8 @@ LPMALLOC16 IMalloc16_Constructor();
LPMALLOC32 IMalloc32_Constructor();
#endif
HRESULT WINAPI CoGetMalloc32(DWORD, LPMALLOC32*);
#undef STDMETHOD
#undef STDMETHOD_
#undef PURE

View File

@ -10,4 +10,7 @@ extern void MAIN_Usage(char*);
extern BOOL32 MAIN_UserInit(void);
extern BOOL32 MAIN_WineInit( int *argc, char *argv[] );
extern BOOL32 RELAY_Init(void);
extern void* CALL32_Init(void);
#endif /* __WINE_MAIN_H */

View File

@ -9,6 +9,7 @@ extern BOOL32 MENU_Init(void);
extern HMENU32 MENU_GetSysMenu(HWND32 hWndOwner, HMENU32 hSysPopup);
extern UINT32 MENU_GetMenuBarHeight( HWND32 hwnd, UINT32 menubarWidth,
INT32 orgX, INT32 orgY );
extern BOOL32 MENU_PatchResidentPopup( HQUEUE16, WND* );
extern void MENU_TrackMouseMenuBar( WND *wnd, INT32 ht, POINT32 pt );
extern void MENU_TrackKbdMenuBar( WND *wnd, UINT32 wParam, INT32 vkey );
extern UINT32 MENU_DrawMenuBar( HDC32 hDC, LPRECT32 lprect,

View File

@ -31,6 +31,10 @@ extern BOOL32 TIMER_GetTimerMsg( MSG16 *msg, HWND32 hwnd,
#define EVENT_IO_EXCEPT 2
/* event.c */
extern void EVENT_AddIO( int fd, unsigned flag );
extern BOOL32 EVENT_CheckFocus( void );
extern void EVENT_DeleteIO( int fd, unsigned flag );
extern BOOL32 EVENT_Init( void );
extern BOOL32 EVENT_WaitNetEvent( BOOL32 sleep, BOOL32 peek );
extern void EVENT_Synchronize(void);
extern void EVENT_ProcessEvent( XEvent *event );
@ -40,4 +44,6 @@ extern void EVENT_DummyMotionNotify(void);
extern HWND32 EVENT_Capture( HWND32, INT16 );
extern INT16 EVENT_GetCaptureInfo(void);
extern void joySendMessages(void);
#endif /* __WINE_MESSAGE_H */

View File

@ -24,13 +24,13 @@ typedef WORD VERSION; /* major (high byte), minor (low byte) */
typedef UINT16 MMVERSION16;
typedef UINT32 MMVERSION32;
DECL_WINELIB_TYPE(MMVERSION);
DECL_WINELIB_TYPE(MMVERSION)
typedef UINT16 MCIDEVICEID16;
typedef UINT32 MCIDEVICEID32;
DECL_WINELIB_TYPE(MCIDEVICEID);
DECL_WINELIB_TYPE(MCIDEVICEID)
typedef UINT16 MMRESULT16;
typedef UINT32 MMRESULT32;
DECL_WINELIB_TYPE(MMRESULT);
DECL_WINELIB_TYPE(MMRESULT)
typedef struct {
UINT16 wType; /* indicates the contents of the union */
@ -72,8 +72,8 @@ typedef struct {
} midi;
} u;
} MMTIME32, *LPMMTIME32;
DECL_WINELIB_TYPE(MMTIME);
DECL_WINELIB_TYPE(LPMMTIME);
DECL_WINELIB_TYPE(MMTIME)
DECL_WINELIB_TYPE(LPMMTIME)
#define TIME_MS 0x0001 /* time in milliseconds */
#define TIME_SAMPLES 0x0002 /* number of wave samples */
@ -261,8 +261,8 @@ typedef struct {
WORD wReserved1; /* padding */
DWORD dwSupport; /* functionality supported by driver */
} WAVEOUTCAPS32W, *LPWAVEOUTCAPS32W;
DECL_WINELIB_TYPE_AW(WAVEOUTCAPS);
DECL_WINELIB_TYPE_AW(LPWAVEOUTCAPS);
DECL_WINELIB_TYPE_AW(WAVEOUTCAPS)
DECL_WINELIB_TYPE_AW(LPWAVEOUTCAPS)
#define WAVECAPS_PITCH 0x0001 /* supports pitch control */
#define WAVECAPS_PLAYBACKRATE 0x0002 /* supports playback rate control */
@ -297,8 +297,8 @@ typedef struct {
WORD wChannels; /* number of channels supported */
WORD wReserved1;
} WAVEINCAPS32W, *LPWAVEINCAPS32W;
DECL_WINELIB_TYPE_AW(WAVEINCAPS);
DECL_WINELIB_TYPE_AW(LPWAVEINCAPS);
DECL_WINELIB_TYPE_AW(WAVEINCAPS)
DECL_WINELIB_TYPE_AW(LPWAVEINCAPS)
#define WAVE_INVALIDFORMAT 0x00000000 /* invalid format */
#define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */
@ -530,8 +530,8 @@ typedef struct {
DWORD dwSupport; /* functionality supported by driver */
} MIDIOUTCAPS32W, *LPMIDIOUTCAPS32W;
DECL_WINELIB_TYPE_AW(MIDIOUTCAPS);
DECL_WINELIB_TYPE_AW(LPMIDIOUTCAPS);
DECL_WINELIB_TYPE_AW(MIDIOUTCAPS)
DECL_WINELIB_TYPE_AW(LPMIDIOUTCAPS)
#define MOD_MIDIPORT 1 /* output port */
#define MOD_SYNTH 2 /* generic internal synth */
@ -567,8 +567,8 @@ typedef struct {
DWORD dwSupport; /* included in win95 and higher */
} MIDIINCAPS32W, *LPMIDIINCAPS32W;
DECL_WINELIB_TYPE_AW(MIDIINCAPS);
DECL_WINELIB_TYPE_AW(LPMIDIINCAPS);
DECL_WINELIB_TYPE_AW(MIDIINCAPS)
DECL_WINELIB_TYPE_AW(LPMIDIINCAPS)
typedef struct {
LPSTR lpData; /* pointer to locked data block */
@ -741,7 +741,7 @@ DWORD WINAPI auxOutMessage32(UINT32,UINT32,DWORD,DWORD);
typedef void (CALLBACK *LPTIMECALLBACK16)(UINT16 uTimerID, UINT16 uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
typedef void (CALLBACK *LPTIMECALLBACK32)(UINT32 uTimerID, UINT32 uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
DECL_WINELIB_TYPE(LPTIMECALLBACK);
DECL_WINELIB_TYPE(LPTIMECALLBACK)
#define TIME_ONESHOT 0 /* program timer for single event */
#define TIME_PERIODIC 1 /* program for continuous periodic event */
@ -756,8 +756,8 @@ typedef struct {
UINT32 wPeriodMax;
} TIMECAPS32, *LPTIMECAPS32;
DECL_WINELIB_TYPE(TIMECAPS);
DECL_WINELIB_TYPE(LPTIMECAPS);
DECL_WINELIB_TYPE(TIMECAPS)
DECL_WINELIB_TYPE(LPTIMECAPS)
MMRESULT16 WINAPI timeGetSystemTime16(LPMMTIME16,UINT16);
MMRESULT32 WINAPI timeGetSystemTime32(LPMMTIME32,UINT32);
@ -922,8 +922,8 @@ typedef struct {
WCHAR szRegKey[MAXPNAMELEN];
WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
} JOYCAPS32W, *LPJOYCAPS32W;
DECL_WINELIB_TYPE_AW(JOYCAPS);
DECL_WINELIB_TYPE_AW(LPJOYCAPS);
DECL_WINELIB_TYPE_AW(JOYCAPS)
DECL_WINELIB_TYPE_AW(LPJOYCAPS)
typedef struct {
UINT16 wXpos; /* x position */
@ -955,8 +955,8 @@ typedef struct {
DWORD dwReserved2; /* reserved for future expansion */
} JOYINFOEX,*LPJOYINFOEX;
DECL_WINELIB_TYPE(JOYINFO);
DECL_WINELIB_TYPE(LPJOYINFO);
DECL_WINELIB_TYPE(JOYINFO)
DECL_WINELIB_TYPE(LPJOYINFO)
MMRESULT16 WINAPI joyGetDevCaps16 (UINT16,LPJOYCAPS16 ,UINT16);
MMRESULT32 WINAPI joyGetDevCaps32A(UINT32,LPJOYCAPS32A,UINT32);
@ -1009,8 +1009,8 @@ typedef struct {
DWORD cDestinations;
} MIXERCAPS32W,*LPMIXERCAPS32W;
DECL_WINELIB_TYPE_AW(MIXERCAPS);
DECL_WINELIB_TYPE_AW(LPMIXERCAPS);
DECL_WINELIB_TYPE_AW(MIXERCAPS)
DECL_WINELIB_TYPE_AW(LPMIXERCAPS)
#define MIXER_SHORT_NAME_CHARS 16
#define MIXER_LONG_NAME_CHARS 64
@ -1125,8 +1125,8 @@ typedef struct {
} Target;
} MIXERLINE32W, *LPMIXERLINE32W;
DECL_WINELIB_TYPE_AW(MIXERLINE);
DECL_WINELIB_TYPE_AW(LPMIXERLINE);
DECL_WINELIB_TYPE_AW(MIXERLINE)
DECL_WINELIB_TYPE_AW(LPMIXERLINE)
/* MIXERCONTROL.fdwControl */
#define MIXERCONTROL_CONTROLF_UNIFORM 0x00000001L
@ -1276,8 +1276,8 @@ typedef struct {
} Metrics;
} MIXERCONTROL32W, *LPMIXERCONTROL32W;
DECL_WINELIB_TYPE_AW(MIXERCONTROL);
DECL_WINELIB_TYPE_AW(LPMIXERCONTROL);
DECL_WINELIB_TYPE_AW(MIXERCONTROL)
DECL_WINELIB_TYPE_AW(LPMIXERCONTROL)
typedef struct {
DWORD cbStruct; /* size in bytes of MIXERLINECONTROLS */
@ -1315,8 +1315,8 @@ typedef struct {
LPMIXERCONTROL32W pamxctrl;
} MIXERLINECONTROLS32W, *LPMIXERLINECONTROLS32W;
DECL_WINELIB_TYPE_AW(MIXERLINECONTROLS);
DECL_WINELIB_TYPE_AW(LPMIXERLINECONTROLS);
DECL_WINELIB_TYPE_AW(MIXERLINECONTROLS)
DECL_WINELIB_TYPE_AW(LPMIXERLINECONTROLS)
typedef struct {
DWORD cbStruct; /* size in bytes of MIXERCONTROLDETAILS */
@ -1342,8 +1342,8 @@ typedef struct {
LPVOID paDetails;
} MIXERCONTROLDETAILS32,*LPMIXERCONTROLDETAILS32;
DECL_WINELIB_TYPE(MIXERCONTROLDETAILS);
DECL_WINELIB_TYPE(LPMIXERCONTROLDETAILS);
DECL_WINELIB_TYPE(MIXERCONTROLDETAILS)
DECL_WINELIB_TYPE(LPMIXERCONTROLDETAILS)
typedef struct {
DWORD dwParam1;
@ -1363,8 +1363,8 @@ typedef struct {
WCHAR szName[MIXER_LONG_NAME_CHARS];
} MIXERCONTROLDETAILS_LISTTEXT32W,*LPMIXERCONTROLDETAILS_LISTTEXT32W;
DECL_WINELIB_TYPE_AW(MIXERCONTROLDETAILS_LISTTEXT);
DECL_WINELIB_TYPE_AW(LPMIXERCONTROLDETAILS_LISTTEXT);
DECL_WINELIB_TYPE_AW(MIXERCONTROLDETAILS_LISTTEXT)
DECL_WINELIB_TYPE_AW(LPMIXERCONTROLDETAILS_LISTTEXT)
/* MIXER_GETCONTROLDETAILSF_VALUE */
typedef struct {
@ -1458,7 +1458,7 @@ typedef LONG (CALLBACK *LPMMIOPROC16)(LPSTR lpmmioinfo, UINT16 uMessage,
LPARAM lParam1, LPARAM lParam2);
typedef LONG (CALLBACK *LPMMIOPROC32)(LPSTR lpmmioinfo, UINT32 uMessage,
LPARAM lParam1, LPARAM lParam2);
DECL_WINELIB_TYPE(LPMMIOPROC);
DECL_WINELIB_TYPE(LPMMIOPROC)
typedef struct {
DWORD dwFlags; /* general status flags */
@ -1916,8 +1916,8 @@ typedef struct {
LPWSTR lpstrAlias;
} MCI_OPEN_PARMS32W, *LPMCI_OPEN_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_OPEN_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_OPEN_PARMS);
DECL_WINELIB_TYPE_AW(MCI_OPEN_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_OPEN_PARMS)
typedef struct {
DWORD dwCallback;
@ -1955,8 +1955,8 @@ typedef struct {
DWORD dwRetSize;
} MCI_INFO_PARMS32W, *LPMCI_INFO_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_INFO_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_INFO_PARMS);
DECL_WINELIB_TYPE_AW(MCI_INFO_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_INFO_PARMS)
typedef struct {
DWORD dwCallback;
@ -1989,8 +1989,8 @@ typedef struct {
UINT32 wDeviceType;
} MCI_SYSINFO_PARMS32W, *LPMCI_SYSINFO_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_SYSINFO_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_SYSINFO_PARMS);
DECL_WINELIB_TYPE_AW(MCI_SYSINFO_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_SYSINFO_PARMS)
typedef struct {
DWORD dwCallback;
@ -2012,8 +2012,8 @@ typedef struct {
HWND32 hwndBreak;
} MCI_BREAK_PARMS32, *LPMCI_BREAK_PARMS32;
DECL_WINELIB_TYPE(MCI_BREAK_PARMS);
DECL_WINELIB_TYPE(LPMCI_BREAK_PARMS);
DECL_WINELIB_TYPE(MCI_BREAK_PARMS)
DECL_WINELIB_TYPE(LPMCI_BREAK_PARMS)
typedef struct {
DWORD dwCallback;
@ -2040,8 +2040,8 @@ typedef struct {
LPCWSTR lpfilename;
} MCI_LOAD_PARMS32W, *LPMCI_LOAD_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_LOAD_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_LOAD_PARMS);
DECL_WINELIB_TYPE_AW(MCI_LOAD_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_LOAD_PARMS)
typedef struct {
DWORD dwCallback;
@ -2114,8 +2114,8 @@ typedef struct {
LPCWSTR lpstrCommand;
} MCI_VD_ESCAPE_PARMS32W, *LPMCI_VD_ESCAPE_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_VD_ESCAPE_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_VD_ESCAPE_PARMS);
DECL_WINELIB_TYPE_AW(MCI_VD_ESCAPE_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_VD_ESCAPE_PARMS)
#define MCI_WAVE_OPEN_BUFFER 0x00010000L
@ -2171,8 +2171,8 @@ typedef struct {
DWORD dwBufferSeconds;
} MCI_WAVE_OPEN_PARMS32W, *LPMCI_WAVE_OPEN_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_WAVE_OPEN_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_WAVE_OPEN_PARMS);
DECL_WINELIB_TYPE_AW(MCI_WAVE_OPEN_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_WAVE_OPEN_PARMS)
typedef struct {
DWORD dwCallback;
@ -2214,8 +2214,8 @@ typedef struct {
UINT32 wBitsPerSample;
} MCI_WAVE_SET_PARMS32, * LPMCI_WAVE_SET_PARMS32;
DECL_WINELIB_TYPE(MCI_WAVE_SET_PARMS);
DECL_WINELIB_TYPE(LPMCI_WAVE_SET_PARMS);
DECL_WINELIB_TYPE(MCI_WAVE_SET_PARMS)
DECL_WINELIB_TYPE(LPMCI_WAVE_SET_PARMS)
#define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET)
#define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET)
@ -2334,8 +2334,8 @@ typedef struct {
HWND32 hWndParent;
} MCI_ANIM_OPEN_PARMS32W, *LPMCI_ANIM_OPEN_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_ANIM_OPEN_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_ANIM_OPEN_PARMS);
DECL_WINELIB_TYPE_AW(MCI_ANIM_OPEN_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_ANIM_OPEN_PARMS)
typedef struct {
DWORD dwCallback;
@ -2372,8 +2372,8 @@ typedef struct {
LPCWSTR lpstrText;
} MCI_ANIM_WINDOW_PARMS32W, *LPMCI_ANIM_WINDOW_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_ANIM_WINDOW_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_ANIM_WINDOW_PARMS);
DECL_WINELIB_TYPE_AW(MCI_ANIM_WINDOW_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_ANIM_WINDOW_PARMS)
typedef struct {
DWORD dwCallback;
@ -2395,8 +2395,8 @@ typedef struct {
#endif /* ifdef MCI_USE_OFFEXT */
} MCI_ANIM_RECT_PARMS32, *LPMCI_ANIM_RECT_PARMS32;
DECL_WINELIB_TYPE(MCI_ANIM_RECT_PARMS);
DECL_WINELIB_TYPE(LPMCI_ANIM_RECT_PARMS);
DECL_WINELIB_TYPE(MCI_ANIM_RECT_PARMS)
DECL_WINELIB_TYPE(LPMCI_ANIM_RECT_PARMS)
typedef struct {
DWORD dwCallback;
@ -2410,8 +2410,8 @@ typedef struct {
HDC32 hDC;
} MCI_ANIM_UPDATE_PARMS32, *LPMCI_ANIM_UPDATE_PARMS32;
DECL_WINELIB_TYPE(MCI_ANIM_UPDATE_PARMS);
DECL_WINELIB_TYPE(LPMCI_ANIM_UPDATE_PARMS);
DECL_WINELIB_TYPE(MCI_ANIM_UPDATE_PARMS)
DECL_WINELIB_TYPE(LPMCI_ANIM_UPDATE_PARMS)
#define MCI_OVLY_OPEN_WS 0x00010000L
#define MCI_OVLY_OPEN_PARENT 0x00020000L
@ -2476,8 +2476,8 @@ typedef struct {
HWND32 hWndParent;
} MCI_OVLY_OPEN_PARMS32W, *LPMCI_OVLY_OPEN_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_OVLY_OPEN_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_OVLY_OPEN_PARMS);
DECL_WINELIB_TYPE_AW(MCI_OVLY_OPEN_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_OVLY_OPEN_PARMS)
typedef struct {
DWORD dwCallback;
@ -2502,8 +2502,8 @@ typedef struct {
LPCWSTR lpstrText;
} MCI_OVLY_WINDOW_PARMS32W, *LPMCI_OVLY_WINDOW_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_OVLY_WINDOW_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_OVLY_WINDOW_PARMS);
DECL_WINELIB_TYPE_AW(MCI_OVLY_WINDOW_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_OVLY_WINDOW_PARMS)
typedef struct {
DWORD dwCallback;
@ -2525,8 +2525,8 @@ typedef struct {
#endif /* ifdef MCI_USE_OFFEXT */
} MCI_OVLY_RECT_PARMS32, *LPMCI_OVLY_RECT_PARMS32;
DECL_WINELIB_TYPE(MCI_OVLY_RECT_PARMS);
DECL_WINELIB_TYPE(LPMCI_OVLY_RECT_PARMS);
DECL_WINELIB_TYPE(MCI_OVLY_RECT_PARMS)
DECL_WINELIB_TYPE(LPMCI_OVLY_RECT_PARMS)
typedef struct {
DWORD dwCallback;
@ -2546,8 +2546,8 @@ typedef struct {
RECT32 rc;
} MCI_OVLY_SAVE_PARMS32W, *LPMCI_OVLY_SAVE_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_OVLY_SAVE_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_OVLY_SAVE_PARMS);
DECL_WINELIB_TYPE_AW(MCI_OVLY_SAVE_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_OVLY_SAVE_PARMS)
typedef struct {
DWORD dwCallback;
@ -2567,8 +2567,8 @@ typedef struct {
RECT32 rc;
} MCI_OVLY_LOAD_PARMS32W, *LPMCI_OVLY_LOAD_PARMS32W;
DECL_WINELIB_TYPE_AW(MCI_OVLY_LOAD_PARMS);
DECL_WINELIB_TYPE_AW(LPMCI_OVLY_LOAD_PARMS);
DECL_WINELIB_TYPE_AW(MCI_OVLY_LOAD_PARMS)
DECL_WINELIB_TYPE_AW(LPMCI_OVLY_LOAD_PARMS)
/**************************************************************
* Linux MMSYSTEM Internals & Sample Audio Drivers

View File

@ -65,6 +65,8 @@ typedef struct
/* Self-loading modules contain this structure in their first segment */
#pragma pack(1)
typedef struct
{
WORD version; /* Must be 0xA0 */
@ -80,8 +82,6 @@ typedef struct
FARPROC16 SetOwner; /* Set Owner procedure, exported by wine */
} SELFLOADHEADER;
#pragma pack(1)
/* Parameters for LoadModule() */
typedef struct
{
@ -102,7 +102,7 @@ typedef struct
#pragma pack(4)
/* internal representation of 32bit modules. per process. */
typedef enum { MODULE32_PE=1, MODULE32_ELF, /* ... */ } MODULE32_TYPE;
typedef enum { MODULE32_PE=1, MODULE32_ELF /* ,... */ } MODULE32_TYPE;
typedef struct _wine_modref
{
struct _wine_modref *next;

View File

@ -73,4 +73,8 @@ typedef struct {
HLOCAL16 hMidiHdr;
WORD dwStatus;
} LINUX_MCIMIDI;
/* function prototypes */
extern BOOL32 MULTIMEDIA_Init( void );
#endif /* __WINE_MULTIMEDIA_H */

View File

@ -17,11 +17,11 @@ typedef OLECHAR32 *BSTR32;
typedef BSTR32 *LPBSTR32;
typedef LPWSTR LPOLESTR32;
typedef LPCWSTR LPCOLESTR32;
DECL_WINELIB_TYPE(OLECHAR);
DECL_WINELIB_TYPE(LPOLESTR);
DECL_WINELIB_TYPE(LPCOLESTR);
DECL_WINELIB_TYPE(BSTR);
DECL_WINELIB_TYPE(LPBSTR);
DECL_WINELIB_TYPE(OLECHAR)
DECL_WINELIB_TYPE(LPOLESTR)
DECL_WINELIB_TYPE(LPCOLESTR)
DECL_WINELIB_TYPE(BSTR)
DECL_WINELIB_TYPE(LPBSTR)
#define OLESTR16(x) x
#define OLESTR32(x) L##x /* probably wrong */

View File

@ -130,6 +130,7 @@ extern BOOL32 HANDLE_SetObjPtr( PDB32 *pdb, HANDLE32 handle,
extern void HANDLE_CloseAll( PDB32 *pdb, K32OBJ *ptr );
/* scheduler/process.c */
extern BOOL32 PROCESS_Init( void );
extern PDB32 *PROCESS_Current(void);
extern PDB32 *PROCESS_GetPtr( HANDLE32 handle, DWORD access );
extern PDB32 *PROCESS_IdToPDB( DWORD id );

View File

@ -95,6 +95,7 @@ extern BOOL32 QUEUE_AddMsg( HQUEUE16 hQueue, MSG16 * msg, DWORD extraInfo );
extern int QUEUE_FindMsg( MESSAGEQUEUE * msgQueue, HWND32 hwnd,
int first, int last );
extern void QUEUE_RemoveMsg( MESSAGEQUEUE * msgQueue, int pos );
extern void QUEUE_FlushMessages(HQUEUE16);
extern void hardware_event( WORD message, WORD wParam, LONG lParam,
int xPos, int yPos, DWORD time, DWORD extraInfo );

View File

@ -9,14 +9,24 @@
#include "windows.h"
struct resource
{
int id;
int type;
const char *name;
const unsigned char* bytes;
unsigned size;
};
#ifndef __WRC_RSC_H
#include "wrc_rsc.h"
#endif
/*
* BS: I comment this out to catch all occurences
* of reference to this structure which is now
* rendered obsolete.
*
* struct resource
* {
* int id;
* int type;
* const char *name;
* const unsigned char* bytes;
* unsigned size;
* };
*/
/* Built-in resources */
typedef enum
@ -35,7 +45,7 @@ typedef enum
SYSRES_DIALOG_REPLACE_TEXT
} SYSTEM_RESOURCE;
extern void LIBRES_RegisterResources(const struct resource* const * Res);
extern void LIBRES_RegisterResources(const wrc_resource32_t * const * Res);
#if defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)
#define WINE_CONSTRUCTOR __attribute__((constructor))

View File

@ -58,7 +58,7 @@ typedef struct tagSHFILEINFO32W {
WCHAR szTypeName[80]; /* type name */
} SHFILEINFO32W;
DECL_WINELIB_TYPE_AW(SHFILEINFO);
DECL_WINELIB_TYPE_AW(SHFILEINFO)
typedef struct _AppBarData {
DWORD cbSize;

View File

@ -124,6 +124,7 @@ typedef struct _CONTEXT /* Note 1 */
#define FS_sig(context) ((context)->sc_fs)
#define GS_sig(context) ((context)->sc_gs)
#define CR2_sig(context) ((context)->cr2)
#define TRAP_sig(context) ((context)->sc_trapno)
#endif
#ifndef __FreeBSD__

View File

@ -1,7 +1,7 @@
/*
* 16-bit mode stack frame layout
* 16-bit and 32-bit mode stack frame layout
*
* Copyright 1995 Alexandre Julliard
* Copyright 1995, 1998 Alexandre Julliard
*/
#ifndef __WINE_STACKFRAME_H
@ -78,4 +78,13 @@ typedef void *VA_LIST16;
sizeof(STACK16FRAME)), \
(thdb)->cur_stack += (size))
/* Push a DWORD on the 32-bit stack */
#define STACK32_PUSH(context,val) (*--((DWORD *)ESP_reg(context)) = (val))
/* Pop a DWORD from the 32-bit stack */
#define STACK32_POP(context) (*((DWORD *)ESP_reg(context))++)
/* Win32 register functions */
#define REGS_ENTRYPOINT(name) void WINAPI __regs_##name( CONTEXT *context )
#endif /* __WINE_STACKFRAME_H */

View File

@ -42,7 +42,7 @@ struct storage_pps_entry {
typedef LPOLESTR16 *SNB16;
typedef LPOLESTR32 *SNB32;
DECL_WINELIB_TYPE(SNB);
DECL_WINELIB_TYPE(SNB)
typedef struct IStorage16 IStorage16,*LPSTORAGE16;
typedef struct IStorage32 IStorage32,*LPSTORAGE32;

View File

@ -139,6 +139,7 @@ extern void MUTEX_Abandon( K32OBJ *obj );
/* scheduler/synchro.c */
extern void SYNC_WaitForCondition( WAIT_STRUCT *wait, DWORD timeout );
extern void SYNC_WakeUp( THREAD_QUEUE *queue, DWORD max );
extern void SYNC_SetupSignals(void);
/* scheduler/sysdeps.c */
extern int SYSDEPS_SpawnThread( THDB *thread );

55
include/toolbar.h Normal file
View File

@ -0,0 +1,55 @@
/*
* Toolbar class extra info
*
* Copyright 1998 Eric Kohl
*/
#ifndef __WINE_TOOLBAR_H
#define __WINE_TOOLBAR_H
typedef struct tagTBUTTON_INFO
{
INT32 iBitmap;
INT32 idCommand;
BYTE fsState;
BYTE fsStyle;
DWORD dwData;
INT32 iString;
RECT32 rect;
} TBUTTON_INFO;
typedef struct tagTOOLBAR_INFO
{
DWORD dwStructSize; /* Size of TBBUTTON-Struct */
INT32 nHeight; /* Height of the Toolbar */
INT32 nWidth; /* Width of the Toolbar */
INT32 nButtonTop; /* top of the button rectangle */
INT32 nButtonHeight;
INT32 nButtonWidth;
INT32 nBitmapHeight;
INT32 nBitmapWidth;
INT32 nIndent;
INT32 nNumButtons; /* Number of buttons */
INT32 nNumBitmaps;
INT32 nNumStrings;
BOOL32 bCaptured;
INT32 nButtonDown;
INT32 nOldHit;
HIMAGELIST himlDef; /* default image list */
HIMAGELIST himlHot; /* hot image list */
HIMAGELIST himlDis; /* disabled image list */
TBUTTON_INFO *buttons;
} TOOLBAR_INFO;
extern void TOOLBAR_Register (void);
#endif /* __WINE_TOOLBAR_H */

View File

@ -1 +1 @@
#define WINE_RELEASE_INFO "Wine release 980517"
#define WINE_RELEASE_INFO "Wine release 980601"

View File

@ -129,6 +129,10 @@ extern BOOL32 WIN_IsWindowDrawable(WND*, BOOL32 );
extern HINSTANCE32 WIN_GetWindowInstance( HWND32 hwnd );
extern WND** WIN_BuildWinArray( WND *wndPtr, UINT32 bwa, UINT32* pnum );
extern HWND32 CARET_GetHwnd(void);
extern void CARET_GetRect(LPRECT32 lprc); /* windows/caret.c */
extern BOOL16 DRAG_QueryUpdate( HWND32, SEGPTR, BOOL32 );
extern void DEFWND_SetText( WND *wndPtr, LPCSTR text );
extern HBRUSH32 DEFWND_ControlColor( HDC32 hDC, UINT16 ctlType ); /* windows/defwnd.c */
@ -138,9 +142,17 @@ extern BOOL32 PAINT_RedrawWindow( HWND32 hwnd, const RECT32 *rectUpdate,
HRGN32 hrgnUpdate, UINT32 flags,
UINT32 control ); /* windows/painting.c */
extern BOOL32 WIDGETS_IsControl32( WND* pWnd, BUILTIN_CLASS32 cls ); /* controls/widgets.c */
/* controls/widgets.c */
extern BOOL32 WIDGETS_Init( void );
extern BOOL32 WIDGETS_IsControl32( WND* pWnd, BUILTIN_CLASS32 cls );
extern HWND32 ICONTITLE_Create( WND* ); /* controls/icontitle.c */
/* controls/icontitle.c */
extern HWND32 ICONTITLE_Create( WND* );
extern BOOL32 ICONTITLE_Init( void );
/* windows/focus.c */
extern void FOCUS_SetXFocus( HWND32 );
extern void FOCUS_SwitchFocus( HWND32 , HWND32 );
extern Display * display;
extern Screen * screen;

View File

@ -203,6 +203,7 @@ extern WORD PRTDRV_GetCharWidth(LPPDEVICE lpDestDev, LPINT32 lpBuffer,
/* Wine driver functions */
extern BOOL32 WIN16DRV_Init(void);
extern BOOL32 WIN16DRV_GetCharWidth( struct tagDC *dc, UINT32 firstChar, UINT32 lastChar,
LPINT32 buffer );

View File

@ -178,6 +178,7 @@ void WINAPI EnterCriticalSection(CRITICAL_SECTION *lpCrit);
void WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit);
void WINAPI LeaveCriticalSection(CRITICAL_SECTION *lpCrit);
HANDLE32 WINAPI OpenProcess(DWORD access, BOOL32 inherit, DWORD id);
void WINAPI RaiseException(DWORD,DWORD,DWORD,const LPDWORD);
int WINAPI TerminateProcess(HANDLE32 h, int ret);
#endif /* __WINE_WINBASE_H */

View File

@ -5,7 +5,10 @@
extern "C" {
#endif
#ifndef RC_INVOKED
#include <stdarg.h>
#endif
#include "wintypes.h"
#pragma pack(1)
@ -2498,7 +2501,7 @@ typedef struct tagCOMSTAT
#define CSTF_TXIM 0x40
/* SystemParametersInfo */
/* defines below are for all win versions */
#define SPI_GETBEEP 1
#define SPI_SETBEEP 2
#define SPI_GETMOUSE 3
@ -2532,17 +2535,7 @@ typedef struct tagCOMSTAT
#define SPI_SETICONTITLELOGFONT 34
#define SPI_GETFASTTASKSWITCH 35
#define SPI_SETFASTTASKSWITCH 36
#define SPI_SETDRAGFULLWINDOWS 37
#define SPI_GETDRAGFULLWINDOWS 38
#define SPI_GETNONCLIENTMETRICS 41
#define SPI_SETNONCLIENTMETRICS 42
#define SPI_GETMINIMIZEDMETRICS 43
#define SPI_SETMINIMIZEDMETRICS 44
#define SPI_GETICONMETRICS 45
#define SPI_SETICONMETRICS 46
#define SPI_SETWORKAREA 47
#define SPI_GETWORKAREA 48
#define SPI_SETPENWINDOWS 49
#define SPI_GETFILTERKEYS 50
#define SPI_SETFILTERKEYS 51
#define SPI_GETTOGGLEKEYS 52
@ -2555,10 +2548,25 @@ typedef struct tagCOMSTAT
#define SPI_SETSTICKYKEYS 59
#define SPI_GETACCESSTIMEOUT 60
#define SPI_SETACCESSTIMEOUT 61
#define SPI_GETSERIALKEYS 62
#define SPI_SETSERIALKEYS 63
#define SPI_GETSOUNDSENTRY 64
#define SPI_SETSOUNDSENTRY 65
/* defines below are for all win versions WINVER >= 0x0400 */
#define SPI_SETDRAGFULLWINDOWS 37
#define SPI_GETDRAGFULLWINDOWS 38
#define SPI_GETNONCLIENTMETRICS 41
#define SPI_SETNONCLIENTMETRICS 42
#define SPI_GETMINIMIZEDMETRICS 43
#define SPI_SETMINIMIZEDMETRICS 44
#define SPI_GETICONMETRICS 45
#define SPI_SETICONMETRICS 46
#define SPI_SETWORKAREA 47
#define SPI_GETWORKAREA 48
#define SPI_SETPENWINDOWS 49
#define SPI_GETSERIALKEYS 62
#define SPI_SETSERIALKEYS 63
#define SPI_GETHIGHCONTRAST 66
#define SPI_SETHIGHCONTRAST 67
#define SPI_GETKEYBOARDPREF 68
@ -2588,12 +2596,78 @@ typedef struct tagCOMSTAT
#define SPI_GETWINDOWSEXTENSION 92
#define SPI_SETMOUSETRAILS 93
#define SPI_GETMOUSETRAILS 94
#define SPI_SCREENSAVERRUNNING 97
#define SPI_SETSCREENSAVERRUNNING 97
#define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING
/* defines below are for all win versions (_WIN32_WINNT >= 0x0400) ||
* (_WIN32_WINDOWS > 0x0400) */
#define SPI_GETMOUSEHOVERWIDTH 98
#define SPI_SETMOUSEHOVERWIDTH 99
#define SPI_GETMOUSEHOVERHEIGHT 100
#define SPI_SETMOUSEHOVERHEIGHT 101
#define SPI_GETMOUSEHOVERTIME 102
#define SPI_SETMOUSEHOVERTIME 103
#define SPI_GETWHEELSCROLLLINES 104
#define SPI_SETWHEELSCROLLLINES 105
#define SPI_GETSHOWIMEUI 110
#define SPI_SETSHOWIMEUI 111
/* defines below are for all win versions WINVER >= 0x0500 */
#define SPI_GETMOUSESPEED 112
#define SPI_SETMOUSESPEED 113
#define SPI_GETSCREENSAVERRUNNING 114
#define SPI_GETACTIVEWINDOWTRACKING 0x1000
#define SPI_SETACTIVEWINDOWTRACKING 0x1001
#define SPI_GETMENUANIMATION 0x1002
#define SPI_SETMENUANIMATION 0x1003
#define SPI_GETCOMBOBOXANIMATION 0x1004
#define SPI_SETCOMBOBOXANIMATION 0x1005
#define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
#define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
#define SPI_GETGRADIENTCAPTIONS 0x1008
#define SPI_SETGRADIENTCAPTIONS 0x1009
#define SPI_GETMENUUNDERLINES 0x100A
#define SPI_SETMENUUNDERLINES 0x100B
#define SPI_GETACTIVEWNDTRKZORDER 0x100C
#define SPI_SETACTIVEWNDTRKZORDER 0x100D
#define SPI_GETHOTTRACKING 0x100E
#define SPI_SETHOTTRACKING 0x100F
#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
#define SPI_GETACTIVEWNDTRKTIMEOUT 0x2002
#define SPI_SETACTIVEWNDTRKTIMEOUT 0x2003
#define SPI_GETFOREGROUNDFLASHCOUNT 0x2004
#define SPI_SETFOREGROUNDFLASHCOUNT 0x2005
/* SystemParametersInfo flags */
#define SPIF_UPDATEINIFILE 1
#define SPIF_SENDWININICHANGE 2
#define SPIF_UPDATEINIFILE 1
#define SPIF_SENDWININICHANGE 2
#define SPIF_SENDCHANGE SPIF_SENDWININICHANGE
/* flags for HIGHCONTRAST dwFlags field */
#define HCF_HIGHCONTRASTON 0x00000001
#define HCF_AVAILABLE 0x00000002
#define HCF_HOTKEYACTIVE 0x00000004
#define HCF_CONFIRMHOTKEY 0x00000008
#define HCF_HOTKEYSOUND 0x00000010
#define HCF_INDICATOR 0x00000020
#define HCF_HOTKEYAVAILABLE 0x00000040
typedef struct tagHIGHCONTRASTA
{
UINT32 cbSize;
DWORD dwFlags;
LPSTR lpszDefaultScheme;
} HIGHCONTRASTA, *LPHIGHCONTRASTA;
typedef struct tagHIGHCONTRASTW
{
UINT32 cbSize;
DWORD dwFlags;
LPWSTR lpszDefaultScheme;
} HIGHCONTRASTW, *LPHIGHCONTRASTW;
/* GetFreeSystemResources() parameters */
@ -3622,6 +3696,7 @@ DECL_WINELIB_TYPE(DRAWSTATEPROC)
#define SS_TYPEMASK 0x0000001FL
#define SS_NOPREFIX 0x00000080L
#define SS_NOTIFY 0x00000100L
#define SS_CENTERIMAGE 0x00000200L
#define SS_RIGHTJUST 0x00000400L
#define SS_REALSIZEIMAGE 0x00000800L
@ -4446,9 +4521,19 @@ DECL_WINELIB_TYPE(LPCOMPAREITEMSTRUCT)
#define VK_LMENU 0xA4
#define VK_RMENU 0xA5
/* 0xA6-0xB9 Unassigned */
/* 0xBA-0xC0 OEM specific */
#define VK_OEM_1 0xBA
#define VK_OEM_PLUS 0xBB
#define VK_OEM_COMMA 0xBC
#define VK_OEM_MINUS 0xBD
#define VK_OEM_PERIOD 0xBE
#define VK_OEM_2 0xBF
#define VK_OEM_3 0xC0
/* 0xC1-0xDA Unassigned */
/* 0xDB-0xE4 OEM specific */
#define VK_OEM_4 0xDB
#define VK_OEM_5 0xDC
#define VK_OEM_6 0xDD
#define VK_OEM_7 0xDE
/* 0xDF-0xE4 OEM specific */
#define VK_PROCESSKEY 0xE5
@ -5948,6 +6033,19 @@ typedef struct _numberfmt32w {
UINT32 NegativeOrder;
} NUMBERFMT32W;
typedef enum _GET_FILEEX_INFO_LEVELS {
GetFileExInfoStandard
} GET_FILEEX_INFO_LEVELS;
typedef struct _WIN32_FILE_ATTRIBUTES_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
} WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;
@ -6239,6 +6337,9 @@ LPWSTR WINAPI GetEnvironmentStrings32W(void);
DWORD WINAPI GetEnvironmentVariable32A(LPCSTR,LPSTR,DWORD);
DWORD WINAPI GetEnvironmentVariable32W(LPCWSTR,LPWSTR,DWORD);
#define GetEnvironmentVariable WINELIB_NAME_AW(GetEnvironmentVariable)
BOOL32 WINAPI GetFileAttributesEx32A(LPCSTR,GET_FILEEX_INFO_LEVELS,LPVOID);
BOOL32 WINAPI GetFileAttributesEx32W(LPCWSTR,GET_FILEEX_INFO_LEVELS,LPVOID);
#define GetFileattributesEx WINELIB_NAME_AW(GetFileAttributesEx)
DWORD WINAPI GetFileInformationByHandle(HFILE32,BY_HANDLE_FILE_INFORMATION*);
DWORD WINAPI GetFileSize(HFILE32,LPDWORD);
BOOL32 WINAPI GetFileTime(HFILE32,LPFILETIME,LPFILETIME,LPFILETIME);
@ -6366,6 +6467,9 @@ BOOL32 WINAPI QueryPerformanceCounter(LPLARGE_INTEGER);
BOOL32 WINAPI ReadConsole32A(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID);
BOOL32 WINAPI ReadConsole32W(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID);
#define ReadConsole WINELIB_NAME_AW(ReadConsole)
BOOL32 WINAPI ReadConsoleOutputCharacter32A(HANDLE32,LPSTR,DWORD,
COORD,LPDWORD);
#define ReadConsoleOutputCharacter WINELIB_NAME_AW(ReadConsoleOutputCharacter)
BOOL32 WINAPI ReadFile(HANDLE32,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
LONG WINAPI RegConnectRegistry32A(LPCSTR,HKEY,LPHKEY);
LONG WINAPI RegConnectRegistry32W(LPCWSTR,HKEY,LPHKEY);
@ -6398,6 +6502,19 @@ DWORD WINAPI RegQueryInfoKey32A(HKEY,LPSTR,LPDWORD,LPDWORD,LPDWORD,
LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,
LPDWORD,LPFILETIME);
#define RegQueryInfoKey WINELIB_NAME_AW(RegQueryInfoKey)
LONG WINAPI RegReplaceKey32A(HKEY,LPCSTR,LPCSTR,LPCSTR);
LONG WINAPI RegReplaceKey32W(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
#define RegReplaceKey WINELIB_NAME_AW(RegReplaceKey)
LONG WINAPI RegRestoreKey32A(HKEY,LPCSTR,DWORD);
LONG WINAPI RegRestoreKey32W(HKEY,LPCWSTR,DWORD);
#define RegRestoreKey WINELIB_NAME_AW(RegRestoreKey)
LONG WINAPI RegSaveKey32A(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES);
LONG WINAPI RegSaveKey32W(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES);
#define RegSaveKey WINELIB_NAME_AW(RegSaveKey)
LONG WINAPI RegSetKeySecurity(HKEY,SECURITY_INFORMATION,LPSECURITY_DESCRIPTOR);
LONG WINAPI RegUnLoadKey32A(HKEY,LPCSTR);
LONG WINAPI RegUnLoadKey32W(HKEY,LPCWSTR);
#define RegUnLoadKey WINELIB_NAME_AW(RegUnLoadKey)
BOOL32 WINAPI ReleaseSemaphore(HANDLE32,LONG,LPLONG);
BOOL32 WINAPI ResetEvent(HANDLE32);
VOID WINAPI RtlFillMemory(LPVOID,UINT32,UINT32);
@ -8737,9 +8854,9 @@ BOOL16 WINAPI WinHelp16(HWND16,LPCSTR,UINT16,DWORD);
BOOL32 WINAPI WinHelp32A(HWND32,LPCSTR,UINT32,DWORD);
BOOL32 WINAPI WinHelp32W(HWND32,LPCWSTR,UINT32,DWORD);
#define WinHelp WINELIB_NAME_AW(WinHelp)
UINT16 WNetAddConnection16(LPSTR,LPSTR,LPSTR);
UINT32 WNetAddConnection32A(LPSTR,LPSTR,LPSTR);
UINT32 WNetAddConnection32W(LPWSTR,LPWSTR,LPWSTR);
UINT16 WINAPI WNetAddConnection16(LPCSTR,LPCSTR,LPCSTR);
UINT32 WINAPI WNetAddConnection32A(LPCSTR,LPCSTR,LPCSTR);
UINT32 WINAPI WNetAddConnection32W(LPCWSTR,LPCWSTR,LPCWSTR);
#define WNetAddConnection WINELIB_NAME_AW(WNetAddConnection)
INT16 WINAPIV wsnprintf16(LPSTR,UINT16,LPCSTR,...);
INT32 WINAPIV wsnprintf32A(LPSTR,UINT32,LPCSTR,...);

View File

@ -116,18 +116,29 @@
#define NORM_IGNORENONSPACE 2
#define NORM_IGNORESYMBOLS 4
#define NORM_STRINGSORT 0x1000
#define NORM_IGNOREKANATYPE 0x00010000
#define NORM_IGNOREWIDTH 0x00020000
#define CP_ACP 0
#define CP_OEMCP 1
#define CP_ACP 0
#define CP_OEMCP 1
#define WC_DEFAULTCHECK 0x00000100
#define WC_COMPOSITECHECK 0x00000200
#define WC_DISCARDNS 0x00000010
#define WC_SEPCHARS 0x00000020
#define WC_SEPCHARS 0x00000020
#define WC_DEFAULTCHAR 0x00000040
#define MAKELCID(l, s) (MAKELONG(l, s))
#define MAKELANGID(p, s) ((((WORD)(s))<<10) | (WORD)(p))
#define MAKELCID(l, s) (MAKELONG(l, s))
#define MAKELANGID(p, s) ((((WORD)(s))<<10) | (WORD)(p))
#define PRIMARYLANGID(l) ((WORD)(l) & 0x3ff)
#define SUBLANGID(l) ((WORD)(l) >> 10)
#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT))
#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT))
/* Language IDs (were in winnt.h, for some reason) */
@ -178,17 +189,86 @@
#define LANG_TURKISH 0x1f
#define LANG_UKRAINIAN 0x22
/* "default"ish values */
/* Sublanguage definitions */
#define SUBLANG_NEUTRAL 0x00 /* language neutral */
#define SUBLANG_DEFAULT 0x01 /* user default */
#define SUBLANG_SYS_DEFAULT 0x02 /* system default */
#define SORT_DEFAULT 0
#define SUBLANG_DEFAULT 1
#define SUBLANG_SYS_DEFAULT 1 /* FIXME: I don't know if this is right */
#define SUBLANG_ARABIC 0x01
#define SUBLANG_ARABIC_IRAQ 0x02
#define SUBLANG_ARABIC_EGYPT 0x03
#define SUBLANG_ARABIC_LIBYA 0x04
#define SUBLANG_ARABIC_ALGERIA 0x05
#define SUBLANG_ARABIC_MOROCCO 0x06
#define SUBLANG_ARABIC_TUNISIA 0x07
#define SUBLANG_ARABIC_OMAN 0x08
#define SUBLANG_ARABIC_YEMEN 0x09
#define SUBLANG_ARABIC_SYRIA 0x10
#define SUBLANG_ARABIC_JORDAN 0x11
#define SUBLANG_ARABIC_LEBANON 0x12
#define SUBLANG_ARABIC_KUWAIT 0x13
#define SUBLANG_ARABIC_UAE 0x14
#define SUBLANG_ARABIC_BAHRAIN 0x15
#define SUBLANG_ARABIC_QATAR 0x16
#define SUBLANG_CHINESE_TRADITIONAL 0x01
#define SUBLANG_CHINESE_SIMPLIFIED 0x02
#define SUBLANG_CHINESE_HONGKONG 0x03
#define SUBLANG_CHINESE_SINGAPORE 0x04
#define SUBLANG_DUTCH 0x01
#define SUBLANG_DUTCH_BELGIAN 0x02
#define SUBLANG_ENGLISH_US 0x01
#define SUBLANG_ENGLISH_UK 0x02
#define SUBLANG_ENGLISH_AUS 0x03
#define SUBLANG_ENGLISH_CAN 0x04
#define SUBLANG_ENGLISH_NZ 0x05
#define SUBLANG_ENGLISH_EIRE 0x06
#define SUBLANG_ENGLISH_SAFRICA 0x07
#define SUBLANG_ENGLISH_JAMAICA 0x08
#define SUBLANG_ENGLISH_CARRIBEAN 0x09
#define SUBLANG_FRENCH 0x01
#define SUBLANG_FRENCH_BELGIAN 0x02
#define SUBLANG_FRENCH_CANADIAN 0x03
#define SUBLANG_FRENCH_SWISS 0x04
#define SUBLANG_FRENCH_LUXEMBOURG 0x05
#define SUBLANG_GERMAN 0x01
#define SUBLANG_GERMAN_SWISS 0x02
#define SUBLANG_GERMAN_AUSTRIAN 0x03
#define SUBLANG_GERMAN_LUXEMBOURG 0x04
#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
#define SUBLANG_ITALIAN 0x01
#define SUBLANG_ITALIAN_SWISS 0x02
#define SUBLANG_KOREAN 0x01
#define SUBLANG_KOREAN_JOHAB 0x02
#define SUBLANG_NORWEGIAN_BOKMAL 0x01
#define SUBLANG_NORWEGIAN_NYNORSK 0x02
#define SUBLANG_PORTUGUESE 0x02
#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
#define SUBLANG_SPANISH 0x01
#define SUBLANG_SPANISH_MEXICAN 0x02
#define SUBLANG_SPANISH_MODERN 0x03
#define SUBLANG_SPANISH_GUATEMALA 0x04
#define SUBLANG_SPANISH_COSTARICA 0x05
#define SUBLANG_SPANISH_PANAMA 0x06
#define SUBLANG_SPANISH_DOMINICAN 0x07
#define SUBLANG_SPANISH_VENEZUELA 0x08
#define SUBLANG_SPANISH_COLOMBIA 0x09
#define SUBLANG_SPANISH_PERU 0x10
#define SUBLANG_SPANISH_ARGENTINA 0x11
#define SUBLANG_SPANISH_ECUADOR 0x12
#define SUBLANG_SPANISH_CHILE 0x13
#define SUBLANG_SPANISH_URUGUAY 0x14
#define SUBLANG_SPANISH_PARAGUAY 0x15
#define SUBLANG_SPANISH_BOLIVIA 0x16
/* Sort definitions */
#define SORT_DEFAULT 0x0
#define SORT_JAPANESE_XJIS 0x0
#define SORT_JAPANESE_UNICODE 0x1
#define SORT_CHINESE_BIG5 0x0
#define SORT_CHINESE_UNICODE 0x1
#define SORT_KOREAN_KSC 0x0
#define SORT_KOREAN_UNICODE 0x1
#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT))
#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT))
/* Locale Dependent Mapping Flags */
#define LCMAP_LOWERCASE 0x00000100 /* lower case letters */
@ -196,6 +276,8 @@
#define LCMAP_SORTKEY 0x00000400 /* WC sort key (normalize) */
#define LCMAP_BYTEREV 0x00000800 /* byte reversal */
#define SORT_STRINGSORT 0x00001000 /* take punctuation into account */
#define LCMAP_HIRAGANA 0x00100000 /* map katakana to hiragana */
#define LCMAP_KATAKANA 0x00200000 /* map hiragana to katakana */
#define LCMAP_HALFWIDTH 0x00400000 /* map double byte to single byte */
@ -216,5 +298,21 @@
/* use this in a WineLib program if you really want all types */
#define LOCALE_TIMEDATEBOTH 0x00000300 /* full set */
/* Prototypes for Unicode case conversion routines */
WCHAR towupper(WCHAR);
WCHAR towlower(WCHAR);
/* Definitions for IsTextUnicode() function */
#define IS_TEXT_UNICODE_ASCII16 0x0001
#define IS_TEXT_UNICODE_SIGNATURE 0x0008
#define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010
#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080
#define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100
#define IS_TEXT_UNICODE_ODD_LENGTH 0x0200
/* Tests that we currently implement */
#define ITU_IMPLEMENTED_TESTS \
IS_TEXT_UNICODE_SIGNATURE| \
IS_TEXT_UNICODE_ODD_LENGTH
#endif /* __WINE_WINNLS_H */

View File

@ -356,4 +356,11 @@ WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter );
#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_EXECUTE | \
FILE_READ_ATTRIBUTES | SYNCHRONIZE)
/* Registry security values */
#define OWNER_SECURITY_INFORMATION 0x00000001
#define GROUP_SECURITY_INFORMATION 0x00000002
#define DACL_SECURITY_INFORMATION 0x00000004
#define SACL_SECURITY_INFORMATION 0x00000008
#endif /* __WINE_WINNT_H */

View File

@ -15,6 +15,7 @@
#include <netdb.h>
#include <sys/socket.h>
#include "windows.h"
#include "task.h"
#pragma pack(1)
@ -164,8 +165,8 @@ typedef struct WSAData {
#define INVALID_SOCKET32 (~0)
#define SOCKET_ERROR (-1)
DECL_WINELIB_TYPE(INVALID_SOCKET);
DECL_WINELIB_TYPE(SOCKET);
DECL_WINELIB_TYPE(INVALID_SOCKET)
DECL_WINELIB_TYPE(SOCKET)
/*
* Types
@ -563,6 +564,7 @@ typedef struct _WSINFO
HTASK16 tid; /* owning task id - process might be better */
} WSINFO, *LPWSINFO;
/* function prototypes */
int WS_dup_he(LPWSINFO pwsi, struct hostent* p_he, int flag);
int WS_dup_pe(LPWSINFO pwsi, struct protoent* p_pe, int flag);
int WS_dup_se(LPWSINFO pwsi, struct servent* p_se, int flag);
@ -571,6 +573,11 @@ void WS_do_async_gethost(LPWSINFO, unsigned);
void WS_do_async_getproto(LPWSINFO, unsigned);
void WS_do_async_getserv(LPWSINFO, unsigned);
/* winsock_dns.c */
extern HANDLE16 __WSAsyncDBQuery(LPWSINFO pwsi, HWND32 hWnd, UINT32 uMsg,
INT32 type, LPCSTR init, INT32 len, LPCSTR proto, void* sbuf,
INT32 buflen, UINT32 flag);
int WINSOCK_async_io(int fd, int async);
int WINSOCK_unblock_io(int fd, int noblock);
@ -586,5 +593,7 @@ void WINSOCK_Shutdown(void);
UINT16 wsaErrno(void);
UINT16 wsaHerrno(void);
extern INT32 WINSOCK_DeleteTaskWSI( TDB* pTask, struct _WSINFO* );
#endif /* _WINSOCKAPI_ */

46
include/wrc_rsc.h Normal file
View File

@ -0,0 +1,46 @@
/*
* Wine Resource Compiler structure definitions
*
* Copyright 1998 Bertho A. Stultiens
*
*/
#if !defined(__WRC_RSC_H) && !defined(__WINE_WRC_RSC_H)
#define __WRC_RSC_H
#define __WINE_WRC_RSC_H
#ifndef __WINE_WINTYPES_H
#include <wintypes.h> /* For types in structure */
#endif
/*
* Note on the resource and type names:
*
* These are (if non-null) pointers to a pascal-style
* string. The first character (BYTE for 16 bit and WCHAR
* for 32 bit resources) contains the length and the
* rest is the string. They are _not_ '\0' terminated!
*/
typedef struct wrc_resource16
{
INT32 resid; /* The resource id if resname == NULL */
LPSTR resname;
INT32 restype; /* The resource type-id if typename == NULL */
LPSTR typename;
LPBYTE data; /* Actual resource data */
UINT32 datasize; /* The size of the resource */
} wrc_resource16_t;
typedef struct wrc_resource32
{
INT32 resid; /* The resource id if resname == NULL */
LPWSTR resname;
INT32 restype; /* The resource type-id if typename == NULL */
LPWSTR typename;
LPBYTE data; /* Actual resource data */
UINT32 datasize; /* The size of the resource */
} wrc_resource32_t;
#endif

View File

@ -51,6 +51,7 @@ typedef INT32 (*DEVICEFONTENUMPROC)(LPENUMLOGFONT16,LPNEWTEXTMETRIC16,UINT16,LPA
struct tagDC;
struct tagDeviceCaps;
extern BOOL32 X11DRV_Init(void);
extern BOOL32 X11DRV_BitBlt( struct tagDC *dcDst, INT32 xDst, INT32 yDst,
INT32 width, INT32 height, struct tagDC *dcSrc,
INT32 xSrc, INT32 ySrc, DWORD rop );
@ -116,4 +117,6 @@ extern BOOL32 X11DRV_FONT_Init( struct tagDeviceCaps* );
extern CRITICAL_SECTION X11DRV_CritSection;
extern void _XInitImageFuncPtrs(XImage *);
#endif /* __WINE_X11DRV_H */

View File

@ -11,7 +11,6 @@
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "dde_atom.h"
#include "shm_main_blk.h"
#include "shm_fragment.h"
@ -187,7 +186,7 @@ ATOM DDE_GlobalDeleteAtom( ATOM atom )
switch (atom_ofs=ATOM_OFS(atom_idx)) {
case DELETED:
case EMPTY:
fprintf(stderr,"trying to free unallocated atom %d\n", atom);
WARN(atom, "Trying to free unallocated atom %d\n", atom);
retval=atom;
break;
default :
@ -273,7 +272,7 @@ WORD DDE_GlobalGetAtomName( ATOM atom, LPSTR buffer, short count )
shm_read_wait(main_block->sem);
atom_ofs=ATOM_OFS(atom_idx);
if (atom_ofs==EMPTY || atom_ofs==DELETED) {
fprintf(stderr,"GlobalGetAtomName: illegal atom=%d\n",(int)atom);
WARN(atom,"Illegal atom=%d\n",(int)atom);
size=0;
} else { /* non empty entry */
/* string length will be at most count-1, find actual size */

View File

@ -9,7 +9,6 @@
*/
#ifdef CONFIG_IPC
#include <stdio.h>
#include <assert.h>
#include "debug.h"
#include "ldt.h"
@ -136,7 +135,7 @@ DDE_malloc(unsigned int flags, unsigned long size, SHMDATA *shmdata)
h_info= (struct handle_info *)
shm_FragPtrAlloc(block, size+sizeof(struct handle_info));
if (h_info==NULL) {
fprintf(stderr,"DDE_malloc: BUG! unallocated fragment\n");
ERR(global,"BUG! unallocated fragment\n");
shm_write_signal(main_block->proc[curr_proc_idx].sem);
return 0;
}

View File

@ -139,7 +139,7 @@ void dde_proc_add(dde_proc procs)
}
else {
fflush(stdout);
fprintf(stderr,"dde_proc_add: Can't allocate process\n");
WARN(dde,"Can't allocate process\n");
}
shm_write_signal(main_block->sem);
}
@ -231,7 +231,7 @@ static BOOL32 DDE_DoOneMessage (int proc_idx, int size, struct msgbuf *msgbuf)
return TRUE;
} else {
fflush(stdout);
fprintf(stderr,"get_ack: DDE_DoOneMessage: timeout\n");
WARN(dde,"get_ack: DDE_DoOneMessage: timeout\n");
return FALSE;
}
}
@ -278,8 +278,7 @@ static HWND16 HWND_Local2Remote(HWND16 orig)
return IDX_TO_HWND(dde_wnd_idx);
}
fprintf(stderr,
"HWND_Local2Remote: Can't map any more windows to DDE windows\n");
WARN(dde, "Can't map any more windows to DDE windows\n");
return 0;
}

View File

@ -12,7 +12,6 @@
#define inline __inline__
#include <sys/types.h>
#include <sys/sem.h>
#include <stdio.h>
#include <assert.h>
#include <unistd.h>
#include <stdlib.h>

View File

@ -167,14 +167,14 @@ void shm_print_free_list(struct shm_block *block)
item=block->free_list;
if (item==0) {
fprintf(stddeb,"no free fragments");
DUMP("no free fragments");
} else {
for (; item ; item=fragment->info.next) {
fragment=FRAG_PTR(block,item);
fprintf(stddeb,"{0x%04x,0x%04x} ",item,fragment->size);
DUMP("{0x%04x,0x%04x} ",item,fragment->size);
}
}
fprintf(stddeb," [total free=%04x]\n",block->free);
DUMP(" [total free=%04x]\n",block->free);
fflush(stddeb);
}

View File

@ -12,7 +12,6 @@
#define inline __inline__
#include <sys/types.h>
#include <sys/sem.h>
#include <stdio.h>
#include <time.h>
#include <assert.h>
#include <unistd.h>
@ -252,8 +251,7 @@ int shm_init(void)
{
if ( !shm_locate_MainBlock(WineKey)
&& !shm_create_MainBlock(WineKey)) {
fflush(stdout);
fprintf(stderr,"shm_init: failed to init main shm block\n");
ERR(shm, "Failed to init main shm block\n");
exit(1);
}

Some files were not shown because too many files have changed in this diff Show More