Release 980413

Sun Apr 12 12:22:23 1997  Andreas Mohr <100.30936@germany.net>

	* [files/drive.c]
	Fixed "no free space" problem with partition sizes between 1 and 2 GB
	(cluster_sectors may not exceed 0x40).

	* [windows/msgbox.c] [if1632/user.spec] [include/windows.h]
	Implemented MessageBoxIndirect16, corrected MSGBOXPARAMS16.

	* [loader/task.c]
	DOS environment strings may never exceed 127 chars
	-> truncate Unix environment strings if necessary.

Sun Apr 12 02:51:44 1998  Dimitrie O. Paun  <dimi@mail.cs.toronto.edu>

	* [files/*.c]
	All fprintf statements were converted to appropriate debug
	messages.

	* [tools/find_debug_channels]
	Updated comments at the beginning of the file.

Sat Apr 11 15:27:21 1998  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [loader/module.c] [loader/task.c] [scheduler/process.c]
	Moved some code around to prepare the ground for CreateProcess().

	* [memory/environ.c] [loader/task.c]
	Moved Win32 environment strings functions to environ.c.
	Unified Win16 and Win32 environment management.

	* [scheduler/handle.c] [scheduler/k32obj.c] [scheduler/*.c]
	Implemented handle inheritance and DuplicateHandle().

	* [scheduler/thread.c]
	Create a 16-bit stack for all threads.

	* [windows/dialog.c]
	Implemented DIALOGEX resource format.

Fri Apr 10 20:21:51 1998  Marcus Meissner <marcus@mud.de>

	* [configure.in][include/acconfig.h][*/*][multimedia/*]
	Cleaned up the OSS detection stuff, added some more checks for
	headerfiles/functions.
	Removed a lot of OS specific #ifdefs.
	Lots of dependend multimedia cleanups.

	* [loader/pe_image.c]
	Enhanced comment, added missing reference count increase.

	* [ole/compobj.c]
	Replaced broken StringFromGUID2 by working one.

	* [misc/winsock.c]
	SO_LINGER uses unsigned 16 bit in Win16 and Win32, but unsigned
	int (32bit) for UNIX.

	* [memory/global.c]
	Allow realloc for lockcount 1 too.

Fri Apr 10 15:27:34 1998  Morten Welinder  <terra@diku.dk>

	* [graphics/x11drv/text.c]
	Handle control characters in trace.  Ignore terminating newline.

	* [multimedia/init.c]
	(MULTIMEDIA_Init): Correct allocations.

	* [tools/examine-relay]
 	Tidy up.

	* [windows/syscolor.c]
	Change highlight colour from lightblue to lightgray.  This
	looks correct for menus.

Fri Apr 10 01:49:58 1998  Douglas Ridgway  <ridgway@winehq.com>

	* [configure.in] [Make.rules.in]
	Add check for c2man before using it.

Fri Apr 10 02:59:21 1998  Douglas Ridgway  <ridgway@winehq.com>

	* [DEVELOPERS-HINTS]
	Simple description of adding API calls.

	* [include/wintypes.h] [include/windows.h]
	Get rid of Winelib16, avoid declaring some illegal functions in
	Winelib, add prototypes for some enhanced metafile functions, fix
	GetTextExtentPoint32 declarations.

	* [relay32/gdi32.spec] [objects/enhmetafile.c]
	Cosmetic and functional improvements.

	* [include/wincon.h] [programs/view/*]
	Fixes, improved compatibility with native compilers.

Thu Apr  9 15:48:49 1998  Ulrich Weigand <weigand@informatik.uni-erlangen.de>

	* [win32/kernel32.c]
	Implemented FT_Thunk / FT_Prolog / FT_Exit / FT_PrologPrime.
	Fixed Common32ThkLS thunk function.

	* [tools/build.c] [relay32/relay386.c] [if1632/relay.c]
	Changed relay code to allow register functions to modify stack layout.

	* [memory/selector.c]
	Implemented AllocMappedBuffer / FreeMappedBuffer.

	* [relay32/kernel32.spec] [if1632/kernel.spec] [win32/ordinals.c]
	Added names for undocumented functions.

	* [loader/module.c]
	Bugfix: LoadLibrary16 should *not* silently load 32-bit DLL.

Thu Apr  9 03:54:58 1998  Jim Peterson <jspeter@birch.ee.vt.edu>

	* [windows/keyboard.c]
	Fix an erroneous test in TranslateAccelerator{16,32} for the end
	of the accelerator table.

Thu Apr  8 20:36:28 1998  Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de> 

	* [misc/crtdll.c]
	Implement getenv.

	* [misc/commdlg.c]
	Make Get[Save/Open]FileName work in most situations.

	* [misc/lstr.c]
	Use wvsprintf32A instead of vsprintf in FormatMessage32X

	* [misc/version]
	Make NT3.50 a recognised version

	* [graphics/x11drv/graphics.c]
	Change the algorithme to draw arcs

	* [loader/resource.c]
	Return an empty buffer in LoadString32A if no resource found.

	* [win32/code_page.c]
	Try harder to get the right size in MultiByteToWideChar.

	* [win32/process.c]
	Call WinExec32 for CreateProcess32A.

	* [windows/user.c]
	Install default Int0 Handler in InitApp().

Thu Apr  8 19:29:48 1998  Eric Kohl <ekohl@abo.rhein-zeitung.de>

	* [misc/imagelist.c]
	Preliminary fix for drawing selected images.
	Various improvements.

	* [controls/progress.c][include/progress.c][include/commctrl.h]
	Added progress bar messages and styles for IE4.01 (dll version 4.72)
	compatibility.
	Fixed led size problem.

	* [controls/updown.c][include/commctrl.h]
	Added UDM_GETRANGE32 and UDM_SETRANGE32.

	* [objects/oembitmaps.c][include/windows.h][include/bitmaps/*]
	Added Win95 icons and fixed Win95 cursor and restore button bug.
	Now they should be visible. Sorry!!!

	* [relay32/comctl32.spec]
	Added most missing function names.

Tue Apr  6 18:48:36 1998  Matthew Becker <mbecker@glasscity.net>

	* [objects/font.c] [if1632/gdi.spec]
	GetOutlineTextMetrics: stub

	* [objects/text.c]
	GetTextCharset should just call GetTextCharsetInfo.

	* [misc/mpr.c] [relay32/mpr.spec]
	WNetCachePassword: stub

	* [scheduler/thread.c] [relay32/user32.spec]
	AttachThreadInput: stub
	Updated documentation.

	* [objects/palette.c]
	Updated documentation.

Tue Mar 31 17:06:30 1998  James Juran <jrj120@psu.edu>

	* [*/*.c]
	Finished fixing USER32 ordinal numbers in function documentation.

Mon Mar 30 20:27:38 1998  Morten Welinder  <terra@diku.dk>

	* [misc/debugstr.c] [include/debugstr.h]
	Moved _dumpstr from relay32/relay386.c.  Improved control
	character handling.

	* [msdos/int21.c]
	Implement 215E00 -- get machine name.

	* [windows/winpos.c]
	SetWindowPos32: Make an extra sync when mapping managed
	windows.  This makes sure the reconfigure event has been
	handled.  See Mshearts' what's-your-name window.

Mon Mar 30 01:13:50 1998  Alexander V. Lukyanov <lav@long.yar.ru>

	* [Makefile.in]
	Install includes from TOPSRCDIR.
diff --git a/include/acconfig.h b/include/acconfig.h
index 512364b..45489fd 100644
--- a/include/acconfig.h
+++ b/include/acconfig.h
@@ -21,5 +21,8 @@
 /* Define if X libraries are not reentrant (compiled without -D_REENTRANT).  */
 #undef NO_REENTRANT_X11
 
