Release 960712

Fri Jul 12 17:43:05 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [controls/scroll.c]
	Use Win32 heap functions to allocate scroll-bar info structure.

	* [debugger/dbg.y] [debugger/registers.c]
	Added support for FS and GS segment registers.
	Check that segment registers value are OK before returning from
	the signal handler.

	* [tools/build.c] [if1632/relay.c] [loader/builtin.c]
	Changed relay debugging for Win32 function: the relay code now
	passes the entry point address instead of the function name.

	* [tools/build.c] [miscemu/*.c]
	Added support for data entry points in Win32 DLLs.
	Added 'cdecl' function type for Win32.
	For 'register' function, the relay code now passes a pointer to
	the SIGCONTEXT structure.
	
	* [include/registers.h] [include/wine.h]
	Moved SIGCONTEXT structure definition in registers.h.

	* [loader/pe_image.c]
	Don't die at once if some Win32 entry points cannot be found, but
	set them to NULL, just like we do for Win16. This allows some
	programs to go further before crashing.

	* [loader/task.c] [loader/main.c]
	Moved global initializations from InitTask() to MAIN_Init(), as
	they no longer need a task context with the new SEGPTR heap functions.

	* [memory/string.c]
	Added lstrcpynAtoW and lstrcpynWtoA; not real API functions, but
 	very convenient.

	* [windows/graphics.c]
	Partially implemented DrawEdge().

	* [windows/timer.c] [windows/caret.c]
	Implemented Win32 timer handling. Updated caret management to use
	Win32 timers (avoids having to use a Win16 callback).

	* [windows/win.c]
	Prevent programs from setting some style bits with
	SetWindowLong(). This should fix some BadMatch crashes.
	Link new windows at the end of the linked list.

	* [windows/winpos.c]
	Don't try to activate a child window in ShowWindow().

	* [windows/winproc.c]
	Added a 32->32 thunk to support Ansi-Unicode translation.

Wed Jul 10 22:11:12 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [files/directory.c]
	Additional (undocumented) return value for GetTempDrive() added.

	* [files/dos_fs.c] [files/file.c] [include/windows.h]
	GetTempFileName32* added.
	GetShortPathName* added.

	* [memory/string.c]
	Win16 lstrcpy() can get NULL ptrs as argument and survive.

	* [misc/lzexpand.c]
	LZOpenFile(): also try opening with compressed filename if normal
 	open fails.

	* [misc/ole2nls.c] [misc/lstr.c] [include/windows.h]
	Char* added.
	CompareString* added.

Sun Jul  7 01:22:14 1996  Jukka Iivonen <iivonen@cc.helsinki.fi>

	* [objects/font.c] [if1632/gdi32.spec]
	CreateFontIndirect32A and CreateFontIndirect32W added.

	* [misc/ole2nls.c]
	GetUserDefaultLCID return values updated for new languages.
	Finnish support added for GetLocaleInfoA.

	* [object/palette] [gdi32.spec]
	RealizePalette32 and SelectPalette32 added.
	
Sat Jul  6 17:27:30 1996  Ronan Waide  <root@waider.ie>

	* [misc/shell.c]
	Fixup for SHELL_FindExecutable so that File->Run from progman
	works once more. Still needs some more fixups - grep for FIXME in
	this file.
diff --git a/include/windows.h b/include/windows.h
index 16e6f80..72fea65 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -1449,15 +1449,15 @@
 typedef KANJISTRUCT *NPKANJISTRUCT;
 typedef KANJISTRUCT *PKANJISTRUCT;
 
+#define OFS_MAXPATHNAME 128
 typedef struct
 {
     BYTE cBytes;
     BYTE fFixedDisk;
     WORD nErrCode;
     BYTE reserved[4];
-    BYTE szPathName[128];
-} OFSTRUCT;
-typedef OFSTRUCT *LPOFSTRUCT;
+    BYTE szPathName[OFS_MAXPATHNAME];
+} OFSTRUCT, *LPOFSTRUCT;
 
 #define OF_READ               0x0000
 #define OF_WRITE              0x0001
@@ -2247,6 +2247,43 @@
 #define DT_NOPREFIX 2048
 #define DT_INTERNAL 4096
 
+/* DrawEdge() flags */
+#define BDR_RAISEDOUTER    0x0001
+#define BDR_SUNKENOUTER    0x0002
+#define BDR_RAISEDINNER    0x0004
+#define BDR_SUNKENINNER    0x0008
+
+#define BDR_OUTER          0x0003
+#define BDR_INNER          0x000c
+#define BDR_RAISED         0x0005
+#define BDR_SUNKEN         0x000a
+
+#define EDGE_RAISED        (BDR_RAISEDOUTER | BDR_RAISEDINNER)
+#define EDGE_SUNKEN        (BDR_SUNKENOUTER | BDR_SUNKENINNER)
+#define EDGE_ETCHED        (BDR_SUNKENOUTER | BDR_RAISEDINNER)
+#define EDGE_BUMP          (BDR_RAISEDOUTER | BDR_SUNKENINNER)
+
+/* border flags */
+#define BF_LEFT            0x0001
+#define BF_TOP             0x0002
+#define BF_RIGHT           0x0004
+#define BF_BOTTOM          0x0008
+#define BF_DIAGONAL        0x0010
+#define BF_MIDDLE          0x0800  /* Fill in the middle */
+#define BF_SOFT            0x1000  /* For softer buttons */
+#define BF_ADJUST          0x2000  /* Calculate the space left over */
+#define BF_FLAT            0x4000  /* For flat rather than 3D borders */
+#define BF_MONO            0x8000  /* For monochrome borders */
+#define BF_TOPLEFT         (BF_TOP | BF_LEFT)
+#define BF_TOPRIGHT        (BF_TOP | BF_RIGHT)
+#define BF_BOTTOMLEFT      (BF_BOTTOM | BF_LEFT)
+#define BF_BOTTOMRIGHT     (BF_BOTTOM | BF_RIGHT)
+#define BF_RECT            (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
+#define BF_DIAGONAL_ENDTOPRIGHT     (BF_DIAGONAL | BF_TOP | BF_RIGHT)
+#define BF_DIAGONAL_ENDTOPLEFT      (BF_DIAGONAL | BF_TOP | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMLEFT   (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMRIGHT  (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
+
 /* Window Styles */
 #define WS_OVERLAPPED    0x00000000L
 #define WS_POPUP         0x80000000L
@@ -3153,6 +3190,8 @@
 WORD       FreeSelector(WORD);
 DWORD      GetBitmapDimension(HBITMAP16);
 HTASK16    GetCurrentTask(void);
+HINSTANCE16 GetTaskDS(void);
+HQUEUE16   GetTaskQueue(HTASK16);
 BOOL16     LocalInit(HANDLE16,WORD,WORD);
 DWORD      OffsetViewportOrg(HDC16,INT16,INT16);
 DWORD      OffsetWindowOrg(HDC16,INT16,INT16);
@@ -3183,6 +3222,7 @@
 DWORD      HeapSize(HANDLE32,DWORD,LPVOID);
 BOOL32     HeapUnlock(HANDLE32);
 BOOL32     HeapValidate(HANDLE32,DWORD,LPVOID);
+BOOL32     IsWindowUnicode(HWND32);
 VOID       RtlFillMemory(LPVOID,UINT32,UINT32);
 VOID       RtlMoveMemory(LPVOID,LPCVOID,UINT32);
 VOID       RtlZeroMemory(LPVOID,UINT32);
@@ -3191,31 +3231,55 @@
 
 /* Declarations for functions that are the same in Win16 and Win32 */
 
+BOOL16     CheckDlgButton(HWND32,INT32,UINT32);
+BOOL16     CheckRadioButton(HWND32,UINT32,UINT32,UINT32);
 INT16      CombineRgn(HRGN32,HRGN32,HRGN32,INT32);
+LONG       CopyLZFile(HFILE,HFILE);
 HBITMAP16  CreateBitmap(INT32,INT32,UINT32,UINT32,LPCVOID);
+BOOL16     CreateCaret(HWND32,HBITMAP32,INT32,INT32);
 HBITMAP16  CreateCompatibleBitmap(HDC32,INT32,INT32);
 HBITMAP16  CreateDiscardableBitmap(HDC32,INT32,INT32);
 HRGN16     CreateEllipticRgn(INT32,INT32,INT32,INT32);
 HRGN16     CreateRectRgn(INT32,INT32,INT32,INT32);
 HRGN16     CreateRoundRectRgn(INT32,INT32,INT32,INT32,INT32,INT32);
+BOOL16     DestroyCaret(void);
 BOOL16     EndDialog(HWND32,INT32);
 BOOL16     EqualRgn(HRGN32,HRGN32);
 INT16      ExcludeUpdateRgn(HDC32,HWND32);
+BOOL16     ExtFloodFill(HDC32,INT32,INT32,COLORREF,UINT32);
+BOOL16     FloodFill(HDC32,INT32,INT32,COLORREF);
 DWORD      GetAppCompatFlags(HTASK32);
 LONG       GetBitmapBits(HBITMAP32,LONG,LPVOID);
 WORD       GetClassWord(HWND32,INT32);
+INT16      GetDlgCtrlID(HWND32);
+DWORD      GetTickCount(void);
 INT16      GetUpdateRgn(HWND32,HRGN32,BOOL32);
 WORD       GetWindowWord(HWND32,INT32);
+BOOL16     HideCaret(HWND32);
+BOOL16     IsWindow(HWND32);
+void       LZClose(HFILE);
+LONG       LZCopy(HFILE,HFILE);
+void       LZDone(void);
+HFILE      LZInit(HFILE);
+LONG       LZSeek(HFILE,LONG,INT32);
+INT16      LZStart(void);
 INT16      OffsetRgn(HRGN32,INT32,INT32);
+HFILE      OpenFile(LPCSTR,OFSTRUCT*,UINT32);
 BOOL16     PtInRegion(HRGN32,INT32,INT32);
 DWORD      RegCloseKey(HKEY);
 DWORD      RegFlushKey(HKEY);
 LONG       SetBitmapBits(HBITMAP32,LONG,LPCVOID);
+BOOL16     SetCaretBlinkTime(UINT32);
+BOOL16     SetCaretPos(INT32,INT32);
 WORD       SetClassWord(HWND32,INT32,WORD);
 INT16      SetDIBits(HDC32,HBITMAP32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32);
 INT16      SetDIBitsToDevice(HDC32,INT32,INT32,DWORD,DWORD,INT32,INT32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32);
 VOID       SetRectRgn(HRGN32,INT32,INT32,INT32,INT32);
 WORD       SetWindowWord(HWND32,INT32,WORD);
+BOOL16     ShowCaret(HWND32);
+HFILE      _lclose(HFILE);
+HFILE      _lcreat(LPCSTR,INT32);
+HFILE      _lopen(LPCSTR,INT32);
 
 /* Declarations for functions that change between Win16 and Win32 */
 
@@ -3240,6 +3304,36 @@
 BOOL32     ChangeMenu32A(HMENU32,UINT32,LPCSTR,UINT32,UINT32);
 BOOL32     ChangeMenu32W(HMENU32,UINT32,LPCWSTR,UINT32,UINT32);
 #define    ChangeMenu WINELIB_NAME_AW(ChangeMenu)
+LPSTR      CharLower32A(LPSTR);
+LPWSTR     CharLower32W(LPWSTR);
+#define    CharLower WINELIB_NAME_AW(CharLower)
+DWORD      CharLowerBuff32A(LPSTR,DWORD);
+DWORD      CharLowerBuff32W(LPWSTR,DWORD);
+#define    CharLowerBuff WINELIB_NAME_AW(CharLowerBuff)
+LPSTR      CharNext32A(LPCSTR);
+LPWSTR     CharNext32W(LPCWSTR);
+#define    CharNext WINELIB_NAME_AW(CharNext)
+LPSTR      CharNextEx32A(WORD,LPCSTR,DWORD);
+LPWSTR     CharNextEx32W(WORD,LPCWSTR,DWORD);
+#define    CharNextEx WINELIB_NAME_AW(CharNextEx)
+LPSTR      CharPrev32A(LPCSTR,LPCSTR);
+LPWSTR     CharPrev32W(LPCWSTR,LPCWSTR);
+#define    CharPrev WINELIB_NAME_AW(CharPrev)
+LPSTR      CharPrevEx32A(WORD,LPCSTR,LPCSTR,DWORD);
+LPWSTR     CharPrevEx32W(WORD,LPCWSTR,LPCWSTR,DWORD);
+#define    CharPrevEx WINELIB_NAME_AW(CharPrevEx)
+LPSTR      CharUpper32A(LPSTR);
+LPWSTR     CharUpper32W(LPWSTR);
+#define    CharUpper WINELIB_NAME_AW(CharUpper)
+DWORD      CharUpperBuff32A(LPSTR,DWORD);
+DWORD      CharUpperBuff32W(LPWSTR,DWORD);
+#define    CharUpperBuff WINELIB_NAME_AW(CharUpperBuff)
+BOOL32     CharToOem32A(LPSTR,LPSTR);
+BOOL32     CharToOem32W(LPCWSTR,LPSTR);
+#define    CharToOem WINELIB_NAME_AW(CharToOem)
+BOOL32     CharToOemBuff32A(LPSTR,LPSTR,DWORD);
+BOOL32     CharToOemBuff32W(LPCWSTR,LPSTR,DWORD);
+#define    CharToOemBuff WINELIB_NAME_AW(CharToOemBuff)
 HWND16     ChildWindowFromPoint16(HWND16,POINT16);
 HWND32     ChildWindowFromPoint32(HWND32,POINT32);
 #define    ChildWindowFromPoint WINELIB_NAME(ChildWindowFromPoint)
@@ -3249,6 +3343,16 @@
 BOOL16     ClipCursor16(const RECT16*);
 BOOL32     ClipCursor32(const RECT32*);
 #define    ClipCursor WINELIB_NAME(ClipCursor)
+UINT16     CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
+UINT32     CompareString32A(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
+UINT32     CompareString32W(DWORD,DWORD,LPCWSTR,DWORD,LPCWSTR,DWORD);
+#define    CompareString WINELIB_NAME_AW(CompareString)
+HCURSOR16  CopyCursor16(HINSTANCE16,HCURSOR16);
+#define    CopyCursor32(cur) ((HCURSOR32)CopyIcon32((HICON32)(cur)))
+#define    CopyCursor WINELIB_NAME(CopyCursor)
+HICON16    CopyIcon16(HINSTANCE16,HICON16);
+HICON32    CopyIcon32(HICON32);
+#define    CopyIcon WINELIB_NAME(CopyIcon)
 BOOL16     CopyRect16(RECT16*,const RECT16*);
 BOOL32     CopyRect32(RECT32*,const RECT32*);
 #define    CopyRect WINELIB_NAME(CopyRect)
@@ -3282,6 +3386,10 @@
 HRGN16     CreateEllipticRgnIndirect16(const RECT16 *);
 HRGN32     CreateEllipticRgnIndirect32(const RECT32 *);
 #define    CreateEllipticRgnIndirect WINELIB_NAME(CreateEllipticRgnIndirect)
+HFONT16    CreateFontIndirect16(const LOGFONT16*);
+HFONT32    CreateFontIndirect32A(const LOGFONT32A*);
+HFONT32    CreateFontIndirect32W(const LOGFONT32W*);
+#define    CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
 HRGN16     CreatePolyPolygonRgn16(const POINT16*,const INT16*,INT16,INT16);
 HRGN32     CreatePolyPolygonRgn32(const POINT32*,const INT32*,INT32,INT32);
 #define    CreatePolyPolygonRgn WINELIB_NAME(CreatePolyPolygonRgn)
@@ -3352,9 +3460,15 @@
 BOOL16     DPtoLP16(HDC16,LPPOINT16,INT16);
 BOOL32     DPtoLP32(HDC32,LPPOINT32,INT32);
 #define    DPtoLP WINELIB_NAME(DPtoLP)
+BOOL16     DrawEdge16(HDC16,LPRECT16,UINT16,UINT16);
+BOOL32     DrawEdge32(HDC32,LPRECT32,UINT32,UINT32);
+#define    DrawEdge WINELIB_NAME(DrawEdge)
 void       DrawFocusRect16(HDC16,const RECT16*);
 void       DrawFocusRect32(HDC32,const RECT32*);
 #define    DrawFocusRect WINELIB_NAME(DrawFocusRect)
+BOOL16     DrawFrameControl16(HDC16,LPRECT16,UINT16,UINT16);
+BOOL32     DrawFrameControl32(HDC32,LPRECT32,UINT32,UINT32);
+#define    DrawFrameControl WINELIB_NAME(DrawFrameControl)
 INT16      DrawText16(HDC16,LPCSTR,INT16,LPRECT16,UINT16);
 INT32      DrawText32A(HDC32,LPCSTR,INT32,LPRECT32,UINT32);
 INT32      DrawText32W(HDC32,LPCWSTR,INT32,LPRECT32,UINT32);
@@ -3397,7 +3511,7 @@
 #define    FreeModule32(handle) FreeLibrary32(handle)
 #define    FreeModule WINELIB_NAME(FreeModule)
 void       FreeProcInstance16(FARPROC16);
-#define    FreeProcInstance32(proc) (proc)
+#define    FreeProcInstance32(proc) /*nothing*/
 #define    FreeProcInstance WINELIB_NAME(FreeProcInstance)
 BOOL16     GetBitmapDimensionEx16(HBITMAP16,LPSIZE16);
 BOOL32     GetBitmapDimensionEx32(HBITMAP32,LPSIZE32);
@@ -3405,8 +3519,11 @@
 BOOL16     GetBrushOrgEx16(HDC16,LPPOINT16);
 BOOL32     GetBrushOrgEx32(HDC32,LPPOINT32);
 #define    GetBrushOrgEx WINELIB_NAME(GetBrushOrgEx)
-void       GetCaretPos16(LPPOINT16);
-void       GetCaretPos32(LPPOINT32);
+UINT16     GetCaretBlinkTime16(void);
+UINT32     GetCaretBlinkTime32(void);
+#define    GetCaretBlinkTime WINELIB_NAME(GetCaretBlinkTime)
+VOID       GetCaretPos16(LPPOINT16);
+BOOL32     GetCaretPos32(LPPOINT32);
 #define    GetCaretPos WINELIB_NAME(GetCaretPos)
 BOOL16     GetClassInfo16(HINSTANCE16,SEGPTR,WNDCLASS16 *);
 BOOL32     GetClassInfo32A(HINSTANCE32,LPCSTR,WNDCLASS32A *);
@@ -3455,6 +3572,18 @@
 UINT32     GetDriveType32A(LPCSTR);
 UINT32     GetDriveType32W(LPCWSTR);
 #define    GetDriveType WINELIB_NAME_AW(GetDriveType)
+INT16      GetExpandedName16(LPCSTR,LPSTR);
+INT32      GetExpandedName32A(LPCSTR,LPSTR);
+INT32      GetExpandedName32W(LPCWSTR,LPWSTR);
+#define    GetExpandedName WINELIB_NAME_AW(GetExpandedName)
+DWORD      GetFileVersionInfoSize16(LPCSTR,LPDWORD);
+DWORD      GetFileVersionInfoSize32A(LPCSTR,LPDWORD);
+DWORD      GetFileVersionInfoSize32W(LPCWSTR,LPDWORD);
+#define    GetFileVersionInfoSize WINELIB_NAME_AW(GetFileVersionInfoSize)
+DWORD      GetFileVersionInfo16(LPCSTR,DWORD,DWORD,LPVOID);
+DWORD      GetFileVersionInfo32A(LPCSTR,DWORD,DWORD,LPVOID);
+DWORD      GetFileVersionInfo32W(LPCWSTR,DWORD,DWORD,LPVOID);
+#define    GetFileVersionInfo WINELIB_NAME_AW(GetFileVersionInfo)
 UINT16     GetInternalWindowPos16(HWND16,LPRECT16,LPPOINT16);
 UINT32     GetInternalWindowPos32(HWND32,LPRECT32,LPPOINT32);
 #define    GetInternalWindowPos WINELIB_NAME(GetInternalWindowPos)
@@ -3465,13 +3594,23 @@
 INT32      GetObject32A(HANDLE32,INT32,LPVOID);
 INT32      GetObject32W(HANDLE32,INT32,LPVOID);
 #define    GetObject WINELIB_NAME_AW(GetObject)
+FARPROC16  GetProcAddress16(HMODULE16,SEGPTR);
+FARPROC32  GetProcAddress32(HMODULE32,LPCSTR);
+#define    GetProcAddress WINELIB_NAME(GetProcAddress)
 INT16      GetRgnBox16(HRGN16,LPRECT16);
 INT32      GetRgnBox32(HRGN32,LPRECT32);
 #define    GetRgnBox WINELIB_NAME(GetRgnBox)
+DWORD      GetShortPathName32A(LPCSTR,LPSTR,DWORD);
+DWORD      GetShortPathName32W(LPCWSTR,LPWSTR,DWORD);
+#define    GetShortPathName WINELIB_NAME_AW(GetShortPathName)
 UINT16     GetSystemDirectory16(LPSTR,UINT16);
 UINT32     GetSystemDirectory32A(LPSTR,UINT32);
 UINT32     GetSystemDirectory32W(LPWSTR,UINT32);
 #define    GetSystemDirectory WINELIB_NAME_AW(GetSystemDirectory)
+UINT16     GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR);
+UINT32     GetTempFileName32A(LPCSTR,LPCSTR,UINT32,LPSTR);
+UINT32     GetTempFileName32W(LPCWSTR,LPCWSTR,UINT32,LPWSTR);
+#define    GetTempFileName WINELIB_NAME_AW(GetTempFileName)
 UINT32     GetTempPath32A(UINT32,LPSTR);
 UINT32     GetTempPath32W(UINT32,LPWSTR);
 #define    GetTempPath WINELIB_NAME_AW(GetTempPath)
@@ -3511,6 +3650,9 @@
 void       GetWindowRect16(HWND16,LPRECT16);
 void       GetWindowRect32(HWND32,LPRECT32);
 #define    GetWindowRect WINELIB_NAME(GetWindowRect)
+HTASK16    GetWindowTask16(HWND16);
+#define    GetWindowTask32(hwnd) ((HTASK32)GetWindowThreadProcessId(hwnd,NULL))
+#define    GetWindowTask WINELIB_NAME(GetWindowTask)
 INT16      GetWindowText16(HWND16,SEGPTR,INT16);
 INT32      GetWindowText32A(HWND32,LPSTR,INT32);
 INT32      GetWindowText32W(HWND32,LPWSTR,INT32);
@@ -3570,9 +3712,38 @@
 void       InvertRect16(HDC16,const RECT16*);
 void       InvertRect32(HDC32,const RECT32*);
 #define    InvertRect WINELIB_NAME(InvertRect)
+BOOL16     IsCharAlpha16(CHAR);
+BOOL32     IsCharAlpha32A(CHAR);
+BOOL32     IsCharAlpha32W(WCHAR);
+#define    IsCharAlpha WINELIB_NAME_AW(IsCharAlpha)
+BOOL16     IsCharAlphaNumeric16(CHAR);
+BOOL32     IsCharAlphaNumeric32A(CHAR);
+BOOL32     IsCharAlphaNumeric32W(WCHAR);
+#define    IsCharAlphaNumeric WINELIB_NAME_AW(IsCharAlphaNumeric)
+BOOL16     IsCharLower16(CHAR);
+BOOL32     IsCharLower32A(CHAR);
+BOOL32     IsCharLower32W(WCHAR);
+#define    IsCharLower WINELIB_NAME_AW(IsCharLower)
+BOOL16     IsCharUpper16(CHAR);
+BOOL32     IsCharUpper32A(CHAR);
+BOOL32     IsCharUpper32W(WCHAR);
+#define    IsCharUpper WINELIB_NAME_AW(IsCharUpper)
 BOOL16     IsRectEmpty16(const RECT16*);
 BOOL32     IsRectEmpty32(const RECT32*);
 #define    IsRectEmpty WINELIB_NAME(IsRectEmpty)
+BOOL16     KillSystemTimer16(HWND16,UINT16);
+BOOL32     KillSystemTimer32(HWND32,UINT32);
+#define    KillSystemTimer WINELIB_NAME(KillSystemTimer)
+BOOL16     KillTimer16(HWND16,UINT16);
+BOOL32     KillTimer32(HWND32,UINT32);
+#define    KillTimer WINELIB_NAME(KillTimer)
+HFILE      LZOpenFile16(LPCSTR,LPOFSTRUCT,UINT16);
+HFILE      LZOpenFile32A(LPCSTR,LPOFSTRUCT,UINT32);
+HFILE      LZOpenFile32W(LPCWSTR,LPOFSTRUCT,UINT32);
+#define    LZOpenFile WINELIB_NAME_AW(LZOpenFile)
+INT16      LZRead16(HFILE,SEGPTR,UINT16); 
+INT32      LZRead32(HFILE,LPVOID,UINT32); 
+#define    LZRead WINELIB_NAME(LZRead)
 HMENU16    LoadMenuIndirect16(LPCVOID);
 HMENU32    LoadMenuIndirect32A(LPCVOID);
 HMENU32    LoadMenuIndirect32W(LPCVOID);
@@ -3632,6 +3803,12 @@
 INT16      MulDiv16(INT16,INT16,INT16);
 INT32      MulDiv32(INT32,INT32,INT32);
 #define    MulDiv WINELIB_NAME(MulDiv)
+BOOL32     OemToChar32A(LPSTR,LPSTR);
+BOOL32     OemToChar32W(LPCSTR,LPWSTR);
+#define    OemToChar WINELIB_NAME_AW(OemToChar)
+BOOL32     OemToCharBuff32A(LPSTR,LPSTR,DWORD);
+BOOL32     OemToCharBuff32W(LPCSTR,LPWSTR,DWORD);
+#define    OemToCharBuff WINELIB_NAME_AW(OemToCharBuff)
 void       OffsetRect16(LPRECT16,INT16,INT16);
 void       OffsetRect32(LPRECT32,INT32,INT32);
 #define    OffsetRect WINELIB_NAME(OffsetRect)
@@ -3785,6 +3962,12 @@
 void       SetRectEmpty16(LPRECT16);
 void       SetRectEmpty32(LPRECT32);
 #define    SetRectEmpty WINELIB_NAME(SetRectEmpty)
+UINT16     SetSystemTimer16(HWND16,UINT16,UINT16,TIMERPROC16);
+UINT32     SetSystemTimer32(HWND32,UINT32,UINT32,TIMERPROC32);
+#define    SetSystemTimer WINELIB_NAME(SetSystemTimer)
+UINT16     SetTimer16(HWND16,UINT16,UINT16,TIMERPROC16);
+UINT32     SetTimer32(HWND32,UINT32,UINT32,TIMERPROC32);
+#define    SetTimer WINELIB_NAME(SetTimer)
 BOOL16     SetViewportExtEx16(HDC16,INT16,INT16,LPSIZE16);
 BOOL32     SetViewportExtEx32(HDC32,INT32,INT32,LPSIZE32);
 #define    SetViewportExtEx WINELIB_NAME(SetViewportExtEx)
@@ -3831,6 +4014,22 @@
 void       ValidateRect16(HWND16,const RECT16*);
 void       ValidateRect32(HWND32,const RECT32*);
 #define    ValidateRect WINELIB_NAME(ValidateRect)
+DWORD      VerFindFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*,LPSTR,UINT16*);
+DWORD      VerFindFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*,LPSTR,UINT32*);
+DWORD      VerFindFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*,LPWSTR,UINT32*);
+#define    VerFindFile WINELIB_NAME_AW(VerFindFile)
+DWORD      VerInstallFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*);
+DWORD      VerInstallFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*);
+DWORD      VerInstallFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*);
+#define    VerInstallFile WINELIB_NAME_AW(VerInstallFile)
+DWORD      VerLanguageName16(UINT16,LPSTR,UINT16);
+DWORD      VerLanguageName32A(UINT32,LPSTR,UINT32);
+DWORD      VerLanguageName32W(UINT32,LPWSTR,UINT32);
+#define    VerLanguageName WINELIB_NAME_AW(VerLanguageName)
+DWORD      VerQueryValue16(SEGPTR,LPCSTR,SEGPTR*,UINT16*);
+DWORD      VerQueryValue32A(LPVOID,LPCSTR,LPVOID*,UINT32*);
+DWORD      VerQueryValue32W(LPVOID,LPCWSTR,LPVOID*,UINT32*);
+#define    VerQueryValue WINELIB_NAME_AW(VerQueryValue)
 HWND16     WindowFromPoint16(POINT16);
 HWND32     WindowFromPoint32(POINT32);
 #define    WindowFromPoint WINELIB_NAME(WindowFromPoint)
