diff --git a/dlls/avifil32/api.c b/dlls/avifil32/api.c
index 29a7749..332dbc4 100644
--- a/dlls/avifil32/api.c
+++ b/dlls/avifil32/api.c
@@ -503,6 +503,7 @@
 }
 
 /***********************************************************************
+ *		AVIStreamInfo		(AVIFIL32.@)
  *		AVIStreamInfoA		(AVIFIL32.@)
  *		AVIStreamInfo		(AVIFILE.162)
  */
diff --git a/dlls/comcat/regsvr.c b/dlls/comcat/regsvr.c
index 9256796..e2f1b20 100644
--- a/dlls/comcat/regsvr.c
+++ b/dlls/comcat/regsvr.c
@@ -19,6 +19,9 @@
  */
 
 #define COM_NO_WINDOWS_H
+
+#include <string.h>
+
 #include "windef.h"
 #include "winbase.h"
 #include "winuser.h"
@@ -28,8 +31,6 @@
 #include "ole2.h"
 #include "comcat.h"
 
-#include "string.h"
-
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(ole);
diff --git a/dlls/ctl3d/ctl3d.c b/dlls/ctl3d/ctl3d.c
index 6567546..c6f0163 100644
--- a/dlls/ctl3d/ctl3d.c
+++ b/dlls/ctl3d/ctl3d.c
@@ -23,95 +23,221 @@
 
 static BOOL16 CTL3D16_is_auto_subclass = FALSE;
 
+/***********************************************************************
+ *		Ctl3dAutoSubclass (CTL3D.16)
+ *		Ctl3dAutoSubclass (CTL3DV2.16)
+ */
 BOOL16 WINAPI Ctl3dAutoSubclass16(HINSTANCE16 hInst)
 {
     CTL3D16_is_auto_subclass = TRUE;
     return TRUE;
 }
 
+/***********************************************************************
+ *		Ctl3dAutoSubclassEx (CTL3D.27)
+ *		Ctl3dAutoSubclassEx (CTL3DV2.27)
+ */
 BOOL16 WINAPI Ctl3dAutoSubclassEx16(HINSTANCE16 hInst, DWORD type)
 {
     CTL3D16_is_auto_subclass = TRUE;
     return TRUE;
 }
 
+/***********************************************************************
+ *		Ctl3dColorChange (CTL3D.6)
+ *		Ctl3dColorChange (CTL3DV2.6)
+ */
 BOOL16 WINAPI Ctl3dColorChange16(void)
 {
     return TRUE;
 }
 
+/***********************************************************************
+ *		Ctl3dCtlColor (CTL3D.4)
+ *		Ctl3dCtlColor (CTL3DV2.4)
+ */
 HBRUSH WINAPI Ctl3dCtlColor16(HDC16 hdc, LONG hwnd)
 {
     return 0;
 }
 
+/***********************************************************************
+ *		Ctl3dCtlColorEx (CTL3D.18)
+ *		Ctl3dCtlColorEx (CTL3DV2.18)
+ */
 HBRUSH WINAPI Ctl3dCtlColorEx16(UINT16 msg, WPARAM16 wParam, LPARAM lParam)
 {
     return 0;
 }
 
+/***********************************************************************
+ *		Ctl3dDlgFramePaint (CTL3D.20)
+ *		Ctl3dDlgFramePaint (CTL3DV2.20)
+ */
 LONG WINAPI Ctl3dDlgFramePaint16(HWND16 hwnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam)
 {
     return DefWindowProc16(hwnd, msg, wParam, lParam);
 }
 
+/***********************************************************************
+ *		Ctl3dEnabled (CTL3D.5)
+ *		Ctl3dEnabled (CTL3DV2.5)
+ */
 BOOL16 WINAPI Ctl3dEnabled16(void)
 {
     return FALSE;
 }
 
+/***********************************************************************
+ *		Ctl3dGetVer (CTL3D.1)
+ *		Ctl3dGetVer (CTL3DV2.1)
+ */
 WORD WINAPI Ctl3dGetVer16(void)
 {
     return MAKEWORD(31,2);
 }
 
+/***********************************************************************
+ *		Ctl3dIsAutoSubclass (CTL3D.23)
+ *		Ctl3dIsAutoSubclass (CTL3DV2.23)
+ */
 BOOL16 WINAPI Ctl3dIsAutoSubclass16(void)
 {
     return CTL3D16_is_auto_subclass;
 }
 
+/***********************************************************************
+ *		Ctl3dRegister (CTL3D.12)
+ *		Ctl3dRegister (CTL3DV2.12)
+ */
 BOOL16 WINAPI Ctl3dRegister16(HINSTANCE16 hInst)
 {
     return FALSE;
 }
 