-/* Define if you have machine/soundcard.h instead of sys/soundcard.h.  */
-#undef HAVE_MACHINE_SOUNDCARD_H
+/* Define if the struct statfs has the member bavail */
+#undef STATFS_HAS_BAVAIL
+
+/* Define if the struct statfs has the member bfree */
+#undef STATFS_HAS_BFREE
diff --git a/include/bitmaps/oic_bang_95 b/include/bitmaps/oic_bang_95
new file mode 100644
index 0000000..2233cf3
--- /dev/null
+++ b/include/bitmaps/oic_bang_95
@@ -0,0 +1,41 @@
+/* XPM */
+static char * oic_bang_95[] = {
+"32 32 6 1",
+" 	s None		c None",
+".	s black		c black",
+"X	s yellow	c yellow",
+"x	s dkgreen	c #008000",
+"o	s ltgray	c #c0c0c0",
+"O	s dkgray	c #808080",
+"             xxx                ",
+"            xXXo.               ",
+"           xXXXXo.O             ",
+"           xXXXXX.OO            ",
+"          xXXXXXXo.OO           ",
+"          xXXXXXXX.OO           ",
+"         xXXXXXXXXo.OO          ",
+"         xXXXXXXXXX.OO          ",
+"        xXXXXXXXXXXo.OO         ",
+"        xXXXo...oXXX.OO         ",
+"       xXXXX.....XXXo.OO        ",
+"       xXXXX.....XXXX.OO        ",
+"      xXXXXX.....XXXXo.OO       ",
+"      xXXXXX.....XXXXX.OO       ",
+"     xXXXXXX.....XXXXXo.OO      ",
+"     xXXXXXXx...xXXXXXX.OO      ",
+"    xXXXXXXXo...oXXXXXXo.OO     ",
+"    xXXXXXXXX...XXXXXXXX.OO     ",
+"   xXXXXXXXXXx.xXXXXXXXXo.OO    ",
+"   xXXXXXXXXXo.oXXXXXXXXX.OO    ",
+"  xXXXXXXXXXXX.XXXXXXXXXXo.OO   ",
+"  xXXXXXXXXXXXXXXXXXXXXXXX.OO   ",
+" xXXXXXXXXXXXo..oXXXXXXXXXo.OO  ",
+" xXXXXXXXXXXX....XXXXXXXXXX.OO  ",
+"xXXXXXXXXXXXX....XXXXXXXXXXo.OO ",
+"xXXXXXXXXXXXXo..oXXXXXXXXXXX.OO ",
+"xXXXXXXXXXXXXXXXXXXXXXXXXXXX.OOO",
+"xXXXXXXXXXXXXXXXXXXXXXXXXXXo.OOO",
+" xXXXXXXXXXXXXXXXXXXXXXXXXo.OOOO",
+"  x........................OOOOO",
+"    OOOOOOOOOOOOOOOOOOOOOOOOOOO ",
+"     OOOOOOOOOOOOOOOOOOOOOOOOO  "};
diff --git a/include/bitmaps/oic_hand_95 b/include/bitmaps/oic_hand_95
new file mode 100644
index 0000000..9265a66
--- /dev/null
+++ b/include/bitmaps/oic_hand_95
@@ -0,0 +1,40 @@
+/* XPM */
+static char * oic_hand_95[] = {
+"32 32 5 1",
+" 	s None	 c None",
+"o	s white	 c white",
+"O	s dkgray c #808080",
+"+	s dkred  c #800000",
+"X	s red	 c red",
+"           ++++++++             ",
+"        +++XXXXXXXX+++          ",
+"       +XXXXXXXXXXXXXX+         ",
+"     ++XXXXXXXXXXXXXXXX++       ",
+"    +XXXXXXXXXXXXXXXXXXXX+      ",
+"   +XXXXXXXXXXXXXXXXXXXXXX+     ",
+"   +XXXXXXXXXXXXXXXXXXXXXX+O    ",
+"  +XXXXXXoXXXXXXXXXXoXXXXXX+O   ",
+" +XXXXXXoooXXXXXXXXoooXXXXXX+   ",
+" +XXXXXoooooXXXXXXoooooXXXXX+O  ",
+" +XXXXXXoooooXXXXoooooXXXXXX+OO ",
+"+XXXXXXXXoooooXXoooooXXXXXXXX+O ",
+"+XXXXXXXXXooooooooooXXXXXXXXX+O ",
+"+XXXXXXXXXXooooooooXXXXXXXXXX+OO",
+"+XXXXXXXXXXXooooooXXXXXXXXXXX+OO",
+"+XXXXXXXXXXXooooooXXXXXXXXXXX+OO",
+"+XXXXXXXXXXooooooooXXXXXXXXXX+OO",
+"+XXXXXXXXXooooooooooXXXXXXXXX+OO",
+"+XXXXXXXXoooooXXoooooXXXXXXXX+OO",
+" +XXXXXXoooooXXXXoooooXXXXXX+OOO",
+" +XXXXXoooooXXXXXXoooooXXXXX+OOO",
+" +XXXXXXoooXXXXXXXXoooXXXXXX+OO ",
+"  +XXXXXXoXXXXXXXXXXoXXXXXX+OOO ",
+"   +XXXXXXXXXXXXXXXXXXXXXX+OOOO ",
+"   +XXXXXXXXXXXXXXXXXXXXXX+OOO  ",
+"    +XXXXXXXXXXXXXXXXXXXX+OOO   ",
+"     ++XXXXXXXXXXXXXXXX++OOOO   ",
+"      O+XXXXXXXXXXXXXX+OOOOO    ",
+"       O+++XXXXXXXX+++OOOOO     ",
+"         OO++++++++OOOOOO       ",
+"          OOOOOOOOOOOOOO        ",
+"             OOOOOOOO           "};
diff --git a/include/bitmaps/oic_note_95 b/include/bitmaps/oic_note_95
new file mode 100644
index 0000000..4b80207
--- /dev/null
+++ b/include/bitmaps/oic_note_95
@@ -0,0 +1,41 @@
+/* XPM */
+static char * oic_note_95[] = {
+"32 32 6 1",
+" 	s None	 c None",
+".	s black	 c black",
+"X	s white	 c white",
+"o	s ltgray c #c0c0c0",
+"O	s dkgray c #808080",
+"x	s blue   c blue",
+"           OOOOOOOO             ",
+"        OOOoXXXXXXoOOO          ",
+"      OOoXXXXXXXXXXXXoOO        ",
+"     OoXXXXXXXXXXXXXXXXoO       ",
+"    OXXXXXXXXXXXXXXXXXXXX.      ",
+"   OXXXXXXXXoxxxxoXXXXXXXX.     ",
+"  OXXXXXXXXXxxxxxxXXXXXXXXX.    ",
+" OoXXXXXXXXXxxxxxxXXXXXXXXXo.   ",
+" OXXXXXXXXXXoxxxxoXXXXXXXXXX.O  ",
+"OoXXXXXXXXXXXXXXXXXXXXXXXXXXo.O ",
+"OXXXXXXXXXXXXXXXXXXXXXXXXXXXX.O ",
+"OXXXXXXXXXXxxxxxxxXXXXXXXXXXX.OO",
+"OXXXXXXXXXXXXxxxxxXXXXXXXXXXX.OO",
+"OXXXXXXXXXXXXxxxxxXXXXXXXXXXX.OO",
+"OXXXXXXXXXXXXxxxxxXXXXXXXXXXX.OO",
+"OXXXXXXXXXXXXxxxxxXXXXXXXXXXo.OO",
+" OXXXXXXXXXXXxxxxxXXXXXXXXXX.OOO",
+" OoXXXXXXXXXXxxxxxXXXXXXXXXo.OOO",
+"  OXXXXXXXXXXxxxxxXXXXXXXXX.OOO ",
+"   .XXXXXXXxxxxxxxxxXXXXXX.OOOO ",
+"    .XXXXXXXXXXXXXXXXXXXX.OOOO  ",
+"     .oXXXXXXXXXXXXXXXXo.OOOO   ",
+"      ..oXXXXXXXXXXXXo..OOOO    ",
+"       O...oXXXXXXo...OOOO      ",
+"        OOO...oXXX.OOOOOO       ",
+"          OOOO.XXX.OOOOO        ",
+"             O.XXX.OO           ",
+"               .XX.OO           ",
+"                .X.OO           ",
+"                 ..OO           ",
+"                  OOO           ",
+"                   OO           "};
diff --git a/include/bitmaps/oic_ques_95 b/include/bitmaps/oic_ques_95
new file mode 100644
index 0000000..6aa874d
--- /dev/null
+++ b/include/bitmaps/oic_ques_95
@@ -0,0 +1,41 @@
+/* XPM */
+static char * oic_ques_95[] = {
+"32 32 6 1",
+" 	s None	 c None",
+".	s black	 c black",
+"X	s white	 c white",
+"o	s ltgray c #c0c0c0",
+"O	s dkgray c #808080",
+"x	s blue   c blue",
+"           OOOOOOOO             ",
+"        OOOoXXXXXXoOOO          ",
+"      OOoXXXXXXXXXXXXoOO        ",
+"     OoXXXXXXXXXXXXXXXXoO       ",
+"    OXXXXXXXXXXXXXXXXXXXX.      ",
+"   OXXXXXXXoxxxxxxoXXXXXXX.     ",
+"  OXXXXXXXoxoXXxxxxoXXXXXXX.    ",
+" OoXXXXXXXxxXXXXxxxxXXXXXXXo.   ",
+" OXXXXXXXXxxxxXXxxxxXXXXXXXX.O  ",
+"OoXXXXXXXXxxxxXXxxxxXXXXXXXXo.O ",
+"OXXXXXXXXXoxxoXxxxxXXXXXXXXXX.O ",
+"OXXXXXXXXXXXXXoxxxXXXXXXXXXXX.OO",
+"OXXXXXXXXXXXXXxxxXXXXXXXXXXXX.OO",
+"OXXXXXXXXXXXXXxxoXXXXXXXXXXXX.OO",
+"OXXXXXXXXXXXXXxxXXXXXXXXXXXXX.OO",
+"OXXXXXXXXXXXXXXXXXXXXXXXXXXXo.OO",
+" OXXXXXXXXXXXoxxoXXXXXXXXXXX.OOO",
+" OoXXXXXXXXXXxxxxXXXXXXXXXXo.OOO",
+"  OXXXXXXXXXXxxxxXXXXXXXXXX.OOO ",
+"   .XXXXXXXXXoxxoXXXXXXXXX.OOOO ",
+"    .XXXXXXXXXXXXXXXXXXXX.OOOO  ",
+"     .oXXXXXXXXXXXXXXXXo.OOOO   ",
+"      ..oXXXXXXXXXXXXo..OOOO    ",
+"       O...oXXXXXXo...OOOO      ",
+"        OOO...oXXX.OOOOOO       ",
+"          OOOO.XXX.OOOOO        ",
+"             O.XXX.OO           ",
+"               .XX.OO           ",
+"                .X.OO           ",
+"                 ..OO           ",
+"                  OOO           ",
+"                   OO           "};
diff --git a/include/commctrl.h b/include/commctrl.h
index 33404f5..2ed95f6 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -24,6 +24,13 @@
 #define CCS_NOMOVEX         (CCS_VERT|CCS_NOMOVEY)
 
 
+/* common control shared messages */
+
+#define CCM_FIRST           0x2000
+
+#define CCM_SETBKCOLOR      (CCM_FIRST+1)     // lParam = bkColor
+
+
 /* StatusWindow */
 
 #define STATUSCLASSNAME16     "msctls_statusbar"