@@ -3862,14 +4061,6 @@
 INT32      lstrlen32A(LPCSTR);
 INT32      lstrlen32W(LPCWSTR);
 #define    lstrlen WINELIB_NAME_AW(lstrlen)
-INT16      lstrncmp16(LPCSTR,LPCSTR,INT16);
-INT32      lstrncmp32A(LPCSTR,LPCSTR,INT32);
-INT32      lstrncmp32W(LPCWSTR,LPCWSTR,INT32);
-#define    lstrncmp WINELIB_NAME_AW(lstrncmp)
-INT16      lstrncmpi16(LPCSTR,LPCSTR,INT16);
-INT32      lstrncmpi32A(LPCSTR,LPCSTR,INT32);
-INT32      lstrncmpi32W(LPCWSTR,LPCWSTR,INT32);
-#define    lstrncmpi WINELIB_NAME_AW(lstrncmpi)
 INT16      wsnprintf16(LPSTR,UINT16,LPCSTR,...);
 INT32      wsnprintf32A(LPSTR,UINT32,LPCSTR,...);
 INT32      wsnprintf32W(LPWSTR,UINT32,LPCWSTR,...);
@@ -3887,6 +4078,15 @@
 INT32      wvsprintf32W(LPWSTR,LPCWSTR,LPCVOID);
 #define    wvsprintf WINELIB_NAME_AW(wvsprintf)
 