+/***********************************************************************
+ *		Ctl3dSubclassCtl (CTL3D.3)
+ *		Ctl3dSubclassCtl (CTL3DV2.3)
+ */
 BOOL16 WINAPI Ctl3dSubclassCtl16(HWND16 hwnd)
 {
     return FALSE;
 }
 
+/***********************************************************************
+ *		Ctl3dSubclassCtlEx (CTL3D.25)
+ *		Ctl3dSubclassCtlEx (CTL3DV2.25)
+ */
 BOOL16 WINAPI Ctl3dSubclassCtlEx16(HWND16 hwnd, INT16 type)
 {
     return FALSE;
 }
 
+/***********************************************************************
+ *		Ctl3dSubclassDlg (CTL3D.2)
+ *		Ctl3dSubclassDlg (CTL3DV2.2)
+ */
 BOOL16 WINAPI Ctl3dSubclassDlg16(HWND16 hwnd, WORD types)
 {
     return FALSE;
 }
 
+/***********************************************************************
+ *		Ctl3dSubclassDlgEx (CTL3D.21)
+ *		Ctl3dSubclassDlgEx (CTL3DV2.21)
+ */
 BOOL16 WINAPI Ctl3dSubclassDlgEx16(HWND16 hwnd, DWORD types)
 {
     return FALSE;
 }
 
+/***********************************************************************
+ *		Ctl3dUnAutoSubclass (CTL3D.24)
+ *		Ctl3dUnAutoSubclass (CTL3DV2.24)
+ */
 BOOL16 WINAPI Ctl3dUnAutoSubclass16(void)
 {
     CTL3D16_is_auto_subclass = FALSE;
     return FALSE;
 }
 
+/***********************************************************************
+ *		Ctl3dUnregister (CTL3D.13)
+ *		Ctl3dUnregister (CTL3DV2.13)
+ */
 BOOL16 WINAPI Ctl3dUnregister16(HINSTANCE16 hInst)
 {
     CTL3D16_is_auto_subclass = FALSE;
     return TRUE;
 }
 
+/***********************************************************************
+ *		Ctl3dUnsubclassCtl (CTL3D.26)
+ *		Ctl3dUnsubclassCtl (CTL3DV2.26)
+ */
 BOOL16 WINAPI Ctl3dUnsubclassCtl16(HWND16 hwnd)
 {
     return FALSE;
 }
 
+/***********************************************************************
+ *		Ctl3dWinIniChange (CTL3D.22)
+ *		Ctl3dWinIniChange (CTL3DV2.22)
+ */
 void WINAPI Ctl3dWinIniChange16(void)
 {
 }
+
+/***********************************************************************
+ *		ComboWndProc3d (CTL3D.10)
+ *		ComboWndProc3d (CTL3DV2.10)
+ */
+LRESULT WINAPI ComboWndProc3d16(HWND16 hwnd, UINT16 msg,WPARAM16 wparam, LPARAM lparam)
+{
+    return 0;
+}
+
+/***********************************************************************
+ *		BtnWndProc3d (CTL3D.7)
+ *		BtnWndProc3d (CTL3DV2.7)
+ */
+LRESULT WINAPI BtnWndProc3d16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam, LPARAM lparam)
+{
+    return 0;
+}
+
+/***********************************************************************
+ *		StaticWndProc3d (CTL3D.11)
+ *		StaticWndProc3d (CTL3DV2.11)
+ */
+LRESULT WINAPI StaticWndProc3d16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam, LPARAM lparam)
+{
+    return 0;
+}
+
+/***********************************************************************
+ *		EditWndProc3d (CTL3D.8)
+ *		EditWndProc3d (CTL3DV2.8)
+ */
+LRESULT WINAPI EditWndProc3d16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam, LPARAM lparam)
+{
+    return 0;
+}
+
+/***********************************************************************
+ *		ListWndProc3d (CTL3D.9)
+ *		ListWndProc3d (CTL3DV2.9)
+ */
+LRESULT WINAPI ListWndProc3d16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam, LPARAM lparam)
+{
+    return 0;
+}
+
+/***********************************************************************
+ *		Ctl3dDlgProc (CTL3D.17)
+ *		Ctl3dDlgProc (CTL3DV2.17)
+ */
+LRESULT WINAPI Ctl3dDlgProc16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam, LPARAM lparam)
+{
+    return 0;
+}
diff --git a/dlls/ctl3d/ctl3d.spec b/dlls/ctl3d/ctl3d.spec
index 7a40513..36d5a81 100644
--- a/dlls/ctl3d/ctl3d.spec
+++ b/dlls/ctl3d/ctl3d.spec
@@ -4,15 +4,15 @@
 4  pascal16 Ctl3dCtlColor(word long) Ctl3dCtlColor16
 5  pascal16 Ctl3dEnabled() Ctl3dEnabled16
 6  pascal16 Ctl3dColorChange() Ctl3dColorChange16