@@ -93,6 +100,9 @@
 #define UDM_GETACCEL       (WM_USER+108)
 #define UDM_SETBASE        (WM_USER+109)
 #define UDM_GETBASE        (WM_USER+110)
+#define UDM_SETRANGE32     (WM_USER+111)
+#define UDM_GETRANGE32     (WM_USER+112)
+
 
 /* Progress Bar */
 
@@ -107,6 +117,21 @@
 #define PBM_DELTAPOS        (WM_USER+3)
 #define PBM_SETSTEP         (WM_USER+4)
 #define PBM_STEPIT          (WM_USER+5)
+#define PBM_SETRANGE32      (WM_USER+6)
+#define PBM_GETRANGE        (WM_USER+7)
+#define PBM_GETPOS          (WM_USER+8)
+#define PBM_SETBARCOLOR     (WM_USER+9)
+#define PBM_SETBKCOLOR      CCM_SETBKCOLOR
+
+#define PBS_SMOOTH          0x01
+#define PBS_VERTICAL        0x04
+
+typedef struct
+{
+  INT32 iLow;
+  INT32 iHigh;
+} PBRANGE, *PPBRANGE;
+
  
 /* Functions prototypes */
 
diff --git a/include/commdlg.h b/include/commdlg.h
index e5ca4f6..126b940 100644
--- a/include/commdlg.h
+++ b/include/commdlg.h
@@ -150,9 +150,41 @@
 	LPARAM 		lCustData;              /* data passed to hook fn.  */
         WNDPROC16       lpfnHook;
 	SEGPTR 		lpTemplateName;         /* custom template name     */
-	} FINDREPLACE;
-typedef FINDREPLACE *LPFINDREPLACE;
+	} FINDREPLACE16, *LPFINDREPLACE16;
 
+typedef struct {
+	DWORD		lStructSize;
+	HWND32		hwndOwner;
+	HINSTANCE32	hInstance;
+
+	DWORD		Flags;
+	LPSTR		lpstrFindWhat;
+	LPSTR		lpstrReplaceWith;
+	WORD		wFindWhatLen;
+	WORD 		wReplaceWithLen;
+	LPARAM 		lCustData;
+        WNDPROC32       lpfnHook;
+	LPCSTR 		lpTemplateName;
+	} FINDREPLACE32A, *LPFINDREPLACE32A;
+
+typedef struct {
+	DWORD		lStructSize;
+	HWND32		hwndOwner;
+	HINSTANCE32	hInstance;
+
+	DWORD		Flags;
+	LPWSTR		lpstrFindWhat;
+	LPWSTR		lpstrReplaceWith;
+	WORD		wFindWhatLen;
+	WORD 		wReplaceWithLen;
+	LPARAM 		lCustData;
+        WNDPROC32       lpfnHook;
+	LPCWSTR		lpTemplateName;
+	} FINDREPLACE32W, *LPFINDREPLACE32W;
+	
+DECL_WINELIB_TYPE_AW(FINDREPLACE);
+DECL_WINELIB_TYPE_AW(LPFINDREPLACE);
+	
 #define FR_DOWN                         0x00000001
 #define FR_WHOLEWORD                    0x00000002
 #define FR_MATCHCASE                    0x00000004
@@ -393,7 +425,10 @@
 
 BOOL16  WINAPI ChooseColor(LPCHOOSECOLOR lpChCol);
 DWORD   WINAPI CommDlgExtendedError(void);
-HWND16  WINAPI FindText( SEGPTR find);
+HWND16  WINAPI FindText16( SEGPTR find);
+HWND32  WINAPI FindText32A(LPFINDREPLACE32A lpFind);
+HWND32  WINAPI FindText32W(LPFINDREPLACE32W lpFind);
+#define FindText WINELIB_NAME_AW(FindText)
 INT16   WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf);
 INT16   WINAPI GetFileTitle32A(LPCSTR lpFile, LPSTR lpTitle, UINT32 cbBuf);
 INT16   WINAPI GetFileTitle32W(LPCWSTR lpFile, LPWSTR lpTitle, UINT32 cbBuf);
@@ -407,13 +442,22 @@
 BOOL32  WINAPI GetSaveFileName32W(LPOPENFILENAME32W ofn);
 #define GetSaveFileName WINELIB_NAME_AW(GetSaveFileName)
 BOOL16  WINAPI PrintDlg( SEGPTR print);
-HWND16  WINAPI ReplaceText( SEGPTR find);
+HWND16  WINAPI ReplaceText16( SEGPTR find);
+HWND32  WINAPI ReplaceText32A( LPFINDREPLACE32A lpFind);
+HWND32  WINAPI ReplaceText32W( LPFINDREPLACE32W lpFind);
+#define ReplaceText WINELIB_NAME_AW(ReplaceText)
 BOOL16  WINAPI ChooseFont(LPCHOOSEFONT lpChFont);
 LRESULT WINAPI FileOpenDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
 LRESULT WINAPI FileSaveDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
 LRESULT WINAPI ColorDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT WINAPI FindTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT WINAPI ReplaceTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT WINAPI FindTextDlgProc16(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT WINAPI FindTextDlgProc32A(HWND32 hWnd, UINT32 wMsg, WPARAM32 wParam, LPARAM lParam);
+LRESULT WINAPI FindTextDlgProc32W(HWND32 hWnd, UINT32 wMsg, WPARAM32 wParam, LPARAM lParam);
+#define FindTextDlgProc WINELIB_NAME_AW(FindTextDlgProc)
+LRESULT WINAPI ReplaceTextDlgProc16(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT WINAPI ReplaceTextDlgProc32A(HWND32 hWnd, UINT32 wMsg, WPARAM32 wParam, LPARAM lParam);
+LRESULT WINAPI ReplaceTextDlgProc32W(HWND32 hWnd, UINT32 wMsg, WPARAM32 wParam, LPARAM lParam);
+#define ReplaceTextProc WINELIB_NAME_AW(ReplaceTextDlgProc)
 LRESULT WINAPI PrintDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
 LRESULT WINAPI PrintSetupDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
 LRESULT WINAPI FormatCharDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
diff --git a/include/compobj.h b/include/compobj.h
index 6925b1e..ecd57eb 100644
--- a/include/compobj.h
+++ b/include/compobj.h
@@ -24,8 +24,7 @@
 
 OLESTATUS WINAPI WINE_StringFromCLSID(const CLSID *id, LPSTR);
 
-OLESTATUS WINAPI StringFromGUID2(const REFGUID *id, LPOLESTR32 *str, INT32 cmax);
-// #define StringFromGUID2 WINELIB_NAME(StringFromGUID2)
+INT32 WINAPI StringFromGUID2(REFGUID id, LPOLESTR32 str, INT32 cmax);
 
 
 #ifdef INITGUID
diff --git a/include/config.h.in b/include/config.h.in
index de3ec65..26f0a8f 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -33,15 +33,27 @@
 /* Define if X libraries are not reentrant (compiled without -D_REENTRANT).  */
 #undef NO_REENTRANT_X11
 
-/* Define if you have machine/soundcard.h instead of sys/soundcard.h.  */
-#undef HAVE_MACHINE_SOUNDCARD_H
+/* Define if the struct statfs has the member bavail */
+#undef STATFS_HAS_BAVAIL
+
+/* Define if the struct statfs has the member bfree */
+#undef STATFS_HAS_BFREE
+
+/* The number of bytes in a long long.  */
+#undef SIZEOF_LONG_LONG
 
 /* Define if you have the clone function.  */
 #undef HAVE_CLONE
 
+/* Define if you have the getpagesize function.  */
+#undef HAVE_GETPAGESIZE
+
 /* Define if you have the memmove function.  */
 #undef HAVE_MEMMOVE
 
+/* Define if you have the sigaltstack function.  */
+#undef HAVE_SIGALTSTACK
+
 /* Define if you have the strerror function.  */
 #undef HAVE_STRERROR
 
@@ -60,6 +72,42 @@
 /* Define if you have the waitpid function.  */
 #undef HAVE_WAITPID
 
+/* Define if you have the <float.h> header file.  */
+#undef HAVE_FLOAT_H
+
+/* Define if you have the <linux/cdrom.h> header file.  */
+#undef HAVE_LINUX_CDROM_H
+
+/* Define if you have the <machine/soundcard.h> header file.  */
+#undef HAVE_MACHINE_SOUNDCARD_H
+
+/* Define if you have the <sys/cdio.h> header file.  */
+#undef HAVE_SYS_CDIO_H
+
+/* Define if you have the <sys/filio.h> header file.  */
+#undef HAVE_SYS_FILIO_H
+
+/* Define if you have the <sys/mount.h> header file.  */
+#undef HAVE_SYS_MOUNT_H
+
+/* Define if you have the <sys/param.h> header file.  */
+#undef HAVE_SYS_PARAM_H
+
+/* Define if you have the <sys/soundcard.h> header file.  */
+#undef HAVE_SYS_SOUNDCARD_H
+
+/* Define if you have the <sys/statfs.h> header file.  */
+#undef HAVE_SYS_STATFS_H
+
+/* Define if you have the <sys/syscall.h> header file.  */
+#undef HAVE_SYS_SYSCALL_H
+
+/* Define if you have the <sys/vfs.h> header file.  */
+#undef HAVE_SYS_VFS_H
+
+/* Define if you have the <syscall.h> header file.  */
+#undef HAVE_SYSCALL_H
+
 /* Define if you have the <wctype.h> header file.  */
 #undef HAVE_WCTYPE_H
 
diff --git a/include/ddraw.h b/include/ddraw.h
index f22fb36..f17f035 100644
--- a/include/ddraw.h
+++ b/include/ddraw.h
@@ -1049,48 +1049,49 @@
 
 typedef struct IDirectDrawSurface3_VTable {
     /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
+/*00*/STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+/*04*/STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
+/*08*/STDMETHOD_(ULONG,Release) (THIS) PURE;
     /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT32) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT32,LPDIRECTDRAWSURFACE3, LPRECT32,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT32,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC32 FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT32,LPDDSURFACEDESC,DWORD,HANDLE32) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC32) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT32, LPDIRECTDRAWSURFACE3,LPRECT32,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