+/* Extra functions that don't exist in the Windows API */
+
+INT32      lstrncmp32A(LPCSTR,LPCSTR,INT32);
+INT32      lstrncmp32W(LPCWSTR,LPCWSTR,INT32);
+INT32      lstrncmpi32A(LPCSTR,LPCSTR,INT32);
+INT32      lstrncmpi32W(LPCWSTR,LPCWSTR,INT32);
+LPWSTR     lstrcpynAtoW(LPWSTR,LPCSTR,INT32);
+LPSTR      lstrcpynWtoA(LPSTR,LPCWSTR,INT32);
+
 /* Library data types defined as a transition aid for the emulator. */
 /* These should _not_ be used in the emulator and will be removed someday. */
 
@@ -3958,7 +4158,7 @@
 UINT       AnsiLowerBuff(LPSTR,UINT);
 SEGPTR     AnsiNext(SEGPTR);
 SEGPTR     AnsiPrev(SEGPTR,SEGPTR);
-INT        AnsiToOem(LPSTR,LPSTR);
+INT        AnsiToOem(LPCSTR,LPSTR);
 void       AnsiToOemBuff(LPCSTR,LPSTR,UINT);
 LPSTR      AnsiUpper(LPSTR);
 UINT       AnsiUpperBuff(LPSTR,UINT);