-7  stub BtnWndProc3d
-8  stub EditWndProc3d
-9  stub ListWndProc3d
-10 stub ComboWndProc3d
-11 stub StaticWndProc3d
+7  pascal BtnWndProc3d(word word word long) BtnWndProc3d16
+8  pascal EditWndProc3d(word word word long) EditWndProc3d16
+9  pascal ListWndProc3d(word word word long) ListWndProc3d16
+10 pascal ComboWndProc3d(word word word long) ComboWndProc3d16
+11 pascal StaticWndProc3d(word word word long) StaticWndProc3d16
 12 pascal16 Ctl3dRegister(word) Ctl3dRegister16
 13 pascal16 Ctl3dUnregister(word) Ctl3dUnregister16
 16 pascal16 Ctl3dAutoSubclass(word) Ctl3dAutoSubclass16
-17 stub Ctl3dDlgProc
+17 pascal Ctl3dDlgProc(word word word long) Ctl3dDlgProc16
 18 pascal16 Ctl3dCtlColorEx(word word long) Ctl3dCtlColorEx16
 19 stub Ctl3dSetStyle
 20 pascal Ctl3dDlgFramePaint(word word word long) Ctl3dDlgFramePaint16
diff --git a/dlls/ctl3d/ctl3d32.c b/dlls/ctl3d/ctl3d32.c
index b44438d..f9e646b 100644
--- a/dlls/ctl3d/ctl3d32.c
+++ b/dlls/ctl3d/ctl3d32.c
@@ -116,31 +116,49 @@
 {
 }
 