+/*0c*/STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
+/*10*/STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT32) PURE;
+/*14*/STDMETHOD(Blt)(THIS_ LPRECT32,LPDIRECTDRAWSURFACE3, LPRECT32,DWORD, LPDDBLTFX) PURE;
+/*18*/STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+/*1c*/STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT32,DWORD) PURE;
+/*20*/STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
+/*24*/STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;    
+/*28*/STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+/*2c*/STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
+/*30*/STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE;
+/*34*/STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+/*38*/STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+/*3c*/STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+/*40*/STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+/*44*/STDMETHOD(GetDC)(THIS_ HDC32 FAR *) PURE;
+/*48*/STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+/*4c*/STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+/*50*/STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+/*54*/STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+/*58*/STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+/*5c*/STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+/*60*/STDMETHOD(IsLost)(THIS) PURE;
+/*64*/STDMETHOD(Lock)(THIS_ LPRECT32,LPDDSURFACEDESC,DWORD,HANDLE32) PURE;
+/*68*/STDMETHOD(ReleaseDC)(THIS_ HDC32) PURE;
+/*6c*/STDMETHOD(Restore)(THIS) PURE;
+/*70*/STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+/*74*/STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+/*78*/STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+/*7c*/STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+/*80*/STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+/*84*/STDMETHOD(UpdateOverlay)(THIS_ LPRECT32, LPDIRECTDRAWSURFACE3,LPRECT32,DWORD, LPDDOVERLAYFX) PURE;
+/*88*/STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+/*8c*/STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
     /*** Added in the v2 interface ***/
-    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
-    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
-    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+/*90*/STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+/*94*/STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+/*98*/STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
     /*** Added in the V3 interface ***/
-    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
+/*9c*/STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
 } *LPDIRECTDRAWSURFACE3_VTABLE,IDirectDrawSurface3_VTable;
 
 struct IDirectDrawSurface3 {
diff --git a/include/debugstr.h b/include/debugstr.h
index 7bb3996..4483283 100644
--- a/include/debugstr.h
+++ b/include/debugstr.h
@@ -11,8 +11,8 @@
 LPSTR debugstr_a (LPCSTR s);
 LPSTR debugstr_wn (LPCWSTR s, int n);
 LPSTR debugstr_w (LPCWSTR s);
-LPSTR debugres (const void *res);
+LPSTR debugres_a (LPCSTR res);
+LPSTR debugres_w (LPCWSTR res);
+void debug_dumpstr (LPCSTR s);
 
 #endif /* __WINE_DEBUGSTR_H */
-
-
diff --git a/include/debugtools.h b/include/debugtools.h
index 8dec4ac..b6b50d8 100644
--- a/include/debugtools.h
+++ b/include/debugtools.h
@@ -2,6 +2,8 @@
 #ifndef __WINE_DEBUGTOOLS_H
 #define __WINE_DEBUGTOOLS_H
 
+#ifdef __WINE__  /* Debugging interface is internal to Wine */
+
 #include <stdio.h>
 #include "debugstr.h"
 
@@ -50,4 +52,6 @@
 #define WARN_ON(ch)   DEBUGGING(warn, ch)
 #define TRACE_ON(ch)  DEBUGGING(trace, ch)
 
+#endif  /* __WINE__ */
+
 #endif  /* __WINE_DEBUGTOOLS_H */
diff --git a/include/file.h b/include/file.h
index 7b9c6e4..7ba0c0b 100644
--- a/include/file.h
+++ b/include/file.h
@@ -58,9 +58,6 @@
 extern int DIR_Init(void);
 extern UINT32 DIR_GetWindowsUnixDir( LPSTR path, UINT32 count );
 extern UINT32 DIR_GetSystemUnixDir( LPSTR path, UINT32 count );
-extern UINT32 DIR_GetTempUnixDir( LPSTR path, UINT32 count );
-extern UINT32 DIR_GetDosPath( INT32 element, LPSTR path, UINT32 count );
-extern UINT32 DIR_GetUnixPath( INT32 element, LPSTR path, UINT32 count );
 extern DWORD DIR_SearchPath( LPCSTR path, LPCSTR name, LPCSTR ext,
                              DOS_FULL_NAME *full_name, BOOL32 win32 );
 
diff --git a/include/global.h b/include/global.h
index dc8c939..7acb6a7 100644
--- a/include/global.h
+++ b/include/global.h
@@ -16,6 +16,7 @@
     int shmid;
 } SHMDATA;
 
+/* memory/global.c */
 extern HGLOBAL16 GLOBAL_CreateBlock( UINT16 flags, const void *ptr, DWORD size,
                                      HGLOBAL16 hOwner, BOOL16 isCode,
                                      BOOL16 is32Bit, BOOL16 isReadOnly,
@@ -26,4 +27,8 @@
                                BOOL16 isReadOnly );
 extern WORD GlobalHandleToSel( HGLOBAL16 handle );
 
+/* memory/virtual.c */
+extern DWORD VIRTUAL_GetPageSize(void);
+extern DWORD VIRTUAL_GetGranularity(void);
+
 #endif  /* __WINE_GLOBAL_H */
diff --git a/include/imagelist.h b/include/imagelist.h
index 362ce4b..ce07a6e 100644
--- a/include/imagelist.h
+++ b/include/imagelist.h
@@ -11,8 +11,8 @@
 {
     HBITMAP32 hbmImage;
     HBITMAP32 hbmMask;
-    HBRUSH32  hbrushBlend25;
-    HBRUSH32  hbrushBlend50;
+    HBRUSH32  hbrBlend25;
+    HBRUSH32  hbrBlend50;
     COLORREF  clrBk;
     INT32     cInitial;
     INT32     cGrow;
diff --git a/include/k32obj.h b/include/k32obj.h
index 3e4dc28..0e1dad3 100644
--- a/include/k32obj.h
+++ b/include/k32obj.h
@@ -62,7 +62,8 @@
 extern BOOL32 K32OBJ_IsValid( K32OBJ *ptr, K32OBJ_TYPE type );
 extern BOOL32 K32OBJ_AddName( K32OBJ *obj, LPCSTR name );
 extern K32OBJ *K32OBJ_Create( K32OBJ_TYPE type, DWORD size, LPCSTR name,
-                              DWORD access, HANDLE32 *handle );
+                              DWORD access, SECURITY_ATTRIBUTES *sa,
+                              HANDLE32 *handle );
 extern K32OBJ *K32OBJ_FindName( LPCSTR name );
 extern K32OBJ *K32OBJ_FindNameType( LPCSTR name, K32OBJ_TYPE type );
 
diff --git a/include/module.h b/include/module.h
index e79aa47..017b3c2 100644
--- a/include/module.h
+++ b/include/module.h
@@ -11,7 +11,7 @@
 #include "pe_image.h"
 
   /* In-memory module structure. See 'Windows Internals' p. 219 */