@@ -3975,9 +4175,7 @@
 INT        Catch(LPCATCHBUF);
 BOOL       ChangeClipboardChain(HWND,HWND);
 WORD       ChangeSelector(WORD,WORD);
-BOOL       CheckDlgButton(HWND,INT,UINT);
 INT        CheckMenuItem(HMENU,UINT,UINT);
-BOOL       CheckRadioButton(HWND,UINT,UINT,UINT);
 BOOL       Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
 int        ClearCommBreak(int);
 BOOL       CloseClipboard(void);
@@ -3986,18 +4184,10 @@
 void       CloseSound(void);
 BOOL       CloseWindow(HWND);
 int        ConvertRequest(HWND,LPKANJISTRUCT);
-#ifdef WINELIB32
-HCURSOR    CopyCursor(HCURSOR); /* Win32 */
-HICON      CopyIcon(HICON); /* Win32 */
-#else
-HCURSOR    CopyCursor(HINSTANCE,HCURSOR); /* Win16 */
-HICON      CopyIcon(HINSTANCE,HICON); /* Win16 */
-#endif
 HMETAFILE  CopyMetaFile(HMETAFILE,LPCSTR);
 INT        CountClipboardFormats(void);
 INT        CountVoiceNotes(INT);
 HBRUSH     CreateBrushIndirect(const LOGBRUSH16*);