+/***********************************************************************
+ *		ComboWndProc3d (CTL3D32.10)
+ */
 LRESULT WINAPI ComboWndProc3d(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
 {
     return 0;
 }
 
+/***********************************************************************
+ *		BtnWndProc3d (CTL3D32.7)
+ */
 LRESULT WINAPI BtnWndProc3d(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
 {
     return 0;
 }
 
+/***********************************************************************
+ *		StaticWndProc3d (CTL3D32.11)
+ */
 LRESULT WINAPI StaticWndProc3d(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
 {
     return 0;
 }
 
+/***********************************************************************
+ *		EditWndProc3d (CTL3D32.8)
+ */
 LRESULT WINAPI EditWndProc3d(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
 {
     return 0;
 }
 
+/***********************************************************************
+ *		ListWndProc3d (CTL3D32.9)
+ */
 LRESULT WINAPI ListWndProc3d(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
 {
     return 0;
 }
 
+/***********************************************************************
+ *		Ctl3dDlgProc (CTL3D32.17)
+ */
 LRESULT WINAPI Ctl3dDlgProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
 {
     return 0;
diff --git a/dlls/ctl3d/ctl3dv2.spec b/dlls/ctl3d/ctl3dv2.spec
index 7a40513..36d5a81 100644
--- a/dlls/ctl3d/ctl3dv2.spec
+++ b/dlls/ctl3d/ctl3dv2.spec
@@ -4,15 +4,15 @@
 4  pascal16 Ctl3dCtlColor(word long) Ctl3dCtlColor16
 5  pascal16 Ctl3dEnabled() Ctl3dEnabled16
 6  pascal16 Ctl3dColorChange() Ctl3dColorChange16
-7  stub BtnWndProc3d
-8  stub EditWndProc3d
-9  stub ListWndProc3d
-10 stub ComboWndProc3d
-11 stub StaticWndProc3d
+7  pascal BtnWndProc3d(word word word long) BtnWndProc3d16
+8  pascal EditWndProc3d(word word word long) EditWndProc3d16
+9  pascal ListWndProc3d(word word word long) ListWndProc3d16
+10 pascal ComboWndProc3d(word word word long) ComboWndProc3d16
+11 pascal StaticWndProc3d(word word word long) StaticWndProc3d16
 12 pascal16 Ctl3dRegister(word) Ctl3dRegister16
 13 pascal16 Ctl3dUnregister(word) Ctl3dUnregister16
 16 pascal16 Ctl3dAutoSubclass(word) Ctl3dAutoSubclass16
-17 stub Ctl3dDlgProc
+17 pascal Ctl3dDlgProc(word word word long) Ctl3dDlgProc16
 18 pascal16 Ctl3dCtlColorEx(word word long) Ctl3dCtlColorEx16
 19 stub Ctl3dSetStyle
 20 pascal Ctl3dDlgFramePaint(word word word long) Ctl3dDlgFramePaint16
diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
index 293acb4..b6a7bbc 100644
--- a/dlls/d3d8/d3d8_main.c
+++ b/dlls/d3d8/d3d8_main.c
@@ -39,7 +39,7 @@
     return 0;
 }
 
-void DebugSetMute(void)
+void WINAPI DebugSetMute(void)
 {
     /* nothing to do */
 }
diff --git a/dlls/d3d9/d3d9_main.c b/dlls/d3d9/d3d9_main.c
index 5b1be9d..4b7b4f0 100644
--- a/dlls/d3d9/d3d9_main.c
+++ b/dlls/d3d9/d3d9_main.c
@@ -45,7 +45,7 @@
     return 0;
 }
 
-void DebugSetMute(void) {
+void WINAPI DebugSetMute(void) {
     /* nothing to do */
 }
 
diff --git a/dlls/iphlpapi/ifenum.c b/dlls/iphlpapi/ifenum.c
index 04698fd..8505081 100644
--- a/dlls/iphlpapi/ifenum.c
+++ b/dlls/iphlpapi/ifenum.c
@@ -64,53 +64,53 @@
 #include <stdlib.h>
 #include <string.h>
 
-#if HAVE_UNISTD_H
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
 #include <sys/types.h>
 
-#if HAVE_SYS_SOCKET_H
+#ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
 
-#if HAVE_NETINET_IN_H
+#ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 
-#if HAVE_ARPA_INET_H
+#ifdef HAVE_ARPA_INET_H
 #include <arpa/inet.h>
 #endif
 
-#if HAVE_NET_IF_H
+#ifdef HAVE_NET_IF_H
 #include <net/if.h>
 #endif
 
-#if HAVE_NET_IF_ARP_H
+#ifdef HAVE_NET_IF_ARP_H
 #include <net/if_arp.h>
 #endif
 
-#if HAVE_NET_ROUTE_H
+#ifdef HAVE_NET_ROUTE_H
 #include <net/route.h>
 #endif
 
-#if HAVE_SYS_IOCTL_H
+#ifdef HAVE_SYS_IOCTL_H
 #include <sys/ioctl.h>
 #endif
 
-#if HAVE_SYS_SYSCTL_H
+#ifdef HAVE_SYS_SYSCTL_H
 #include <sys/sysctl.h>
 #endif
 
-#if HAVE_SYS_SOCKIO_H
+#ifdef HAVE_SYS_SOCKIO_H
 #include <sys/sockio.h>
 #endif
 
-#if HAVE_NET_IF_DL_H
+#ifdef HAVE_NET_IF_DL_H
 #include <net/if_dl.h>
 #endif
 
-#if HAVE_NET_IF_TYPES_H
+#ifdef HAVE_NET_IF_TYPES_H
 #include <net/if_types.h>
 #endif
 
@@ -118,7 +118,7 @@
 #include "iprtrmib.h"
 #include "ifenum.h"
 
-#if HAVE_STRUCT_SOCKADDR_SA_LEN
+#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
 #define ifreq_len(ifr) \
  max(sizeof(struct ifreq), sizeof((ifr)->ifr_name)+(ifr)->ifr_addr.sa_len)
 #else
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 2ef5b31..07a52ee 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -23,12 +23,15 @@
 #include <stdlib.h>
 #include <sys/types.h>
 #ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
+# include <netinet/in.h>
 #endif
 #ifdef HAVE_ARPA_NAMESER_H
-#include <arpa/nameser.h>
+# include <arpa/nameser.h>
 #endif
-#include <resolv.h>
+#ifdef HAVE_RESOLV_H
+# include <resolv.h>
+#endif
+
 #include "winbase.h"
 #include "iphlpapi.h"
 #include "ifenum.h"
diff --git a/dlls/kernel/locale.c b/dlls/kernel/locale.c
index 2de8049..0e9d82d 100644
--- a/dlls/kernel/locale.c
+++ b/dlls/kernel/locale.c
@@ -1428,9 +1428,9 @@
  *           EnumSystemLanguageGroupsA    (KERNEL32.@)
  */
 BOOL WINAPI EnumSystemLanguageGroupsA(
-  LANGUAGEGROUP_ENUMPROCA pLangGroupEnumProc, /* callback function */
-  DWORD dwFlags,                             /* language groups */
-  LONG_PTR  lParam                           /* callback parameter */
+  LANGUAGEGROUP_ENUMPROCA pLangGroupEnumProc, /* [in] callback function */
+  DWORD dwFlags,                              /* [in] language groups */
+  LONG_PTR  lParam                            /* [in] callback parameter */
 )
 {
   FIXME("stub\n");
@@ -1442,9 +1442,9 @@
  *           EnumSystemLanguageGroupsW    (KERNEL32.@)
  */
 BOOL WINAPI EnumSystemLanguageGroupsW(
-  LANGUAGEGROUP_ENUMPROCW pLangGroupEnumProc, /* callback function */
-  DWORD dwFlags,                             /* language groups */
-  LONG_PTR  lParam                           /* callback parameter */
+  LANGUAGEGROUP_ENUMPROCW pLangGroupEnumProc, /* [in] callback function */
+  DWORD dwFlags,                              /* [in] language groups */
+  LONG_PTR  lParam                            /* [in] callback parameter */
 )
 {
   FIXME("stub\n");
diff --git a/dlls/ole32/memlockbytes16.c b/dlls/ole32/memlockbytes16.c
index 7474391..f0154c5 100644
--- a/dlls/ole32/memlockbytes16.c
+++ b/dlls/ole32/memlockbytes16.c
@@ -80,7 +80,7 @@
 HRESULT WINAPI HGLOBALLockBytesImpl16_QueryInterface(
     ILockBytes16* iface,
     REFIID        riid,        /* [in] */
-    void**        ppvObject);  /* [iid_is][out] */
+    void**        ppvObject);  /* [out][iid_is] */
 
 ULONG WINAPI HGLOBALLockBytesImpl16_AddRef(
     ILockBytes16* iface);
@@ -91,14 +91,14 @@
 HRESULT WINAPI HGLOBALLockBytesImpl16_ReadAt(
     ILockBytes16*  iface,
     ULARGE_INTEGER ulOffset,  /* [in] */
-    void*          pv,        /* [length_is][size_is][out] */
+    void*          pv,        /* [out][length_is][size_is] */
     ULONG          cb,        /* [in] */
     ULONG*         pcbRead);  /* [out] */
 
 HRESULT WINAPI HGLOBALLockBytesImpl16_WriteAt(
     ILockBytes16*  iface,
     ULARGE_INTEGER ulOffset,    /* [in] */
-    const void*    pv,          /* [size_is][in] */
+    const void*    pv,          /* [in][size_is] */
     ULONG          cb,          /* [in] */
     ULONG*         pcbWritten); /* [out] */
 
@@ -230,7 +230,7 @@
 HRESULT WINAPI HGLOBALLockBytesImpl16_QueryInterface(
       ILockBytes16*  iface,	/* [in] SEGPTR */
       REFIID       riid,        /* [in] */
-      void**       ppvObject)   /* [iid_is][out] (ptr to SEGPTR!) */
+      void**       ppvObject)   /* [out][iid_is] (ptr to SEGPTR!) */
 {
   HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)MapSL((SEGPTR)iface);
 
@@ -317,7 +317,7 @@
 HRESULT WINAPI HGLOBALLockBytesImpl16_ReadAt(
       ILockBytes16*  iface,
       ULARGE_INTEGER ulOffset,  /* [in] */
-      void*          pv,        /* [length_is][size_is][out] */
+      void*          pv,        /* [out][length_is][size_is] */
       ULONG          cb,        /* [in] */
       ULONG*         pcbRead)   /* [out] */
 {
@@ -390,7 +390,7 @@
 HRESULT WINAPI HGLOBALLockBytesImpl16_WriteAt(
       ILockBytes16*  iface,
       ULARGE_INTEGER ulOffset,    /* [in] */
-      const void*    pv,          /* [size_is][in] */
+      const void*    pv,          /* [in][size_is] */
       ULONG          cb,          /* [in] */
       ULONG*         pcbWritten)  /* [out] */
 {
@@ -563,9 +563,10 @@
  *	Staddard OLE error return codes.
  *
  */
-HRESULT WINAPI CreateILockBytesOnHGlobal16(HGLOBAL16      hGlobal,
-                                           BOOL16         fDeleteOnRelease,
-                                           /*SEGPTR**/	LPLOCKBYTES16* ppLkbyt)
+HRESULT WINAPI CreateILockBytesOnHGlobal16(
+	HGLOBAL16      hGlobal,          /* [in] */
+	BOOL16         fDeleteOnRelease, /* [in] */
+	LPLOCKBYTES16 *ppLkbyt)          /* [out] (ptr to SEGPTR!) */
 {
   HGLOBALLockBytesImpl16* newLockBytes; /* SEGPTR */
 
diff --git a/dlls/ole32/ole2.spec b/dlls/ole32/ole2.spec
index 8b1e650..e7a86ad 100644
--- a/dlls/ole32/ole2.spec
+++ b/dlls/ole32/ole2.spec
@@ -51,7 +51,7 @@
 51 stub OLEDUPLICATEDATA
 52 stub OLEGETICONOFFILE
 53 stub OLEGETICONOFCLASS
-54 pascal CreateILockBytesOnHGLOBAL(word word ptr) CreateILockBytesOnHGlobal16
+54 pascal CreateILockBytesOnHGlobal(word word ptr) CreateILockBytesOnHGlobal16
 55 stub GETHGLOBALFROMILOCKBYTES
 56 pascal16 OleMetaFilePictFromIconAndLabel(word str str word) OleMetaFilePictFromIconAndLabel16
 57 stub GETCLASSFILE
@@ -149,7 +149,7 @@
 500 cdecl HGLOBALLockBytesImpl16_QueryInterface(segptr ptr ptr) HGLOBALLockBytesImpl16_QueryInterface
 501 cdecl HGLOBALLockBytesImpl16_AddRef(ptr) HGLOBALLockBytesImpl16_AddRef
 502 cdecl HGLOBALLockBytesImpl16_Release(ptr) HGLOBALLockBytesImpl16_Release
-503 cdecl HGLOBALLockBytesImpl16_ReadAt(ptr long long ptr ptr) HGLOBALLockBytesImpl16_ReadAt
+503 cdecl HGLOBALLockBytesImpl16_ReadAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_ReadAt
 504 cdecl HGLOBALLockBytesImpl16_WriteAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_WriteAt
 505 cdecl HGLOBALLockBytesImpl16_Flush(ptr) HGLOBALLockBytesImpl16_Flush
 506 cdecl HGLOBALLockBytesImpl16_SetSize(ptr long long) HGLOBALLockBytesImpl16_SetSize
diff --git a/dlls/ole32/regsvr.c b/dlls/ole32/regsvr.c
index 9c91785..d99171c 100644
--- a/dlls/ole32/regsvr.c
+++ b/dlls/ole32/regsvr.c
@@ -18,6 +18,10 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "config.h"
+
+#include <string.h>
+
 #include "windef.h"
 #include "winbase.h"
 #include "winuser.h"
@@ -27,8 +31,6 @@
 #include "ole2.h"
 #include "olectl.h"
 
-#include "string.h"
-
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(ole);
diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c
index e20d543..d2cb70b 100644
--- a/dlls/oleaut32/olepicture.c
+++ b/dlls/oleaut32/olepicture.c
@@ -46,7 +46,7 @@
 /* Must be before wine includes, the header has things conflicting with
  * WINE headers.
  */
-#ifdef HAVE_LIBGIF
+#ifdef HAVE_GIF_LIB_H
 # include <gif_lib.h>
 #endif
 
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index 0cd2c24..6a2f9c7 100644
--- a/dlls/opengl32/wgl.c
+++ b/dlls/opengl32/wgl.c
@@ -684,15 +684,21 @@
   return TRUE;
 }
 
+/**********************************************************************/
+
 /* Some WGL extensions... */
 static const char *WGL_extensions = "WGL_ARB_extensions_string WGL_EXT_extensions_string";
 
+/**********************************************************************/
+
 const char * WINAPI wglGetExtensionsStringEXT(void) {
     TRACE("() returning \"%s\"\n", WGL_extensions);
 
     return WGL_extensions;
 }
 
+/**********************************************************************/
+
 static void process_detach(void)
 {
   glXDestroyContext(default_display, default_cx);
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index fd1c139..e842ca9 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -282,6 +282,7 @@
  *  Verified on Win98 / IE 5 (SHELL32 4.72, March 1999 build) to be ANSI.
  *  This is Unicode on NT/2000
  */
+
 static BOOL SHNotifyRemoveDirectoryA(LPCSTR path)
 {
 	BOOL ret;
@@ -301,6 +302,8 @@
 	return ret;
 }
 
+/***********************************************************************/
+
 static BOOL SHNotifyRemoveDirectoryW(LPCWSTR path)
 {
 	BOOL ret;
@@ -320,6 +323,8 @@
 	return ret;
 }
 
+/***********************************************************************/
+
 BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path)
 {
 	if (SHELL_OsIsUnicode())
@@ -342,6 +347,7 @@
  *  Verified on Win98 / IE 5 (SHELL32 4.72, March 1999 build) to be ANSI.
  *  This is Unicode on NT/2000
  */
+
 static BOOL SHNotifyDeleteFileA(LPCSTR path)
 {
 	BOOL ret;
@@ -362,6 +368,8 @@
 	return ret;
 }
 
+/***********************************************************************/
+
 static BOOL SHNotifyDeleteFileW(LPCWSTR path)
 {
 	BOOL ret;
@@ -382,6 +390,8 @@
 	return ret;
 }
 
+/***********************************************************************/
+
 DWORD WINAPI Win32DeleteFileAW(LPCVOID path)
 {
 	if (SHELL_OsIsUnicode())
diff --git a/dlls/winedos/interrupts.c b/dlls/winedos/interrupts.c
index 15370ad..c0e9e1b 100644
--- a/dlls/winedos/interrupts.c
+++ b/dlls/winedos/interrupts.c
@@ -18,6 +18,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "config.h"
+
 #include "dosexe.h"
 #include "wine/debug.h"
 #include "wine/winbase16.h"
diff --git a/dlls/wineps/driver.c b/dlls/wineps/driver.c
index 6230b65..e15431a 100644
--- a/dlls/wineps/driver.c
+++ b/dlls/wineps/driver.c
@@ -22,17 +22,21 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include <string.h>
-
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
-#include "psdrv.h"
-#include <wine/debug.h>
-#include <winuser.h>
-#include <wownt32.h>
-#include <winspool.h>
-#include <prsht.h>
+
+#include "config.h"
+
+#include <string.h>
+
+#include "wine/debug.h"
 #include "psdlg.h"
+#include "psdrv.h"
+
+#include "winuser.h"
+#include "wownt32.h"
+#include "winspool.h"
+#include "prsht.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(psdrv);
 
@@ -699,8 +703,7 @@
 }
 
 /**************************************************************
- *
- *     PSDRV_DeviceCapabilities [WINEPS16.91]
+ *     DeviceCapabilities [WINEPS16.91]
  */
 DWORD WINAPI PSDRV_DeviceCapabilities16(LPCSTR lpszDevice,
 			       LPCSTR lpszPort, WORD fwCapability,
diff --git a/dlls/wininet/cookie.c b/dlls/wininet/cookie.c
index d2c0f1d..82eb536 100644
--- a/dlls/wininet/cookie.c
+++ b/dlls/wininet/cookie.c
@@ -25,7 +25,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <unistd.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
 
 #include "windef.h"
 #include "winbase.h"
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index 8f2a51b..26dcf86 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -2486,6 +2486,15 @@
     return (hr==S_OK);
 }
 
+/***********************************************************************
+ *
+ *         InternetCreateUrlA
+ *
+ * RETURNS
+ *   TRUE on success
+ *   FALSE on failure
+ *
+ */
 BOOL WINAPI InternetCreateUrlA(LPURL_COMPONENTSA lpUrlComponents, DWORD dwFlags,
                                LPSTR lpszUrl, LPDWORD lpdwUrlLength)
 {
@@ -2493,6 +2502,15 @@
     return FALSE;
 }
 
+/***********************************************************************
+ *
+ *         InternetCreateUrlW
+ *
+ * RETURNS
+ *   TRUE on success
+ *   FALSE on failure
+ *
+ */
 BOOL WINAPI InternetCreateUrlW(LPURL_COMPONENTSW lpUrlComponents, DWORD dwFlags,
                                LPWSTR lpszUrl, LPDWORD lpdwUrlLength)
 {
diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c
index a372811..c20a86c 100644
--- a/dlls/wininet/urlcache.c
+++ b/dlls/wininet/urlcache.c
@@ -933,6 +933,10 @@
     return TRUE;
 }
 
+/***********************************************************************
+ *           RetrieveUrlCacheEntryFileA (WININET.@)
+ *
+ */
 BOOL WINAPI RetrieveUrlCacheEntryFileA(
     IN LPCSTR lpszUrlName,
     OUT LPINTERNET_CACHE_ENTRY_INFOA lpCacheEntryInfo, 
@@ -983,6 +987,10 @@
     return TRUE;
 }
 
+/***********************************************************************
+ *           UnlockUrlCacheEntryFileA (WININET.@)
+ *
+ */
 BOOL WINAPI UnlockUrlCacheEntryFileA(
     IN LPCSTR lpszUrlName, 
     IN DWORD dwReserved
@@ -1349,6 +1357,10 @@
     return ReadFile(pStream->hFile, lpBuffer, *lpdwLen, lpdwLen, NULL);
 }
 
+/***********************************************************************
+ *           RetrieveUrlCacheEntryStreamA (WININET.@)
+ *
+ */
 HANDLE WINAPI RetrieveUrlCacheEntryStreamA(
     IN LPCSTR lpszUrlName,
     OUT LPINTERNET_CACHE_ENTRY_INFOA lpCacheEntryInfo,
@@ -1398,6 +1410,10 @@
     return (HANDLE)pStream;
 }
 
+/***********************************************************************
+ *           UnlockUrlCacheEntryStream (WININET.@)
+ *
+ */
 BOOL WINAPI UnlockUrlCacheEntryStream(
     IN HANDLE hUrlCacheStream,
     IN DWORD dwReserved
@@ -1430,6 +1446,11 @@
     return TRUE;
 }
 
+
+/***********************************************************************
+ *           DeleteUrlCacheEntryA (WININET.@)
+ *
+ */
 BOOL WINAPI DeleteUrlCacheEntryA(LPCSTR lpszUrlName)
 {
     LPURLCACHE_HEADER pHeader;
@@ -1471,6 +1492,10 @@
     return TRUE;
 }
 
+/***********************************************************************
+ *           CreateUrlCacheGroup (WININET.@)
+ *
+ */
 INTERNETAPI GROUPID WINAPI CreateUrlCacheGroup(DWORD dwFlags, LPVOID 
 lpReserved)
 {
@@ -1478,6 +1503,10 @@
   return FALSE;
 }
 
+/***********************************************************************
+ *           FindFirstUrlCacheEntryA (WININET.@)
+ *
+ */
 INTERNETAPI HANDLE WINAPI FindFirstUrlCacheEntryA(LPCSTR lpszUrlSearchPattern,
  LPINTERNET_CACHE_ENTRY_INFOA lpFirstCacheEntryInfo, LPDWORD lpdwFirstCacheEntryInfoBufferSize)
 {
@@ -1485,6 +1514,10 @@
   return 0;
 }
 
+/***********************************************************************
+ *           FindFirstUrlCacheEntryW (WININET.@)
+ *
+ */
 INTERNETAPI HANDLE WINAPI FindFirstUrlCacheEntryW(LPCWSTR lpszUrlSearchPattern,
  LPINTERNET_CACHE_ENTRY_INFOW lpFirstCacheEntryInfo, LPDWORD lpdwFirstCacheEntryInfoBufferSize)
 {
@@ -1492,12 +1525,20 @@
   return 0;
 }
 
+/***********************************************************************
+ *           DeleteUrlCacheGroup (WININET.@)
+ *
+ */
 BOOL WINAPI DeleteUrlCacheGroup(GROUPID GroupId, DWORD dwFlags, LPVOID lpReserved)
 {
     FIXME("STUB\n");
     return FALSE;
 }
 
+/***********************************************************************
+ *           SetUrlCacheEntryGroup (WININET.@)
+ *
+ */
 BOOL WINAPI SetUrlCacheEntryGroup(LPCSTR lpszUrlName, DWORD dwFlags,
   GROUPID GroupId, LPBYTE pbGroupAttributes, DWORD cbGroupAttributes,
   LPVOID lpReserved)
diff --git a/dlls/x11drv/window.c b/dlls/x11drv/window.c
index 5f08119..fc83708 100644
--- a/dlls/x11drv/window.c
+++ b/dlls/x11drv/window.c
@@ -23,7 +23,9 @@
 #include "config.h"
 
 #include <stdlib.h>
-#include <unistd.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
 
 #include "ts_xlib.h"
 #include <X11/Xresource.h>
diff --git a/dlls/x11drv/x11drv.spec b/dlls/x11drv/x11drv.spec
index c500c75..4e1451a 100644
--- a/dlls/x11drv/x11drv.spec
+++ b/dlls/x11drv/x11drv.spec
@@ -74,12 +74,12 @@
 @ cdecl SetScreenSaveActive(long) X11DRV_SetScreenSaveActive
 @ cdecl ChangeDisplaySettingsExW (ptr ptr long long long) X11DRV_ChangeDisplaySettingsExW
 @ cdecl EnumDisplaySettingsExW (ptr long ptr long) X11DRV_EnumDisplaySettingsExW
-@ cdecl AcquireClipboard() X11DRV_AcquireClipboard
+@ cdecl AcquireClipboard(long) X11DRV_AcquireClipboard
 @ cdecl CountClipboardFormats() X11DRV_CountClipboardFormats
 @ cdecl CreateWindow(long ptr long) X11DRV_CreateWindow
 @ cdecl DestroyWindow(long) X11DRV_DestroyWindow
 @ cdecl EmptyClipboard() X11DRV_EmptyClipboard
-@ cdecl EndClipboardUpdate(long) X11DRV_EndClipboardUpdate
+@ cdecl EndClipboardUpdate() X11DRV_EndClipboardUpdate
 @ cdecl EnumClipboardFormats(long) X11DRV_EnumClipboardFormats
 @ cdecl ForceWindowRaise(long) X11DRV_ForceWindowRaise
 @ cdecl GetClipboardData(long ptr ptr) X11DRV_GetClipboardData