-typedef struct
+typedef struct _NE_MODULE
 {
     WORD    magic;            /* 00 'NE' signature */
     WORD    count;            /* 02 Usage count */
@@ -128,10 +128,11 @@
 extern LPSTR MODULE_GetModuleName( HMODULE32 hModule );
 extern void MODULE_RegisterModule( NE_MODULE *pModule );
 extern HMODULE32 MODULE_FindModule( LPCSTR path );
-extern HINSTANCE16 MODULE_CreateInstance( HMODULE16 hModule, LOADPARAMS* paramBlock );
+extern HINSTANCE16 MODULE_CreateInstance( HMODULE16 hModule, BOOL32 lib_only );
 extern HINSTANCE16 MODULE_GetInstance( HMODULE32 hModule );
 extern HMODULE32 MODULE_CreateDummyModule( const OFSTRUCT *ofs );
-extern HINSTANCE16 MODULE_Load( LPCSTR name, LPVOID paramBlock, UINT16 flags );
+extern HINSTANCE16 MODULE_Load( LPCSTR name, UINT16 uFlags, LPCSTR cmd_line,
+                                LPCSTR env, UINT32 show_cmd );
 extern WORD MODULE_GetOrdinal( HMODULE32 hModule, const char *name );
 extern FARPROC16 MODULE_GetEntryPoint( HMODULE32 hModule, WORD ordinal );
 extern BOOL16 MODULE_SetEntryPoint( HMODULE32 hModule, WORD ordinal,
diff --git a/include/multimedia.h b/include/multimedia.h
index 8c62070..cb70d5c 100644
--- a/include/multimedia.h
+++ b/include/multimedia.h
@@ -20,18 +20,16 @@
 #define MAX_MIDIOUTDRV 	(16)
 #define MAX_MCIMIDIDRV 	(1)
 
-#if defined (linux)
-#define __HAS_SOUNDCARD_H__
-#include <sys/soundcard.h>
-#elif defined (__FreeBSD__)
-#define __HAS_SOUNDCARD_H__
-#include <machine/soundcard.h>
-#include <sys/errno.h>
+#ifdef HAVE_SYS_SOUNDCARD_H
+# include <sys/soundcard.h>
+#endif
+#ifdef HAVE_MACHINE_SOUNDCARD_H
+# include <machine/soundcard.h>
 #endif
 
-#if defined (__HAS_SOUNDCARD_H__)
+#include <sys/errno.h>
 
-#define MIDI_DEV "/dev/sequencer"
+#define MIDI_DEV "/dev/midi"
 
 #ifdef SOUND_VERSION
 #define IOCTL(a,b,c)		ioctl(a,b,&c)
@@ -75,7 +73,4 @@
 	HLOCAL16	hMidiHdr;
 	WORD	dwStatus;
 } LINUX_MCIMIDI;
-
-#endif
-
 #endif /* __WINE_MULTIMEDIA_H */
diff --git a/include/pe_image.h b/include/pe_image.h
index ceab086..61c5912 100644
--- a/include/pe_image.h
+++ b/include/pe_image.h
@@ -42,6 +42,8 @@
 extern DWORD PE_SizeofResource32(HINSTANCE32,HRSRC32);
 extern HMODULE32 PE_LoadLibraryEx32A(LPCSTR,struct _PDB32*,HFILE32,DWORD);
 extern HGLOBAL32 PE_LoadResource32(HINSTANCE32,HRSRC32);
+extern HINSTANCE16 PE_LoadModule( HFILE32 hFile, OFSTRUCT *ofs,
+                                  LPCSTR cmd_line, LPCSTR env, UINT16 showCmd);
 
 struct _PDB32; /* forward definition */
 struct _THDB; /* forward definition */
diff --git a/include/process.h b/include/process.h
index 0323a98..54c699f 100644
--- a/include/process.h
+++ b/include/process.h
@@ -12,7 +12,8 @@
 #include "winnt.h"
 #include "k32obj.h"
 #include "pe_image.h"
-#include "task.h"
+
+struct _NE_MODULE;
 
 /* Process handle entry */
 typedef struct
@@ -31,21 +32,25 @@
 /* Win32 process environment database */
 typedef struct
 {
-    LPSTR           environ;          /* 00 Process environment strings */
-    DWORD           env_size;         /* 04 Environment size (was: Unknown) */
-    LPSTR           cmd_line;         /* 08 Command line */
-    LPSTR           cur_dir;          /* 0c Current directory */
-    STARTUPINFO32A *startup_info;     /* 10 Startup information */
-    HANDLE32        hStdin;           /* 14 Handle for standard input */
-    HANDLE32        hStdout;          /* 18 Handle for standard output */
-    HANDLE32        hStderr;          /* 1c Handle for standard error */
-    DWORD           unknown2;         /* 20 Unknown */
-    DWORD           inherit_console;  /* 24 Inherit console flag */
-    DWORD           break_type;       /* 28 Console events flag */
-    K32OBJ         *break_sem;        /* 2c SetConsoleCtrlHandler semaphore */
-    K32OBJ         *break_event;      /* 30 SetConsoleCtrlHandler event */
-    K32OBJ         *break_thread;     /* 34 SetConsoleCtrlHandler thread */
-    void           *break_handlers;   /* 38 List of console handlers */
+    LPSTR            environ;          /* 00 Process environment strings */
+    DWORD            unknown1;         /* 04 Unknown */
+    LPSTR            cmd_line;         /* 08 Command line */
+    LPSTR            cur_dir;          /* 0c Current directory */
+    STARTUPINFO32A  *startup_info;     /* 10 Startup information */
+    HANDLE32         hStdin;           /* 14 Handle for standard input */
+    HANDLE32         hStdout;          /* 18 Handle for standard output */
+    HANDLE32         hStderr;          /* 1c Handle for standard error */
+    DWORD            unknown2;         /* 20 Unknown */
+    DWORD            inherit_console;  /* 24 Inherit console flag */
+    DWORD            break_type;       /* 28 Console events flag */
+    K32OBJ          *break_sem;        /* 2c SetConsoleCtrlHandler semaphore */
+    K32OBJ          *break_event;      /* 30 SetConsoleCtrlHandler event */
+    K32OBJ          *break_thread;     /* 34 SetConsoleCtrlHandler thread */
+    void            *break_handlers;   /* 38 List of console handlers */
+    /* The following are Wine-specific fields */
+    CRITICAL_SECTION section;          /* 3c Env DB critical section */
+    LPWSTR           cmd_lineW;        /* 40 Unicode command line */
+    WORD             env_sel;          /* 44 Environment strings selector */
 } ENVDB;
 
 /* Win32 process database */
@@ -103,17 +108,27 @@
 #define PROCESS_ID_TO_PDB(id)  ((PDB32 *)((id) ^ PROCESS_OBFUSCATOR))
 #define PDB_TO_PROCESS_ID(pdb) ((DWORD)(pdb) ^ PROCESS_OBFUSCATOR)
 
+/* scheduler/environ.c */
+extern BOOL32 ENV_BuildEnvironment( PDB32 *pdb );
+extern BOOL32 ENV_InheritEnvironment( PDB32 *pdb, LPCSTR env );
+extern void ENV_FreeEnvironment( PDB32 *pdb );
+
 /* scheduler/handle.c */
-extern HANDLE_TABLE *HANDLE_AllocTable( PDB32 *process );
-extern HANDLE32 HANDLE_Alloc( K32OBJ *ptr, DWORD access, BOOL32 inherit );
-extern K32OBJ *HANDLE_GetObjPtr( HANDLE32 handle, K32OBJ_TYPE type,
-                                 DWORD access );
-extern BOOL32 HANDLE_SetObjPtr( HANDLE32 handle, K32OBJ *ptr, DWORD access );
+extern BOOL32 HANDLE_CreateTable( PDB32 *pdb, BOOL32 inherit );
+extern HANDLE32 HANDLE_Alloc( PDB32 *pdb, K32OBJ *ptr, DWORD access,
+                              BOOL32 inherit );
+extern K32OBJ *HANDLE_GetObjPtr( PDB32 *pdb, HANDLE32 handle,
+                                 K32OBJ_TYPE type, DWORD access );
+extern BOOL32 HANDLE_SetObjPtr( PDB32 *pdb, HANDLE32 handle,
+                                K32OBJ *ptr, DWORD access );
+extern void HANDLE_CloseAll( PDB32 *pdb, K32OBJ *ptr );
 
 /* scheduler/process.c */
 extern PDB32 *PROCESS_Current(void);
 extern PDB32 *PROCESS_GetPtr( HANDLE32 handle, DWORD access );
 extern PDB32 *PROCESS_IdToPDB( DWORD id );
-extern PDB32 *PROCESS_Create( TDB *pTask, LPCSTR cmd_line );
-extern void PROCESS_CloseObjHandles(PDB32 *pdb, K32OBJ *ptr);
+extern PDB32 *PROCESS_Create( struct _NE_MODULE *pModule, LPCSTR cmd_line,
+                              LPCSTR env, HINSTANCE16 hInstance,
+                              HINSTANCE16 hPrevInstance, UINT32 cmdShow );
+
 #endif  /* __WINE_PROCESS_H */
diff --git a/include/progress.h b/include/progress.h
index 0aadb15..36b7063 100644
--- a/include/progress.h
+++ b/include/progress.h
@@ -16,6 +16,8 @@
   INT32       MinVal;       /* Minimum progress value */
   INT32       MaxVal;       /* Maximum progress value */
   INT32       Step;         /* Step to use on PMB_STEPIT */
+  COLORREF    ColorBar;     /* Bar color */
+  COLORREF    ColorBk;      /* Background color */
 } PROGRESS_INFO;
 
 LRESULT WINAPI ProgressWindowProc(HWND32, UINT32, WPARAM32, LPARAM);
diff --git a/include/selectors.h b/include/selectors.h
index 8ca897f..a203354 100644
--- a/include/selectors.h
+++ b/include/selectors.h
@@ -16,6 +16,7 @@
 extern WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size,
                                    enum seg_type type, BOOL32 is32bit,
                                    BOOL32 readonly );
+extern void SELECTOR_MoveBlock( WORD sel, const void *new_base );
 extern void SELECTOR_FreeBlock( WORD sel, WORD count );
 
 #ifdef __i386__
diff --git a/include/task.h b/include/task.h
index 460f5de..0a3cc86 100644
--- a/include/task.h
+++ b/include/task.h
@@ -50,6 +50,7 @@
 
 struct _THDB;
 struct _WSINFO;