-BOOL       CreateCaret(HWND,HBITMAP,INT,INT);
 HDC        CreateCompatibleDC(HDC);
 HCURSOR    CreateCursor(HANDLE,INT,INT,INT,INT,const BYTE*,const BYTE*);
 HANDLE     CreateCursorIconIndirect(HANDLE,CURSORICONINFO*,const BYTE*,const BYTE*);
@@ -4005,7 +4195,6 @@
 HBRUSH     CreateDIBPatternBrush(HGLOBAL,UINT);
 HBITMAP    CreateDIBitmap(HDC,BITMAPINFOHEADER*,DWORD,LPVOID,BITMAPINFO*,UINT);
 HFONT      CreateFont(INT,INT,INT,INT,INT,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,LPCSTR);
-HFONT      CreateFontIndirect(const LOGFONT16*);
 HBRUSH     CreateHatchBrush(INT,COLORREF);
 HDC        CreateIC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*);
 HICON      CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*);
@@ -4025,7 +4214,6 @@
 BOOL       DeleteMenu(HMENU,UINT,UINT);
 BOOL       DeleteMetaFile(HMETAFILE);
 BOOL       DeleteObject(HGDIOBJ16);
-BOOL       DestroyCaret(void);
 BOOL       DestroyCursor(HCURSOR);
 BOOL       DestroyIcon(HICON);
 BOOL       DestroyMenu(HMENU);
@@ -4059,7 +4247,6 @@
 int        ExcludeClipRect(HDC,short,short,short,short);
 int        ExcludeVisRect(HDC,short,short,short,short);
 BOOL       ExitWindows(DWORD,WORD);
-BOOL       ExtFloodFill(HDC,INT,INT,COLORREF,WORD);
 HICON      ExtractIcon(HINSTANCE,LPCSTR,WORD);
 HANDLE16   FarGetOwner(HANDLE16);
 void       FarSetOwner(HANDLE16,HANDLE16);
@@ -4070,7 +4257,6 @@
 HINSTANCE  FindExecutable(LPCSTR,LPCSTR,LPSTR);
 HRSRC      FindResource(HINSTANCE,SEGPTR,SEGPTR);
 BOOL       FlashWindow(HWND,BOOL);
-BOOL       FloodFill(HDC,INT,INT,COLORREF);
 int        FlushComm(int,int);
 BOOL       FrameRgn(HDC,HRGN,HBRUSH,int,int);
 void       FreeLibrary(HANDLE);
@@ -4086,7 +4272,6 @@
 WORD       GetBkMode(HDC);
 DWORD      GetBrushOrg(HDC);
 HWND       GetCapture(void);
-WORD       GetCaretBlinkTime(void);
 BOOL       GetCharABCWidths(HDC,UINT,UINT,LPABC16);
 BOOL       GetCharWidth(HDC,WORD,WORD,LPINT16);
 HRGN       GetClipRgn(HDC);