+struct _NE_MODULE;
 
   /* signal proc typedef */
 typedef void (CALLBACK *USERSIGNALPROC)(HANDLE16, UINT16, UINT16,
@@ -124,11 +125,9 @@
 
 #pragma pack(4)
 
-extern BOOL32 TASK_Init(void);
-extern HTASK16 TASK_CreateTask( HMODULE16 hModule, HINSTANCE16 hInstance,
-                                HINSTANCE16 hPrevInstance,
-                                HANDLE16 hEnvironment, LPCSTR cmdLine,
-                                UINT16 cmdShow );
+extern HTASK16 TASK_Create( struct _THDB *thdb, struct _NE_MODULE *pModule,
+                            HINSTANCE16 hInstance, HINSTANCE16 hPrevInstance,
+                            UINT16 cmdShow );
 extern void TASK_KillCurrentTask( INT16 exitCode );
 extern HTASK16 TASK_GetNextTask( HTASK16 hTask );
 extern void TASK_Reschedule(void);
diff --git a/include/thread.h b/include/thread.h
index 84d5dae..090ce62 100644
--- a/include/thread.h
+++ b/include/thread.h
@@ -121,6 +121,7 @@
 
 /* scheduler/thread.c */
 extern THDB *THREAD_Create( struct _PDB32 *pdb, DWORD stack_size,
+                            BOOL32 alloc_stack16,
                             LPTHREAD_START_ROUTINE start_addr, LPVOID param );
 extern THDB *THREAD_Current(void);
 extern THDB *THREAD_GetPtr( HANDLE32 handle, DWORD access );
diff --git a/include/ver.h b/include/ver.h
index 60d0dee..5f5dd97 100644
--- a/include/ver.h
+++ b/include/ver.h
@@ -8,9 +8,9 @@
 #include "windows.h"
 
 /* resource ids for different version infos */
-#define	VS_FILE_INFO	MAKEINTRESOURCE(16)
-#define	VS_VERSION_INFO	MAKEINTRESOURCE(1)
-#define	VS_USER_INFO	MAKEINTRESOURCE(100)
+#define	VS_FILE_INFO	MAKEINTRESOURCE16(16)
+#define	VS_VERSION_INFO	MAKEINTRESOURCE16(1)
+#define	VS_USER_INFO	MAKEINTRESOURCE16(100)
 
 #define	VS_FFI_SIGNATURE	0xfeef04bdL	/* FileInfo Magic */
 #define	VS_FFI_STRUCVERSION	0x00010000L	/* struc version 1.0 */
diff --git a/include/version.h b/include/version.h
index 4fcacf6..c098d61 100644
--- a/include/version.h
+++ b/include/version.h
@@ -1 +1 @@
-#define WINE_RELEASE_INFO "Wine release 980329"
+#define WINE_RELEASE_INFO "Wine release 980413"
diff --git a/include/win.h b/include/win.h
index c1f9186..ebe47ce 100644
--- a/include/win.h
+++ b/include/win.h
@@ -76,6 +76,7 @@
     DWORD          dwStyle;       /* Window style (from CreateWindow) */
     DWORD          dwExStyle;     /* Extended style (from CreateWindowEx) */
     UINT32         wIDmenu;       /* ID or hmenu (from CreateWindow) */
+    DWORD          helpContext;   /* Help context ID */
     WORD           flags;         /* Misc. flags (see below) */
     Window         window;        /* X window (only for top-level windows) */
     HMENU16        hSysMenu;      /* window's copy of System Menu */
diff --git a/include/winbase.h b/include/winbase.h
index d1c3004..0983276 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -100,6 +100,15 @@
 #define HANDLE_FLAG_INHERIT             0x00000001
 #define HANDLE_FLAG_PROTECT_FROM_CLOSE  0x00000002
 
+#define THREAD_PRIORITY_LOWEST          THREAD_BASE_PRIORITY_MIN
+#define THREAD_PRIORITY_BELOW_NORMAL    (THREAD_PRIORITY_LOWEST+1)
+#define THREAD_PRIORITY_NORMAL          0
+#define THREAD_PRIORITY_HIGHEST         THREAD_BASE_PRIORITY_MAX
+#define THREAD_PRIORITY_ABOVE_NORMAL    (THREAD_PRIORITY_HIGHEST-1)
+#define THREAD_PRIORITY_ERROR_RETURN    (0x7fffffff)
+#define THREAD_PRIORITY_TIME_CRITICAL   THREAD_BASE_PRIORITY_LOWRT
+#define THREAD_PRIORITY_IDLE            THREAD_BASE_PRIORITY_IDLE
+
 typedef struct 
 {
   int type;
diff --git a/include/wincon.h b/include/wincon.h
index b7c46e5..da8b20e 100644
--- a/include/wincon.h
+++ b/include/wincon.h
@@ -40,8 +40,8 @@
 typedef struct tagSMALL_RECT
 {
     INT16 Left;
-    INT16 Right;
     INT16 Top;
+    INT16 Right;
     INT16 Bottom;
 } SMALL_RECT,*LPSMALL_RECT;
 
diff --git a/include/windows.h b/include/windows.h
index 21bf27d..e1861ae 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -2461,45 +2461,147 @@
 #define	WF_WIN32WOW     0x4000	/* undoc */
 #define	WF_WLO          0x8000
 
-#define MAKEINTRESOURCE(i) (SEGPTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCE16(i)  (SEGPTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCE32A(i) (LPSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCE32W(i) (LPWSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCE WINELIB_NAME_AW(MAKEINTRESOURCE)
 
 /* Predefined resource types */
-#define RT_CURSOR	    MAKEINTRESOURCE(1)
-#define RT_BITMAP	    MAKEINTRESOURCE(2)
-#define RT_ICON 	    MAKEINTRESOURCE(3)
-#define RT_MENU 	    MAKEINTRESOURCE(4)
-#define RT_DIALOG	    MAKEINTRESOURCE(5)
-#define RT_STRING	    MAKEINTRESOURCE(6)
-#define RT_FONTDIR	    MAKEINTRESOURCE(7)
-#define RT_FONT 	    MAKEINTRESOURCE(8)
-#define RT_ACCELERATOR	    MAKEINTRESOURCE(9)
-#define RT_RCDATA	    MAKEINTRESOURCE(10)
-#define RT_MESSAGELIST      MAKEINTRESOURCE(11)
-#define RT_GROUP_CURSOR     MAKEINTRESOURCE(12)
-#define RT_GROUP_ICON	    MAKEINTRESOURCE(14)
+#define RT_CURSOR16          MAKEINTRESOURCE16(1)
+#define RT_CURSOR32A         MAKEINTRESOURCE32A(1)
+#define RT_CURSOR32W         MAKEINTRESOURCE32W(1)
+#define RT_CURSOR            WINELIB_NAME_AW(RT_CURSOR)
+#define RT_BITMAP16          MAKEINTRESOURCE16(2)
+#define RT_BITMAP32A         MAKEINTRESOURCE32A(2)
+#define RT_BITMAP32W         MAKEINTRESOURCE32W(2)
+#define RT_BITMAP            WINELIB_NAME_AW(RT_BITMAP)
+#define RT_ICON16            MAKEINTRESOURCE16(3)
+#define RT_ICON32A           MAKEINTRESOURCE32A(3)
+#define RT_ICON32W           MAKEINTRESOURCE32W(3)
+#define RT_ICON              WINELIB_NAME_AW(RT_ICON)
+#define RT_MENU16            MAKEINTRESOURCE16(4)
+#define RT_MENU32A           MAKEINTRESOURCE32A(4)
+#define RT_MENU32W           MAKEINTRESOURCE32W(4)
+#define RT_MENU              WINELIB_NAME_AW(RT_MENU)
+#define RT_DIALOG16          MAKEINTRESOURCE16(5)
+#define RT_DIALOG32A         MAKEINTRESOURCE32A(5)
+#define RT_DIALOG32W         MAKEINTRESOURCE32W(5)
+#define RT_DIALOG            WINELIB_NAME_AW(RT_DIALOG)
+#define RT_STRING16          MAKEINTRESOURCE16(6)
+#define RT_STRING32A         MAKEINTRESOURCE32A(6)
+#define RT_STRING32W         MAKEINTRESOURCE32W(6)
+#define RT_STRING            WINELIB_NAME_AW(RT_STRING)
+#define RT_FONTDIR16         MAKEINTRESOURCE16(7)
+#define RT_FONTDIR32A        MAKEINTRESOURCE32A(7)
+#define RT_FONTDIR32W        MAKEINTRESOURCE32W(7)
+#define RT_FONTDIR           WINELIB_NAME_AW(RT_FONTDIR)
+#define RT_FONT16            MAKEINTRESOURCE16(8)
+#define RT_FONT32A           MAKEINTRESOURCE32A(8)
+#define RT_FONT32W           MAKEINTRESOURCE32W(8)
+#define RT_FONT              WINELIB_NAME_AW(RT_FONT)
+#define RT_ACCELERATOR16     MAKEINTRESOURCE16(9)
+#define RT_ACCELERATOR32A    MAKEINTRESOURCE32A(9)
+#define RT_ACCELERATOR32W    MAKEINTRESOURCE32W(9)
+#define RT_ACCELERATOR       WINELIB_NAME_AW(RT_ACCELERATOR)
+#define RT_RCDATA16          MAKEINTRESOURCE16(10)
+#define RT_RCDATA32A         MAKEINTRESOURCE32A(10)
+#define RT_RCDATA32W         MAKEINTRESOURCE32W(10)
+#define RT_RCDATA            WINELIB_NAME_AW(RT_RCDATA)
+#define RT_MESSAGELIST16     MAKEINTRESOURCE16(11)
+#define RT_MESSAGELIST32A    MAKEINTRESOURCE32A(11)
+#define RT_MESSAGELIST32W    MAKEINTRESOURCE32W(11)
+#define RT_MESSAGELIST       WINELIB_NAME_AW(RT_MESSAGELIST)
+#define RT_GROUP_CURSOR16    MAKEINTRESOURCE16(12)
+#define RT_GROUP_CURSOR32A   MAKEINTRESOURCE32A(12)
+#define RT_GROUP_CURSOR32W   MAKEINTRESOURCE32W(12)
+#define RT_GROUP_CURSOR      WINELIB_NAME_AW(RT_GROUP_CURSOR)
+#define RT_GROUP_ICON16      MAKEINTRESOURCE16(14)
+#define RT_GROUP_ICON32A     MAKEINTRESOURCE32A(14)
+#define RT_GROUP_ICON32W     MAKEINTRESOURCE32W(14)
+#define RT_GROUP_ICON        WINELIB_NAME_AW(RT_GROUP_ICON)
 
 /* Predefined resources */
-#define IDI_APPLICATION  MAKEINTRESOURCE(32512)
-#define IDI_HAND         MAKEINTRESOURCE(32513)
-#define IDI_QUESTION     MAKEINTRESOURCE(32514)
-#define IDI_EXCLAMATION  MAKEINTRESOURCE(32515)
-#define IDI_ASTERISK     MAKEINTRESOURCE(32516)
+#define IDI_APPLICATION16  MAKEINTRESOURCE16(32512)
+#define IDI_APPLICATION32A MAKEINTRESOURCE32A(32512)
+#define IDI_APPLICATION32W MAKEINTRESOURCE32W(32512)
+#define IDI_APPLICATION    WINELIB_NAME_AW(IDI_APPLICATION)
+#define IDI_HAND16         MAKEINTRESOURCE16(32513)
+#define IDI_HAND32A        MAKEINTRESOURCE32A(32513)
+#define IDI_HAND32W        MAKEINTRESOURCE32W(32513)
+#define IDI_HAND           WINELIB_NAME_AW(IDI_HAND)
+#define IDI_QUESTION16     MAKEINTRESOURCE16(32514)
+#define IDI_QUESTION32A    MAKEINTRESOURCE32A(32514)
+#define IDI_QUESTION32W    MAKEINTRESOURCE32W(32514)
+#define IDI_QUESTION       WINELIB_NAME_AW(IDI_QUESTION)
+#define IDI_EXCLAMATION16  MAKEINTRESOURCE16(32515)
+#define IDI_EXCLAMATION32A MAKEINTRESOURCE32A(32515)
+#define IDI_EXCLAMATION32W MAKEINTRESOURCE32W(32515)
+#define IDI_EXCLAMATION    WINELIB_NAME_AW(IDI_EXCLAMATION)
+#define IDI_ASTERISK16     MAKEINTRESOURCE16(32516)
+#define IDI_ASTERISK32A    MAKEINTRESOURCE32A(32516)
+#define IDI_ASTERISK32W    MAKEINTRESOURCE32W(32516)
+#define IDI_ASTERISK       WINELIB_NAME_AW(IDI_ASTERISK)
 
-#define IDC_BUMMER	 MAKEINTRESOURCE(100)
-#define IDC_ARROW        MAKEINTRESOURCE(32512)
-#define IDC_IBEAM        MAKEINTRESOURCE(32513)
-#define IDC_WAIT         MAKEINTRESOURCE(32514)
-#define IDC_CROSS        MAKEINTRESOURCE(32515)
-#define IDC_UPARROW      MAKEINTRESOURCE(32516)
-#define IDC_SIZE         MAKEINTRESOURCE(32640)
-#define IDC_ICON         MAKEINTRESOURCE(32641)
-#define IDC_SIZENWSE     MAKEINTRESOURCE(32642)
-#define IDC_SIZENESW     MAKEINTRESOURCE(32643)
-#define IDC_SIZEWE       MAKEINTRESOURCE(32644)
-#define IDC_SIZENS       MAKEINTRESOURCE(32645)
-#define IDC_NO           MAKEINTRESOURCE(32648)
-#define IDC_APPSTARTING  MAKEINTRESOURCE(32650)
-#define IDC_HELP         MAKEINTRESOURCE(32651)
+#define IDC_BUMMER16       MAKEINTRESOURCE16(100)
+#define IDC_BUMMER32A      MAKEINTRESOURCE32A(100)
+#define IDC_BUMMER32W      MAKEINTRESOURCE32W(100)
+#define IDC_BUMMER         WINELIB_NAME_AW(IDC_BUMMER)
+#define IDC_ARROW16        MAKEINTRESOURCE16(32512)
+#define IDC_ARROW32A       MAKEINTRESOURCE32A(32512)
+#define IDC_ARROW32W       MAKEINTRESOURCE32W(32512)
+#define IDC_ARROW          WINELIB_NAME_AW(IDC_ARROW)
+#define IDC_IBEAM16        MAKEINTRESOURCE16(32513)
+#define IDC_IBEAM32A       MAKEINTRESOURCE32A(32513)
+#define IDC_IBEAM32W       MAKEINTRESOURCE32W(32513)
+#define IDC_IBEAM          WINELIB_NAME_AW(IDC_IBEAM)
+#define IDC_WAIT16         MAKEINTRESOURCE16(32514)
+#define IDC_WAIT32A        MAKEINTRESOURCE32A(32514)
+#define IDC_WAIT32W        MAKEINTRESOURCE32W(32514)
+#define IDC_WAIT           WINELIB_NAME_AW(IDC_WAIT)
+#define IDC_CROSS16        MAKEINTRESOURCE16(32515)
+#define IDC_CROSS32A       MAKEINTRESOURCE32A(32515)
+#define IDC_CROSS32W       MAKEINTRESOURCE32W(32515)
+#define IDC_CROSS          WINELIB_NAME_AW(IDC_CROSS)
+#define IDC_UPARROW16      MAKEINTRESOURCE16(32516)
+#define IDC_UPARROW32A     MAKEINTRESOURCE32A(32516)
+#define IDC_UPARROW32W     MAKEINTRESOURCE32W(32516)
+#define IDC_UPARROW        WINELIB_NAME_AW(IDC_UPARROW)
+#define IDC_SIZE16         MAKEINTRESOURCE16(32640)
+#define IDC_SIZE32A        MAKEINTRESOURCE32A(32640)
+#define IDC_SIZE32W        MAKEINTRESOURCE32W(32640)
+#define IDC_SIZE           WINELIB_NAME_AW(IDC_SIZE)
+#define IDC_ICON16         MAKEINTRESOURCE16(32641)
+#define IDC_ICON32A        MAKEINTRESOURCE32A(32641)
+#define IDC_ICON32W        MAKEINTRESOURCE32W(32641)
+#define IDC_ICON           WINELIB_NAME_AW(IDC_ICON)
+#define IDC_SIZENWSE16     MAKEINTRESOURCE16(32642)
+#define IDC_SIZENWSE32A    MAKEINTRESOURCE32A(32642)
+#define IDC_SIZENWSE32W    MAKEINTRESOURCE32W(32642)
+#define IDC_SIZENWSE       WINELIB_NAME_AW(IDC_SIZENWSE)
+#define IDC_SIZENESW16     MAKEINTRESOURCE16(32643)
+#define IDC_SIZENESW32A    MAKEINTRESOURCE32A(32643)
+#define IDC_SIZENESW32W    MAKEINTRESOURCE32W(32643)
+#define IDC_SIZENESW       WINELIB_NAME_AW(IDC_SIZENESW)
+#define IDC_SIZEWE16       MAKEINTRESOURCE16(32644)
+#define IDC_SIZEWE32A      MAKEINTRESOURCE32A(32644)
+#define IDC_SIZEWE32W      MAKEINTRESOURCE32W(32644)
+#define IDC_SIZEWE         WINELIB_NAME_AW(IDC_SIZEWE)
+#define IDC_SIZENS16       MAKEINTRESOURCE16(32645)
+#define IDC_SIZENS32A      MAKEINTRESOURCE32A(32645)
+#define IDC_SIZENS32W      MAKEINTRESOURCE32W(32645)
+#define IDC_SIZENS         WINELIB_NAME_AW(IDC_SIZENS)
+#define IDC_NO16           MAKEINTRESOURCE16(32648)
+#define IDC_NO32A          MAKEINTRESOURCE32A(32648)
+#define IDC_NO32W          MAKEINTRESOURCE32W(32648)
+#define IDC_NO             WINELIB_NAME_AW(IDC_NO)
+#define IDC_APPSTARTING16  MAKEINTRESOURCE16(32650)
+#define IDC_APPSTARTING32A MAKEINTRESOURCE32A(32650)
+#define IDC_APPSTARTING32W MAKEINTRESOURCE32W(32650)
+#define IDC_APPSTARTING    WINELIB_NAME_AW(IDC_APPSTARTING)
+#define IDC_HELP16         MAKEINTRESOURCE16(32651)
+#define IDC_HELP32A        MAKEINTRESOURCE32A(32651)
+#define IDC_HELP32W        MAKEINTRESOURCE32W(32651)
+#define IDC_HELP           WINELIB_NAME_AW(IDC_HELP)
 
 /* OEM Resource Ordinal Numbers */
 #define OBM_CLOSE           32754
@@ -4259,6 +4361,7 @@
 #define CF_PENDATA          10
 #define CF_RIFF             11
 #define CF_WAVE             12
+#define CF_ENHMETAFILE      14
 
 #define CF_OWNERDISPLAY     0x0080
 #define CF_DSPTEXT          0x0081
@@ -4430,6 +4533,7 @@
 #define META_CREATEBITMAPINDIRECT    0x02FD
 #define META_CREATEBITMAP            0x06FE
 #define META_CREATEREGION            0x06FF
+#define META_UNKNOWN                 0x0529  /* FIXME: unknown meta magic */
 
 typedef INT16 (CALLBACK *MFENUMPROC16)(HDC16,HANDLETABLE16*,METARECORD*,
                                        INT16,LPARAM);
@@ -5587,13 +5691,13 @@
 
 typedef struct /* not sure if the 16bit version is correct */
 {
-    UINT16	cbSize;
+    UINT32	cbSize;
     HWND16	hwndOwner;
     HINSTANCE16	hInstance;
-    LPCSTR	lpszText;
-    LPCSTR	lpszCaption;
+    SEGPTR	lpszText;
+    SEGPTR	lpszCaption;
     DWORD	dwStyle;
-    LPCSTR	lpszIcon;
+    SEGPTR	lpszIcon;
     DWORD	dwContextHelpId;
     MSGBOXCALLBACK	lpfnMsgBoxCallback;
     DWORD	dwLanguageId;
@@ -5659,6 +5763,7 @@
 
 /* Declarations for functions that exist only in Win16 */
 
+#ifndef WINELIB
 WORD        WINAPI AllocCStoDSAlias(WORD);
 WORD        WINAPI AllocDStoCSAlias(WORD);
 WORD        WINAPI AllocSelector(WORD);
@@ -5811,7 +5916,7 @@
 INT16       WINAPI WriteComm(INT16,LPSTR,INT16);
 VOID        WINAPI WriteOutProfiles(VOID);
 VOID        WINAPI hmemcpy(LPVOID,LPCVOID,LONG);
-
+#endif /* WINELIB */
 
 /* Declarations for functions that exist only in Win32 */
 
@@ -5823,6 +5928,8 @@
 INT32       WINAPI CopyAcceleratorTable32A(HACCEL32,LPACCEL32,INT32);
 INT32       WINAPI CopyAcceleratorTable32W(HACCEL32,LPACCEL32,INT32);
 #define     CopyAcceleratorTable WINELIB_NAME_AW(CopyAcceleratorTable)
+HENHMETAFILE32 WINAPI CopyEnhMetaFile32A(HENHMETAFILE32,LPCSTR);
+#define     CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile)
 BOOL32      WINAPI CopyFile32A(LPCSTR,LPCSTR,BOOL32);
 BOOL32      WINAPI CopyFile32W(LPCWSTR,LPCWSTR,BOOL32);
 #define     CopyFile WINELIB_NAME_AW(CopyFile)
@@ -5849,9 +5956,11 @@
 HANDLE32    WINAPI CreateSemaphore32W(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
 #define     CreateSemaphore WINELIB_NAME_AW(CreateSemaphore)
 HANDLE32    WINAPI CreateThread(LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
+BOOL32      WINAPI DeleteEnhMetaFile(HENHMETAFILE32);
 BOOL32      WINAPI DestroyAcceleratorTable(HACCEL32);
 BOOL32      WINAPI DisableThreadLibraryCalls(HMODULE32);
 BOOL32      WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
+BOOL32      WINAPI DuplicateHandle(HANDLE32,HANDLE32,HANDLE32,HANDLE32*,DWORD,BOOL32,DWORD);
 INT32       WINAPI EnumPropsEx32A(HWND32,PROPENUMPROCEX32A,LPARAM);
 INT32       WINAPI EnumPropsEx32W(HWND32,PROPENUMPROCEX32W,LPARAM);
 #define     EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
@@ -5921,6 +6030,10 @@
 INT32       WINAPI GetDateFormat32W(LCID,DWORD,LPSYSTEMTIME,LPCWSTR,LPWSTR,INT32);
 #define     GetDateFormat WINELIB_NAME_AW(GetDateFormat)
 BOOL32      WINAPI GetDCOrgEx(HDC32,LPPOINT32);
+HENHMETAFILE32 WINAPI GetEnhMetaFile32A(LPCSTR);
+HENHMETAFILE32 WINAPI GetEnhMetaFile32W(LPCWSTR);
+#define     GetEnhMetaFile WINELIB_NAME_AW(GetEnhMetaFile)
+UINT32      WINAPI GetEnhMetaFileHeader(HENHMETAFILE32,UINT32,LPENHMETAHEADER);
 LPSTR       WINAPI GetEnvironmentStrings32A(void);
 LPWSTR      WINAPI GetEnvironmentStrings32W(void);
 #define     GetEnvironmentStrings WINELIB_NAME_AW(GetEnvironmentStrings)
@@ -5976,6 +6089,7 @@
 BOOL32      WINAPI GetUserName32A(LPSTR,LPDWORD);
 BOOL32      WINAPI GetUserName32W(LPWSTR,LPDWORD);
 #define     GetUserName WINELIB_NAME_AW(GetUserName)
+DWORD       WINAPI GetWindowContextHelpId(HWND32);
 DWORD       WINAPI GetWindowThreadProcessId(HWND32,LPDWORD);
 BOOL32      WINAPI GetWorldTransform(HDC32,LPXFORM);
 VOID        WINAPI GlobalMemoryStatus(LPMEMORYSTATUS);
@@ -6027,6 +6141,8 @@
 HANDLE32    WINAPI OpenSemaphore32A(DWORD,BOOL32,LPCSTR);
 HANDLE32    WINAPI OpenSemaphore32W(DWORD,BOOL32,LPCWSTR);
 #define     OpenSemaphore WINELIB_NAME_AW(OpenSemaphore)
+BOOL32      WINAPI PlayEnhMetaFile(HDC32,HENHMETAFILE32,const RECT32*);
+BOOL32      WINAPI PlayEnhMetaFileRecord(HDC32,LPHANDLETABLE32,const ENHMETARECORD*,UINT32);
 BOOL32      WINAPI PulseEvent(HANDLE32);
 DWORD       WINAPI QueryDosDevice32A(LPCSTR,LPSTR,DWORD);
 DWORD       WINAPI QueryDosDevice32W(LPCWSTR,LPWSTR,DWORD);
@@ -6087,12 +6203,14 @@
 BOOL32      WINAPI SetMenuItemInfo32A(HMENU32,UINT32,BOOL32,const MENUITEMINFO32A*);
 BOOL32      WINAPI SetMenuItemInfo32W(HMENU32,UINT32,BOOL32,const MENUITEMINFO32W*);
 #define     SetMenuItemInfo WINELIB_NAME_AW(SetMenuItemInfo)
+HMETAFILE32 WINAPI SetMetaFileBitsEx(UINT32,const BYTE*);
 BOOL32      WINAPI SetPriorityClass(HANDLE32,DWORD);
 BOOL32      WINAPI SetStdHandle(DWORD,HANDLE32);
 BOOL32      WINAPI SetSystemPowerState(BOOL32,BOOL32);
 BOOL32      WINAPI SetSystemTime(const SYSTEMTIME*);
 BOOL32      WINAPI SetThreadPriority(HANDLE32,INT32);
 BOOL32      WINAPI SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION);
+BOOL32      WINAPI SetWindowContextHelpId(HWND32,DWORD);
 BOOL32      WINAPI SetWorldTransform(HDC32,const XFORM*);
 VOID        WINAPI Sleep(DWORD);
 BOOL32      WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
@@ -6126,6 +6244,8 @@
 BOOL32      WINAPI WriteConsole32W(HANDLE32,LPCVOID,DWORD,LPDWORD,LPVOID);
 #define     WriteConsole WINELIB_NAME_AW(WriteConsole)
 BOOL32      WINAPI WriteFile(HANDLE32,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED);
+VOID        WINAPI ZeroMemory(LPVOID,UINT32);
+#define     ZeroMemory RtlZeroMemory
 
 /* Declarations for functions that are the same in Win16 and Win32 */
 
@@ -7240,10 +7360,21 @@
 COLORREF    WINAPI GetTextColor16(HDC16);
 COLORREF    WINAPI GetTextColor32(HDC32);
 #define     GetTextColor WINELIB_NAME(GetTextColor)
+/* this one is different, because Win32 has *both* 
+ * GetTextExtentPoint and GetTextExtentPoint32 !
+ */
 BOOL16      WINAPI GetTextExtentPoint16(HDC16,LPCSTR,INT16,LPSIZE16);
 BOOL32      WINAPI GetTextExtentPoint32A(HDC32,LPCSTR,INT32,LPSIZE32);
 BOOL32      WINAPI GetTextExtentPoint32W(HDC32,LPCWSTR,INT32,LPSIZE32);
-#define     GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
+BOOL32      WINAPI GetTextExtentPoint32ABuggy(HDC32,LPCSTR,INT32,LPSIZE32);
+BOOL32      WINAPI GetTextExtentPoint32WBuggy(HDC32,LPCWSTR,INT32,LPSIZE32);
+#ifdef UNICODE
+#define     GetTextExtentPoint GetTextExtentPoint32WBuggy
+#define     GetTextExtentPoint32 GetTextExtentPoint32W
+#else
+#define     GetTextExtentPoint GetTextExtentPoint32ABuggy
+#define     GetTextExtentPoint32 GetTextExtentPoint32A
+#endif
 INT16       WINAPI GetTextFace16(HDC16,INT16,LPSTR);
 INT32       WINAPI GetTextFace32A(HDC32,INT32,LPSTR);
 INT32       WINAPI GetTextFace32W(HDC32,INT32,LPWSTR);
diff --git a/include/wintypes.h b/include/wintypes.h
index 3dac52d..3586b4a 100644
--- a/include/wintypes.h
+++ b/include/wintypes.h
@@ -10,38 +10,29 @@
 #ifdef __WINE__
 # include "config.h"
 # undef WINELIB
-# undef WINELIB16
-# undef WINELIB32
 # undef UNICODE
 #else  /* __WINE__ */
 # ifndef WINELIB
 #  define WINELIB
 # endif
-# ifdef WINELIB16
-#  undef WINELIB32
-# else
-#  define WINELIB32
-# endif
 #endif  /* __WINE__ */
 
 /* Macros to map Winelib names to the correct implementation name */
-/* depending on WINELIB16, WINELIB32 and UNICODE macros.          */
+/* depending on WINELIB and UNICODE macros.                       */
+/* Note that WINELIB is purely Win32.                             */
 
 #ifdef __WINE__
 # define WINELIB_NAME(func)      this is a syntax error
 # define WINELIB_NAME_AW(func)   this is a syntax error
 #else  /* __WINE__ */
-# ifdef WINELIB32
+# ifdef WINELIB
 #  define WINELIB_NAME(func)     func##32
 #  ifdef UNICODE
 #   define WINELIB_NAME_AW(func) func##32W
 #  else
 #   define WINELIB_NAME_AW(func) func##32A
 #  endif  /* UNICODE */
-# else   /* WINELIB32 */
-#  define WINELIB_NAME(func)     func##16
-#  define WINELIB_NAME_AW(func)  func##16
-# endif  /* WINELIB32 */
+# endif  /* WINELIB */
 #endif  /* __WINE__ */
 
 #ifdef __WINE__