@@ -4115,7 +4300,6 @@
 HWND       GetDesktopWindow(void);
 int        GetDeviceCaps(HDC,WORD);
 DWORD      GetDialogBaseUnits(void);
-int        GetDlgCtrlID(HWND);
 HWND       GetDlgItem(HWND,WORD);
 WORD       GetDlgItemInt(HWND,WORD,BOOL*,BOOL);
 WORD       GetDoubleClickTime(void);
@@ -4165,7 +4349,6 @@
 int        GetPriorityClipboardFormat(WORD*,short);
 UINT       GetPrivateProfileInt(LPCSTR,LPCSTR,INT,LPCSTR);
 INT        GetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT,LPCSTR);
-FARPROC    GetProcAddress(HANDLE,SEGPTR);
 UINT       GetProfileInt(LPCSTR,LPCSTR,INT);
 INT        GetProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT);
 HANDLE     GetProp(HWND,SEGPTR);
@@ -4189,10 +4372,7 @@
 BOOL       GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
 VOID       GetSystemTime(LPSYSTEMTIME); /* Win32 */
 DWORD      GetTabbedTextExtent(HDC,LPSTR,int,int,LPINT16);
-HINSTANCE  GetTaskDS(void);
-HQUEUE     GetTaskQueue(HTASK);
 BYTE       GetTempDrive(BYTE);
-INT        GetTempFileName(BYTE,LPCSTR,UINT,LPSTR);
 WORD       GetTextAlign(HDC);
 short      GetTextCharacterExtra(HDC);
 COLORREF   GetTextColor(HDC);
@@ -4200,7 +4380,6 @@
 INT        GetTextFace(HDC,INT,LPSTR);
 LPINT16    GetThresholdEvent(void);
 int        GetThresholdStatus(void);
-DWORD      GetTickCount(void);
 HWND       GetTopWindow(HWND);
 LONG       GetVersion(void);
 DWORD      GetViewportExt(HDC);
@@ -4211,7 +4390,6 @@
 HDC        GetWindowDC(HWND);
 DWORD      GetWindowExt(HDC);
 DWORD      GetWindowOrg(HDC);
-HANDLE     GetWindowTask(HWND);
 int        GetWindowTextLength(HWND);
 UINT       GetWindowsDirectory(LPSTR,UINT);
 DWORD      GlobalDOSAlloc(DWORD);
@@ -4228,7 +4406,6 @@
 void       GlobalUnfix(HGLOBAL16);
 SEGPTR     GlobalWire(HGLOBAL16);
 BOOL       GrayString(HDC,HBRUSH,FARPROC,LPARAM,INT,INT,INT,INT,INT);
-void       HideCaret(HWND);
 BOOL       HiliteMenuItem(HWND,HMENU,UINT,UINT);
 BOOL       InSendMessage(void);
 WORD       InitAtomTable(WORD);
@@ -4243,10 +4420,6 @@
 BOOL       IsBadReadPtr(SEGPTR,WORD);
 BOOL       IsBadStringPtr(SEGPTR,WORD);
 BOOL       IsBadWritePtr(SEGPTR,WORD);
-BOOL       IsCharAlpha(char);
-BOOL       IsCharAlphaNumeric(char);
-BOOL       IsCharLower(char);
-BOOL       IsCharUpper(char);
 BOOL       IsChild(HWND,HWND);
 BOOL       IsClipboardFormatAvailable(WORD);
 BOOL       IsDialogMessage(HWND,LPMSG16);
@@ -4256,13 +4429,9 @@
 BOOL       IsMenu(HMENU);
 BOOL       IsTask(HTASK);
 HTASK      IsTaskLocked(void);
-BOOL       IsWindow(HWND);
 BOOL       IsWindowEnabled(HWND);
-BOOL       IsWindowUnicode(HWND);
 BOOL       IsWindowVisible(HWND);
 BOOL       IsZoomed(HWND);
-BOOL       KillSystemTimer(HWND,WORD);
-BOOL       KillTimer(HWND,WORD);
 void       LimitEmsPages(DWORD);
 void       LineDDA(short,short,short,short,FARPROC,long);
 BOOL       LineTo(HDC,short,short);
@@ -4284,12 +4453,11 @@
 DWORD      MoveTo(HDC,short,short);
 BOOL       MoveWindow(HWND,short,short,short,short,BOOL);
 DWORD      OemKeyScan(WORD);
-BOOL       OemToAnsi(LPSTR,LPSTR);
-void       OemToAnsiBuff(LPSTR,LPSTR,INT);
+BOOL       OemToAnsi(LPCSTR,LPSTR);
+void       OemToAnsiBuff(LPCSTR,LPSTR,INT);
 int        OffsetClipRgn(HDC,short,short);
 BOOL       OpenClipboard(HWND);
 int        OpenComm(LPCSTR,UINT,UINT);
-HFILE      OpenFile(LPCSTR,OFSTRUCT*,UINT);
 BOOL       OpenIcon(HWND);
 int        OpenSound(void);
 void       OutputDebugString(LPCSTR);
@@ -4344,8 +4512,6 @@
 WORD       SetBkMode(HDC,WORD);
 DWORD      SetBrushOrg(HDC,short,short);
 HWND       SetCapture(HWND);
-void       SetCaretBlinkTime(WORD);
-void       SetCaretPos(short,short);
 HANDLE     SetClipboardData(WORD,HANDLE);
 HWND       SetClipboardViewer(HWND);
 int        SetCommBreak(int);
@@ -4393,13 +4559,11 @@
 WORD       SetSystemPaletteUse(HDC,WORD);
 BOOL       SetSystemPowerState(BOOL, BOOL);
 BOOL       SetSystemTime(const SYSTEMTIME*);
-WORD       SetSystemTimer(HWND,WORD,WORD,FARPROC);
 HQUEUE     SetTaskQueue(HTASK,HQUEUE);
 WORD       SetTextAlign(HDC,WORD);
 short      SetTextCharacterExtra(HDC,short);
 DWORD      SetTextColor(HDC,DWORD);
 short      SetTextJustification(HDC,short,short);
-WORD       SetTimer(HWND,WORD,WORD,FARPROC);
 int        SetVoiceAccent(int,int,int,int,int);
 int        SetVoiceEnvelope(int,int,int);
 int        SetVoiceNote(int,int,int,int);
@@ -4411,7 +4575,6 @@
 FARPROC    SetWindowsHook(short,FARPROC);
 HHOOK      SetWindowsHookEx(short,HOOKPROC,HINSTANCE,HTASK);
 HINSTANCE  ShellExecute(HWND,LPCSTR,LPCSTR,LPSTR,LPCSTR,INT);
-void       ShowCaret(HWND);
 int        ShowCursor(BOOL);
 void       ShowOwnedPopups(HWND,BOOL);
 void       ShowScrollBar(HWND,WORD,BOOL);
@@ -4460,10 +4623,7 @@
 void       Yield(void);
 LONG       _hread(HFILE,SEGPTR,LONG);
 LONG       _hwrite(HFILE,LPCSTR,LONG);
-HFILE      _lclose(HFILE);
-HFILE      _lcreat(LPCSTR,INT);
 LONG       _llseek(HFILE,LONG,INT);
-HFILE      _lopen(LPCSTR,INT);
 INT        _lread(HFILE,SEGPTR,WORD);
 INT        _lwrite(HFILE,LPCSTR,WORD);