Release 980315

Sun Mar 15 03:46:50 1998  Dimitrie O. Paun  <dimi@mail.cs.toronto.edu>

	* [*/*]
	Fixed some dprintf_ such that there is one and only one
	new line for each dprintf and that new line occurs at the end.
	Transformed some fprintfs into proper debug statements.
	Removed much redundancy from most of the debug statements. The
	redundancy appeared because now the component and function
	name is output automatically. Most debug statements also used to
	output the name of the function.
	All these changes prepared the source to switch completely to
	the new debugging interface.
	For more info, refer to ./documentation/debug-msg

Sat Mar 14 19:45:23 1997  Andreas Mohr <100.30936@germany.net>

	* [misc/shell.c] [if1632/kernel.spec]
	Changed parameters of FUNC004() to fix a crash.
	Not sure if this fix is correct (doc wanted).

	* [windows/user.c] [if1632/user.spec] [include/user.h]
	Implemented UserSeeUserDo.

	* [msdos/int21.c] [include/msdos.h]
	Added "GET LIST OF LISTS" (INT 21/52h).

Sat Mar 14 15:48:02 1998  Douglas Ridgway <ridgway@gmcl.com>

	* [include/windows.h] [relay32/gdi32.spec] [objects/enhmetafile.c]
	Beginnings of enhanced metafile support.

Fri Mar 13 20:53:09 1998  John Richardson <jrichard@zko.dec.com>

	* [win32/console.c]
	Restart interrupted console writes.

Fri Mar 13 18:59:24 1998  Matthew Becker <mbecker@glasscity.net>

	* [*/*.c]
	Updated documentation for API manpages.

	* [windows/dce.c]
	ReleaseDC16: Fixed cast.

	* [include/windows.h] [memory/virtual.c]
	VirtualQuery{Ex} should return DWORD instead of BOOL32.

Fri Mar 13 13:03:06 1998  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [README][documentation/status/]
	README updated, added lzexpand,version and multimedia
	status notes to new documentation/status directory.

	* [ole/*.c][if1632/typelib.spec]
	Added typelib stubs, several small additions and fixes.

	* [loader/pe_image.c]
	Fixed a small bug (fixup_imports got passed the wrong hModule in a
	remapcase).

	* [loader/signal.c][if1632/signal.c][misc/winsock_dns.c]
	  [loader/module.c]
	Fixed some recursive debugger crashes (caused by invalid FS).

	* [misc/registry.c]
	Two bugs fixed.

Fri Mar 13 04:55:01 1998  David Lee Lambert <lamber45@egr.msu.edu>

	* [include/winnt.h] [include/winnls.h]
	Moved LANG_xxx flags to winnls.h

	* [include/winnls.h]
	Added flags for GetDateFormat(); fixed validity of
	LOCALE_SYSTEM_DEFAULT.

	* [include/windows.h] 
	Added GetTimeFormat() prototypes.

	* [ole/ole2nls.c]
	Implemented ASCII date- and time-functions,  using an
	optimized common core;  added stubs for Unicode versions;  
	started work on a Unicode core.

	* [AUTHORS]
	Added my name.

Mon Mar  9 20:10:15 1998  Eric Kohl <ekohl@abo.rhein-zeitung.de>

	* [relay32/comctl32.spec] [include/imagelist.h]
	  [include/commctrl.h] [misc/imagelist.c] [misc/Makefile.in]
	First attempt at implementing ImageLists.

Sun Mar  8 20:19:49 1998  Uwe Bonnes  <bon@elektron.ikp.physik.tu-darmstadt.de>

	* [files/dos_fs.c] [configure.in]
	Try to get FileTimeToLocalFileTime,FileTimeToSystemTime and
	SystemTimeToFileTime right.
	Use timegm() where available.

	* [misc/lstr.c]
	Fix an off by one error in FormatMessage and handle the case 
	when args = NULL (used by programs to get the length of the 
	string).

	* [win32/console.c]
	Actual display a per-process Title string, better working
	attempt for WriteConsole32W and ReadConsole32W.

Fri Mar  6 20:33:45 1998  Slaven Rezic  <eserte@cs.tu-berlin.de>

	* [include/config.h.in][configure.in][multimedia/audio.c]
	  [multimedia/dsound.c]
	Added check for FreeBSD sound system.

Sun Mar  1 17:40:10 1998  Jason Schonberg <schon@mti.sgi.com>

	* [controls/edit.c] [include/ole.h] [include/shlobj.h]
	Removed final commas in enum types.

Mon Feb 23 07:52:18 1998  Luiz Otavio L. Zorzella  <zorzella@nr.conexware.com>

	* [multimedia/time.c]
	Workaround to avoid infinite recursion inside timeGetTime.

	* [multimedia/audio.c]
	WODM_GETNUMDEVS and WIDM_GETNUMDEVS only return 1 now if the
	SOUND_DEV can be opened, or if it's busy.
diff --git a/misc/Makefile.in b/misc/Makefile.in
index f9722db..319264c 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -15,6 +15,7 @@
 	ddeml.c \
 	debugstr.c \
 	error.c \
+	imagelist.c \
 	lstr.c \
 	lzexpand.c \
 	main.c \
diff --git a/misc/aspi.c b/misc/aspi.c
index 363c424..8be4540 100644
--- a/misc/aspi.c
+++ b/misc/aspi.c
@@ -122,16 +122,16 @@
     sprintf(idstr, "scsi c%1dt%1dd%1d", prb->SRB_HaId, prb->SRB_Target, prb->SRB_Lun);
 
     if (!PROFILE_GetWineIniString(idstr, "Device", "", device_str, sizeof(device_str))) {
-	dprintf_info(aspi, "Trying to open unlisted scsi device %s\n", idstr);
+	TRACE(aspi, "Trying to open unlisted scsi device %s\n", idstr);
 	return -1;
     }
 
-    dprintf_info(aspi, "Opening device %s=%s\n", idstr, device_str);
+    TRACE(aspi, "Opening device %s=%s\n", idstr, device_str);
 
     fd = open(device_str, O_RDWR);
     if (fd == -1) {
 	int save_error = errno;
-	dprintf_warn(aspi, "Error opening device errno=%d\n", save_error);
+	WARN(aspi, "Error opening device errno=%d\n", save_error);
 	return -1;
     }
 
@@ -162,52 +162,52 @@
 
   switch (prb->CDBByte[0]) {
   case CMD_INQUIRY:
-    dprintf_info(aspi, "{\n");
-    dprintf_info(aspi, "\tEVPD: %d\n", prb->CDBByte[1] & 1);
-    dprintf_info(aspi, "\tLUN: %d\n", (prb->CDBByte[1] & 0xc) >> 1);
-    dprintf_info(aspi, "\tPAGE CODE: %d\n", prb->CDBByte[2]);
-    dprintf_info(aspi, "\tALLOCATION LENGTH: %d\n", prb->CDBByte[4]);
-    dprintf_info(aspi, "\tCONTROL: %d\n", prb->CDBByte[5]);
-    dprintf_info(aspi, "}\n");
+    TRACE(aspi, "{\n");
+    TRACE(aspi, "\tEVPD: %d\n", prb->CDBByte[1] & 1);
+    TRACE(aspi, "\tLUN: %d\n", (prb->CDBByte[1] & 0xc) >> 1);
+    TRACE(aspi, "\tPAGE CODE: %d\n", prb->CDBByte[2]);
+    TRACE(aspi, "\tALLOCATION LENGTH: %d\n", prb->CDBByte[4]);
+    TRACE(aspi, "\tCONTROL: %d\n", prb->CDBByte[5]);
+    TRACE(aspi, "}\n");
     break;
   case CMD_SCAN_SCAN:
-    dprintf_info(aspi, "Transfer Length: %d\n", prb->CDBByte[4]);
+    TRACE(aspi, "Transfer Length: %d\n", prb->CDBByte[4]);
     break;
   }
 
-  dprintf_info(aspi, "Host Adapter: %d\n", prb->SRB_HaId);
-  dprintf_info(aspi, "Flags: %d\n", prb->SRB_Flags);
+  TRACE(aspi, "Host Adapter: %d\n", prb->SRB_HaId);
+  TRACE(aspi, "Flags: %d\n", prb->SRB_Flags);
   if (TARGET_TO_HOST(prb)) {
-    dprintf_info(aspi, "\tData transfer: Target to host. Length checked.\n");
+    TRACE(aspi, "\tData transfer: Target to host. Length checked.\n");
   }
   else if (HOST_TO_TARGET(prb)) {
-    dprintf_info(aspi, "\tData transfer: Host to target. Length checked.\n");
+    TRACE(aspi, "\tData transfer: Host to target. Length checked.\n");
   }
   else if (NO_DATA_TRANSFERED(prb)) {
-    dprintf_info(aspi, "\tData transfer: none\n");
+    TRACE(aspi, "\tData transfer: none\n");
   }
   else {
-    dprintf_warn(aspi, "\tTransfer by scsi cmd. Length not checked\n");
+    WARN(aspi, "\tTransfer by scsi cmd. Length not checked\n");
   }
 
-  dprintf_info(aspi, "\tResidual byte length reporting %s\n", prb->SRB_Flags & 0x4 ? "enabled" : "disabled");
-  dprintf_info(aspi, "\tLinking %s\n", prb->SRB_Flags & 0x2 ? "enabled" : "disabled");
-  dprintf_info(aspi, "\tPosting %s\n", prb->SRB_Flags & 0x1 ? "enabled" : "disabled");
-  dprintf_info(aspi, "Target: %d\n", prb->SRB_Target);
-  dprintf_info(aspi, "Lun: %d\n", prb->SRB_Lun);
-  dprintf_info(aspi, "BufLen: %ld\n", prb->SRB_BufLen);
-  dprintf_info(aspi, "SenseLen: %d\n", prb->SRB_SenseLen);
-  dprintf_info(aspi, "BufPtr: %lx (%p)\n", prb->SRB_BufPointer, lpBuf);
-  dprintf_info(aspi, "LinkPointer %lx\n", prb->SRB_Rsvd1);
-  dprintf_info(aspi, "CDB Length: %d\n", prb->SRB_CDBLen);
-  dprintf_info(aspi, "POST Proc: %lx\n", (DWORD) prb->SRB_PostProc);
+  TRACE(aspi, "\tResidual byte length reporting %s\n", prb->SRB_Flags & 0x4 ? "enabled" : "disabled");
+  TRACE(aspi, "\tLinking %s\n", prb->SRB_Flags & 0x2 ? "enabled" : "disabled");
+  TRACE(aspi, "\tPosting %s\n", prb->SRB_Flags & 0x1 ? "enabled" : "disabled");
+  TRACE(aspi, "Target: %d\n", prb->SRB_Target);
+  TRACE(aspi, "Lun: %d\n", prb->SRB_Lun);
+  TRACE(aspi, "BufLen: %ld\n", prb->SRB_BufLen);
+  TRACE(aspi, "SenseLen: %d\n", prb->SRB_SenseLen);
+  TRACE(aspi, "BufPtr: %lx (%p)\n", prb->SRB_BufPointer, lpBuf);
+  TRACE(aspi, "LinkPointer %lx\n", prb->SRB_Rsvd1);
+  TRACE(aspi, "CDB Length: %d\n", prb->SRB_CDBLen);
+  TRACE(aspi, "POST Proc: %lx\n", (DWORD) prb->SRB_PostProc);
   cdb = &prb->CDBByte[0];
   cmd = prb->CDBByte[0];
   for (i = 0; i < prb->SRB_CDBLen; i++) {
     if (i != 0) dsprintf(aspi, ",");
     dsprintf(aspi, "%02x", *cdb++);
   }
-  dprintf_info(aspi, "CDB buffer[%s]\n", dbg_str(aspi));
+  TRACE(aspi, "CDB buffer[%s]\n", dbg_str(aspi));
 }
 
 static void
@@ -222,7 +222,7 @@
     if (i) dsprintf(aspi, ",");
     dsprintf(aspi, "%02x", *cdb++);
   }
-  dprintf_info(aspi, "SenseArea[%s]\n", dbg_str(aspi));
+  TRACE(aspi, "SenseArea[%s]\n", dbg_str(aspi));
 }
 
 static void
@@ -234,7 +234,7 @@
 
   switch (prb->CDBByte[0]) {
   case CMD_INQUIRY:
-    dprintf_info(aspi, "Vendor: %s\n", lpBuf + INQUIRY_VENDOR);
+    TRACE(aspi, "Vendor: %s\n", lpBuf + INQUIRY_VENDOR);
     break;
   case CMD_TEST_UNIT_READY:
     PrintSenseArea16(prb);
@@ -312,20 +312,20 @@
 	if (myerror == ENOMEM) {
 	    fprintf(stderr, "ASPI: Linux generic scsi driver\n  You probably need to re-compile your kernel with a larger SG_BIG_BUFF value (sg.h)\n  Suggest 130560\n");
 	}
-	dprintf_warn(aspi, "errno: = %d\n", myerror);
+	WARN(aspi, "errno: = %d\n", myerror);
     }
     goto error_exit;
   }
 
   status = read(fd, sg_reply_hdr, out_len);
   if (status < 0 || status != out_len) {
-    dprintf_warn(aspi, "not enough bytes read from scsi device%d\n", status);
+    WARN(aspi, "not enough bytes read from scsi device%d\n", status);
     goto error_exit;
   }
 
   if (sg_reply_hdr->result != 0) {
     error_code = sg_reply_hdr->result;
-    dprintf_warn(aspi, "reply header error (%d)\n", sg_reply_hdr->result);
+    WARN(aspi, "reply header error (%d)\n", sg_reply_hdr->result);
     goto error_exit;
   }
 
@@ -349,7 +349,7 @@
   /* now do  posting */
 
   if (ASPI_POSTING(prb) && prb->SRB_PostProc) {
-    dprintf_info(aspi, "ASPI: Post Routine (%lx) called\n", (DWORD) prb->SRB_PostProc);
+    TRACE(aspi, "Post Routine (%lx) called\n", (DWORD) prb->SRB_PostProc);
     Callbacks->CallASPIPostProc(prb->SRB_PostProc, segptr_prb);
   }
 
@@ -361,17 +361,17 @@
 error_exit:
   if (error_code == EBUSY) {
       prb->SRB_Status = SS_ASPI_IS_BUSY;
-      dprintf_info(aspi, "ASPI: Device busy\n");
+      TRACE(aspi, "Device busy\n");
   }
   else {
-      dprintf_warn(aspi, "ASPI_GenericHandleScsiCmd failed\n");
+      WARN(aspi, "ASPI_GenericHandleScsiCmd failed\n");
       prb->SRB_Status = SS_ERR;
   }
 
   /* I'm not sure exactly error codes work here
    * We probably should set prb->SRB_TargStat, SRB_HaStat ?
    */
-  dprintf_warn(aspi, "ASPI_GenericHandleScsiCmd: error_exit\n");
+  WARN(aspi, "ASPI_GenericHandleScsiCmd: error_exit\n");
   free(sg_reply_hdr);
   free(sg_hd);
   return prb->SRB_Status;
@@ -385,7 +385,7 @@
 WORD WINAPI GetASPISupportInfo16()
 {
 #ifdef linux
-    dprintf_info(aspi, "GETASPISupportInfo\n");
+    TRACE(aspi, "GETASPISupportInfo\n");
     /* high byte SS_COMP - low byte number of host adapters.
      * FIXME!!! The number of host adapters is incorrect.
      * I'm not sure how to determine this under linux etc.
@@ -407,19 +407,19 @@
 
   switch (lpSRB->common.SRB_cmd) {
   case SC_HA_INQUIRY:
-    dprintf_fixme(aspi, "ASPI: Not implemented SC_HA_INQUIRY\n");
+    FIXME(aspi, "Not implemented SC_HA_INQUIRY\n");
     break;
   case SC_GET_DEV_TYPE:
-    dprintf_fixme(aspi, "ASPI: Not implemented SC_GET_DEV_TYPE\n");
+    FIXME(aspi, "Not implemented SC_GET_DEV_TYPE\n");
     break;
   case SC_EXEC_SCSI_CMD:
     return ASPI_ExecScsiCmd16(&lpSRB->cmd, segptr_srb);
     break;
   case SC_RESET_DEV:
-    dprintf_fixme(aspi, "ASPI: Not implemented SC_RESET_DEV\n");
+    FIXME(aspi, "Not implemented SC_RESET_DEV\n");
     break;
   default:
-    dprintf_warn(aspi, "ASPI: Unknown command %d\n", lpSRB->common.SRB_cmd);
+    WARN(aspi, "Unknown command %d\n", lpSRB->common.SRB_cmd);
   }
   return SS_INVALID_SRB;
 #else
diff --git a/misc/comm.c b/misc/comm.c
index d418994..1fb36c7 100644
--- a/misc/comm.c
+++ b/misc/comm.c
@@ -83,8 +83,7 @@
 					COM[x].fd = 0;
 					strcpy(COM[x].devicename, temp);
 				}
-                dprintf_info(comm,
-                        "Comm_Init: %s = %s\n", option, COM[x].devicename);
+                TRACE(comm, "%s = %s\n", option, COM[x].devicename);
  		}
 
 		strcpy(option, "LPTx");
@@ -106,8 +105,7 @@
 					LPT[x].fd = 0;
 					strcpy(LPT[x].devicename, temp);
 				}
-                dprintf_info(comm,
-                        "Comm_Init: %s = %s\n", option, LPT[x].devicename);
+                TRACE(comm, "%s = %s\n", option, LPT[x].devicename);
 		}
 
 	}
@@ -152,7 +150,7 @@
 
 int WinError(void)
 {
-        dprintf_info(comm, "WinError: errno = %d\n", errno);
+        TRACE(comm, "errno = %d\n", errno);
 	switch (errno) {
 		default:
 			return CE_IOE;
@@ -169,8 +167,7 @@
 	int port;
 	char *ptr, temp[256];
 
-	dprintf_info(comm,
-		"BuildCommDCB: (%s), ptr %p\n", device, lpdcb);
+	TRACE(comm, "(%s), ptr %p\n", device, lpdcb);
 	commerror = 0;
 
 	if (!lstrncmpi32A(device,"COM",3)) {
@@ -207,13 +204,13 @@
 			lpdcb->BaudRate = COM[port].baudrate;
 		else
 			lpdcb->BaudRate = atoi(ptr);
-        	dprintf_info(comm,"BuildCommDCB: baudrate (%d)\n", lpdcb->BaudRate);
+        	TRACE(comm,"baudrate (%d)\n", lpdcb->BaudRate);
 
 		ptr = strtok(NULL, ", ");
 		if (islower(*ptr))
 			*ptr = toupper(*ptr);
 
-        	dprintf_info(comm,"BuildCommDCB: parity (%c)\n", *ptr);
+        	TRACE(comm,"parity (%c)\n", *ptr);
 		lpdcb->fParity = 1;
 		switch (*ptr) {
 			case 'N':
@@ -235,11 +232,11 @@
 		}
 
 		ptr = strtok(NULL, ", "); 
-         	dprintf_info(comm, "BuildCommDCB: charsize (%c)\n", *ptr);
+         	TRACE(comm, "charsize (%c)\n", *ptr);
 		lpdcb->ByteSize = *ptr - '0';
 
 		ptr = strtok(NULL, ", ");
-        	dprintf_info(comm, "BuildCommDCB: stopbits (%c)\n", *ptr);
+        	TRACE(comm, "stopbits (%c)\n", *ptr);
 		switch (*ptr) {
 			case '1':
 				lpdcb->StopBits = ONESTOPBIT;
@@ -273,7 +270,7 @@
 	int	port;
 	char	*ptr,*temp;
 
-	dprintf_info(comm,"BuildCommDCBAndTimeouts32A(%s,%p,%p)\n",device,lpdcb,lptimeouts);
+	TRACE(comm,"(%s,%p,%p)\n",device,lpdcb,lptimeouts);
 	commerror = 0;
 
 	if (!lstrncmpi32A(device,"COM",3)) {
@@ -400,7 +397,7 @@
 	LPSTR	devidA;
 	BOOL32	ret;
 
-	dprintf_info(comm,"BuildCommDCBAndTimeouts32W(%p,%p,%p)\n",devid,lpdcb,lptimeouts);
+	TRACE(comm,"(%p,%p,%p)\n",devid,lpdcb,lptimeouts);
 	devidA = HEAP_strdupWtoA( GetProcessHeap(), 0, devid );
 	ret=BuildCommDCBAndTimeouts32A(devidA,lpdcb,lptimeouts);
         HeapFree( GetProcessHeap(), 0, devidA );
@@ -422,8 +419,7 @@
 {
 	int port,fd;
 
-    	dprintf_info(comm,
-		"OpenComm: %s, %d, %d\n", device, cbInQueue, cbOutQueue);
+    	TRACE(comm, "%s, %d, %d\n", device, cbInQueue, cbOutQueue);
 	commerror = 0;
 
 	if (!lstrncmpi32A(device,"COM",3)) {
@@ -434,8 +430,7 @@
 			commerror = IE_BADID;
 		}
 
-                dprintf_info(comm,
-                       "OpenComm: %s = %s\n", device, COM[port].devicename);
+                TRACE(comm, "%s = %s\n", device, COM[port].devicename);
 
 		if (!ValidCOMPort(port)) {
 			commerror = IE_BADID;
@@ -487,7 +482,7 @@
 INT16 WINAPI CloseComm(INT16 fd)
 {
         int port;
-    	dprintf_info(comm,"CloseComm: fd %d\n", fd);
+    	TRACE(comm,"fd %d\n", fd);
        	if ((port = GetCommPort(fd)) !=-1) {  /* [LW]       */
     	        SEGPTR_FREE(unknown[port]); 
     	        COM[port].fd = 0;       /*  my adaptation of RER's fix   */  
@@ -512,7 +507,7 @@
 {
 	struct DosDeviceStruct *ptr;
 
-	dprintf_info(comm,"SetCommBreak: fd: %d\n", fd);
+	TRACE(comm,"fd=%d\n", fd);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
 		return -1;
@@ -531,7 +526,7 @@
 
 	struct DosDeviceStruct *ptr;
 
-	dprintf_info(comm,"SetCommBreak: fd: %d\n", fd);
+	TRACE(comm,"fd=%d\n", fd);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
 		return FALSE;
@@ -549,7 +544,7 @@
 {
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,"ClearCommBreak: fd: %d\n", fd);
+    	TRACE(comm,"fd=%d\n", fd);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
 		return -1;
@@ -567,7 +562,7 @@
 {
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,"ClearCommBreak: fd: %d\n", fd);
+    	TRACE(comm,"fd=%d\n", fd);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
 		return FALSE;
@@ -586,7 +581,7 @@
 	int	max;
 	struct termios port;
 
-    	dprintf_info(comm,"EscapeCommFunction fd: %d, function: %d\n", fd, nFunction);
+    	TRACE(comm,"fd=%d, function=%d\n", fd, nFunction);
 	if (tcgetattr(fd,&port) == -1) {
 		commerror=WinError();	
 		return -1;
@@ -662,7 +657,7 @@
 	struct termios	port;
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,"EscapeCommFunction fd: %d, function: %d\n", fd, nFunction);
+    	TRACE(comm,"fd=%d, function=%d\n", fd, nFunction);
 	if (tcgetattr(fd,&port) == -1) {
 		commerror=WinError();	
 		return FALSE;
@@ -734,7 +729,7 @@
 {
 	int queue;
 
-    	dprintf_info(comm,"FlushComm fd: %d, queue: %d\n", fd, fnQueue);
+    	TRACE(comm,"fd=%d, queue=%d\n", fd, fnQueue);
 	switch (fnQueue) {
 		case 0:	queue = TCOFLUSH;
 			break;
@@ -759,7 +754,7 @@
  */
 BOOL32 WINAPI PurgeComm( HANDLE32 hFile, DWORD flags) 
 {
-    dprintf_fixme(comm, "PurgeComm(%08x %08lx) unimplemented stub\n",
+    FIXME(comm, "(%08x %08lx) unimplemented stub\n",
                  hFile, flags);
     return 0;
 }
@@ -784,15 +779,13 @@
                 if (rc) fprintf(stderr, "Error !\n");
 		lpStat->cbInQue = cnt;
 
-    		dprintf_info(comm,
-		       "GetCommError: fd %d, error %d, lpStat %d %d %d\n",
-		       fd, commerror, lpStat->status, lpStat->cbInQue, 
-		       lpStat->cbOutQue);
+    		TRACE(comm, "fd %d, error %d, lpStat %d %d %d\n",
+			     fd, commerror, lpStat->status, lpStat->cbInQue, 
+			     lpStat->cbOutQue);
 	}
 	else
-		dprintf_info(comm,
-		       "GetCommError: fd %d, error %d, lpStat NULL\n",
-		       fd, commerror);
+		TRACE(comm, "fd %d, error %d, lpStat NULL\n",
+			     fd, commerror);
 
 	/*
 	 * [RER] I have no idea what the following is trying to accomplish.
@@ -810,7 +803,7 @@
 {
 	int temperror;
 
-    	dprintf_info(comm, "ClearCommError: fd %d (current error %d)\n", 
+    	TRACE(comm, "fd %d (current error %d)\n", 
 	       fd, commerror);
 	temperror = commerror;
 	commerror = 0;
@@ -826,18 +819,18 @@
         int act;
         int repid;
         unsigned int mstat;
-    	dprintf_info(comm,"SetCommEventMask:fd %d,mask %d\n",fd,fuEvtMask);
+    	TRACE(comm,"fd %d,mask %d\n",fd,fuEvtMask);
 	eventmask |= fuEvtMask;
         if ((act = GetCommPort(fd)) == -1) {
-            dprintf_warn(comm," fd %d not comm port\n",act);
+            WARN(comm," fd %d not comm port\n",act);
             return NULL;}
         stol =  unknown[act];
         stol += msr;    
 	repid = ioctl(fd,TIOCMGET,&mstat);
-	dprintf_info(comm, " ioctl  %d, msr %x at %p %p\n",repid,mstat,stol,unknown[act]);
+	TRACE(comm, " ioctl  %d, msr %x at %p %p\n",repid,mstat,stol,unknown[act]);
 	if ((mstat&TIOCM_CAR)) {*stol |= 0x80;}
 	     else {*stol &=0x7f;}
-	dprintf_info(comm," modem dcd construct %x\n",*stol);
+	TRACE(comm," modem dcd construct %x\n",*stol);
 	return SEGPTR_GET(unknown[act]);	
 }
 
@@ -848,8 +841,7 @@
 {
 	int	events = 0;
 
-    	dprintf_info(comm,
-		"GetCommEventMask: fd %d, mask %d\n", fd, fnEvtClear);
+    	TRACE(comm, "fd %d, mask %d\n", fd, fnEvtClear);
 
 	/*
 	 *	Determine if any characters are available
@@ -862,8 +854,7 @@
 		rc = ioctl(fd, TIOCINQ, &cnt);
 		if (cnt) events |= EV_RXCHAR;
 
-		dprintf_info(comm,
-			"GetCommEventMask: rxchar %ld\n", cnt);
+		TRACE(comm, "rxchar %ld\n", cnt);
 	}
 
 	/*
@@ -871,8 +862,7 @@
 	 */
 	/* TODO */
 
-	dprintf_info(comm,
-		"GetCommEventMask: return events %d\n", events);
+	TRACE(comm, "return events %d\n", events);
 	return events;
 
 	/*
@@ -890,7 +880,7 @@
  */
 BOOL32 WINAPI SetupComm( HANDLE32 hFile, DWORD insize, DWORD outsize)
 {
-        dprintf_fixme(comm, "SetupComm: insize %ld outsize %ld unimplemented stub\n", insize, outsize);
+        FIXME(comm, "insize %ld outsize %ld unimplemented stub\n", insize, outsize);
        return FALSE;
 } 
 
@@ -899,8 +889,7 @@
  */
 BOOL32 WINAPI GetCommMask(INT32 fd,LPDWORD evtmask)
 {
-    	dprintf_info(comm,
-		"GetCommMask: fd %d, mask %p\n", fd, evtmask);
+    	TRACE(comm, "fd %d, mask %p\n", fd, evtmask);
 	*evtmask = eventmask;
 	return TRUE;
 }
@@ -910,8 +899,7 @@
  */
 BOOL32 WINAPI SetCommMask(INT32 fd,DWORD evtmask)
 {
-    	dprintf_info(comm,
-		"SetCommMask: fd %d, mask %lx\n", fd, evtmask);
+    	TRACE(comm, "fd %d, mask %lx\n", fd, evtmask);
 	eventmask = evtmask;
 	return TRUE;
 }
@@ -924,8 +912,7 @@
 	struct termios port;
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,
-		"SetCommState16: fd %d, ptr %p\n", lpdcb->Id, lpdcb);
+    	TRACE(comm, "fd %d, ptr %p\n", lpdcb->Id, lpdcb);
 	if (tcgetattr(lpdcb->Id, &port) == -1) {
 		commerror = WinError();	
 		return -1;
@@ -955,7 +942,7 @@
 	}
 	if (ptr->baudrate > 0)
 	  	lpdcb->BaudRate = ptr->baudrate;
-    	dprintf_info(comm,"SetCommState: baudrate %d\n",lpdcb->BaudRate);
+    	TRACE(comm,"baudrate %d\n",lpdcb->BaudRate);
 #ifdef CBAUD
 	port.c_cflag &= ~CBAUD;
 	switch (lpdcb->BaudRate) {
@@ -1049,7 +1036,7 @@
         }
         port.c_ispeed = port.c_ospeed;
 #endif
-    	dprintf_info(comm,"SetCommState: bytesize %d\n",lpdcb->ByteSize);
+    	TRACE(comm,"bytesize %d\n",lpdcb->ByteSize);
 	port.c_cflag &= ~CSIZE;
 	switch (lpdcb->ByteSize) {
 		case 5:
@@ -1069,7 +1056,7 @@
 			return -1;
 	}
 
-    	dprintf_info(comm,"SetCommState: parity %d\n",lpdcb->Parity);
+    	TRACE(comm,"parity %d\n",lpdcb->Parity);
 	port.c_cflag &= ~(PARENB | PARODD);
 	if (lpdcb->fParity)
 		switch (lpdcb->Parity) {
@@ -1090,7 +1077,7 @@
 		}
 	
 
-    	dprintf_info(comm,"SetCommState: stopbits %d\n",lpdcb->StopBits);
+    	TRACE(comm,"stopbits %d\n",lpdcb->StopBits);
 
 	switch (lpdcb->StopBits) {
 		case ONESTOPBIT:
@@ -1137,7 +1124,7 @@
 	struct termios port;
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,"SetCommState32: fd %d, ptr %p\n",fd,lpdcb);
+    	TRACE(comm,"fd %d, ptr %p\n",fd,lpdcb);
 	if (tcgetattr(fd,&port) == -1) {
 		commerror = WinError();	
 		return FALSE;
@@ -1167,7 +1154,7 @@
 	}
 	if (ptr->baudrate > 0)
 	  	lpdcb->BaudRate = ptr->baudrate;
-    	dprintf_info(comm,"SetCommState: baudrate %ld\n",lpdcb->BaudRate);
+    	TRACE(comm,"baudrate %ld\n",lpdcb->BaudRate);
 #ifdef CBAUD
 	port.c_cflag &= ~CBAUD;
 	switch (lpdcb->BaudRate) {
@@ -1255,7 +1242,7 @@
         }
         port.c_ispeed = port.c_ospeed;
 #endif
-    	dprintf_info(comm,"SetCommState: bytesize %d\n",lpdcb->ByteSize);
+    	TRACE(comm,"bytesize %d\n",lpdcb->ByteSize);
 	port.c_cflag &= ~CSIZE;
 	switch (lpdcb->ByteSize) {
 		case 5:
@@ -1275,7 +1262,7 @@
 			return FALSE;
 	}
 
-    	dprintf_info(comm,"SetCommState: parity %d\n",lpdcb->Parity);
+    	TRACE(comm,"parity %d\n",lpdcb->Parity);
 	port.c_cflag &= ~(PARENB | PARODD);
 	if (lpdcb->fParity)
 		switch (lpdcb->Parity) {
@@ -1296,7 +1283,7 @@
 		}
 	
 
-    	dprintf_info(comm,"SetCommState: stopbits %d\n",lpdcb->StopBits);
+    	TRACE(comm,"stopbits %d\n",lpdcb->StopBits);
 	switch (lpdcb->StopBits) {
 		case ONESTOPBIT:
 				port.c_cflag &= ~CSTOPB;
@@ -1344,7 +1331,7 @@
 {
 	struct termios port;
 
-    	dprintf_info(comm,"GetCommState16: fd %d, ptr %p\n", fd, lpdcb);
+    	TRACE(comm,"fd %d, ptr %p\n", fd, lpdcb);
 	if (tcgetattr(fd, &port) == -1) {
 		commerror = WinError();	
 		return -1;
@@ -1469,7 +1456,7 @@
 {
 	struct termios	port;
 
-    	dprintf_info(comm,"GetCommState32: fd %d, ptr %p\n", fd, lpdcb);
+    	TRACE(comm,"fd %d, ptr %p\n", fd, lpdcb);
         if (GetDeviceStruct(fd) == NULL) return FALSE;
 	if (tcgetattr(fd, &port) == -1) {
 		commerror = WinError();	
@@ -1585,8 +1572,7 @@
 {
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,
-		"TransmitCommChar: fd %d, data %d \n", fd, chTransmit);
+    	TRACE(comm, "fd %d, data %d \n", fd, chTransmit);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
 		return -1;
@@ -1613,7 +1599,7 @@
 {
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,"TransmitCommChar32(%d,'%c')\n",fd,chTransmit);
+    	TRACE(comm,"(%d,'%c')\n",fd,chTransmit);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
 		return FALSE;
@@ -1639,7 +1625,7 @@
 {
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,"UngetCommChar: fd %d (char %d)\n", fd, chUnget);
+    	TRACE(comm,"fd %d (char %d)\n", fd, chUnget);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
 		return -1;
@@ -1664,8 +1650,7 @@
 	int status, length;
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,
-	    "ReadComm: fd %d, ptr %p, length %d\n", fd, lpvBuf, cbRead);
+    	TRACE(comm, "fd %d, ptr %p, length %d\n", fd, lpvBuf, cbRead);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
 		return -1;
@@ -1696,7 +1681,7 @@
                         return length;
                 }
  	} else {
-	        dprintf_info(comm,"%*s\n", length+status, lpvBuf);
+	        TRACE(comm,"%*s\n", length+status, lpvBuf);
 		commerror = 0;
 		return length + status;
 	}
@@ -1710,7 +1695,7 @@
 	int length;
 	struct DosDeviceStruct *ptr;
 
-    	dprintf_info(comm,"WriteComm: fd %d, ptr %p, length %d\n", 
+    	TRACE(comm,"fd %d, ptr %p, length %d\n", 
 		fd, lpvBuf, cbWrite);
 	if ((ptr = GetDeviceStruct(fd)) == NULL) {
 		commerror = IE_BADID;
@@ -1722,7 +1707,7 @@
 		return -1;
 	}	
 	
-	dprintf_info(comm,"%*s\n", cbWrite, lpvBuf );
+	TRACE(comm,"%*s\n", cbWrite, lpvBuf );
 	length = write(fd, (void *) lpvBuf, cbWrite);
 	
 	if (length == -1) {
diff --git a/misc/commdlg.c b/misc/commdlg.c
index c0f2a12..85c0f2b 100644
--- a/misc/commdlg.c
+++ b/misc/commdlg.c
@@ -137,7 +137,7 @@
 		    FreeResource16( hDlgTmpl );
     }
 
-    dprintf_info(commdlg,"GetOpenFileName // return lpstrFile='%s' !\n", 
+    TRACE(commdlg,"return lpstrFile='%s' !\n", 
            (LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFile));
     return bRet;
 }
@@ -231,7 +231,7 @@
 		    FreeResource16( hDlgTmpl );
     }
 
-    dprintf_info(commdlg, "GetSaveFileName // return lpstrFile='%s' !\n", 
+    TRACE(commdlg, "return lpstrFile='%s' !\n", 
             (LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFile));
     return bRet;
 }
@@ -483,7 +483,7 @@
     {
       pstr = (LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrCustomFilter);
       n = 0;
-      dprintf_info(commdlg,"lpstrCustomFilter = %p\n", pstr);
+      TRACE(commdlg,"lpstrCustomFilter = %p\n", pstr);
       while(*pstr)
 	{
 	  old_pstr = pstr;
@@ -491,7 +491,7 @@
                                    (LPARAM)lpofn->lpstrCustomFilter + n );
           n += strlen(pstr) + 1;
 	  pstr += strlen(pstr) + 1;
-	  dprintf_info(commdlg,"lpstrCustomFilter // add str='%s' "
+	  TRACE(commdlg,"add str='%s' "
 			  "associated to '%s'\n", old_pstr, pstr);
           SendDlgItemMessage16(hWnd, cmb1, CB_SETITEMDATA16, i, (LPARAM)pstr);
           n += strlen(pstr) + 1;
@@ -508,7 +508,7 @@
 				       (LPARAM)lpofn->lpstrFilter + n );
 	  n += strlen(pstr) + 1;
 	  pstr += strlen(pstr) + 1;
-	  dprintf_info(commdlg,"lpstrFilter // add str='%s' "
+	  TRACE(commdlg,"add str='%s' "
 			  "associated to '%s'\n", old_pstr, pstr);
 	  SendDlgItemMessage16(hWnd, cmb1, CB_SETITEMDATA16, i, (LPARAM)pstr);
 	  n += strlen(pstr) + 1;
@@ -522,7 +522,7 @@
   strncpy(tmpstr, FILEDLG_GetFileType(PTR_SEG_TO_LIN(lpofn->lpstrCustomFilter),
 	     PTR_SEG_TO_LIN(lpofn->lpstrFilter), lpofn->nFilterIndex - 1),511);
   tmpstr[511]=0;
-  dprintf_info(commdlg,"nFilterIndex = %ld // SetText of edt1 to '%s'\n", 
+  TRACE(commdlg,"nFilterIndex = %ld, SetText of edt1 to '%s'\n", 
   			lpofn->nFilterIndex, tmpstr);
   SetDlgItemText32A( hWnd, edt1, tmpstr );
   /* get drive list */
@@ -637,7 +637,7 @@
       if (lRet == LB_ERR)
 	return TRUE;
       pstr = (LPSTR)SendDlgItemMessage16(hWnd, cmb1, CB_GETITEMDATA16, lRet, 0);
-      dprintf_info(commdlg,"Selected filter : %s\n", pstr);
+      TRACE(commdlg,"Selected filter : %s\n", pstr);
       SetDlgItemText32A( hWnd, edt1, pstr );
       FILEDLG_ScanDir(hWnd, tmpstr);
       return TRUE;
@@ -665,7 +665,7 @@
 	      strcpy(tmpstr2, tmpstr);
 	      *tmpstr=0;
 	    }
-	  dprintf_info(commdlg,"commdlg: %s, %s\n", tmpstr, tmpstr2);
+	  TRACE(commdlg,"tmpstr=%s, tmpstr2=%s\n", tmpstr, tmpstr2);
           SetDlgItemText32A( hWnd, edt1, tmpstr2 );
 	  FILEDLG_ScanDir(hWnd, tmpstr);
 	  return TRUE;
@@ -678,7 +678,7 @@
       lRet = SendDlgItemMessage16(hWnd, cmb1, CB_GETCURSEL16, 0, 0);
       if (lRet == LB_ERR) return TRUE;
       lpofn->nFilterIndex = lRet + 1;
-      dprintf_info(commdlg,"commdlg: lpofn->nFilterIndex=%ld\n", lpofn->nFilterIndex);
+      TRACE(commdlg,"lpofn->nFilterIndex=%ld\n", lpofn->nFilterIndex);
       lstrcpyn32A(tmpstr2, 
 	     FILEDLG_GetFileType(PTR_SEG_TO_LIN(lpofn->lpstrCustomFilter),
 				 PTR_SEG_TO_LIN(lpofn->lpstrFilter),
@@ -1128,7 +1128,7 @@
     HWND32 hwndDialog;
     LPPRINTDLG16 lpPrint = (LPPRINTDLG16)PTR_SEG_TO_LIN(printdlg);
 
-    dprintf_info(commdlg,"PrintDlg(%p) // Flags=%08lX\n", lpPrint, lpPrint->Flags );
+    TRACE(commdlg,"(%p) -- Flags=%08lX\n", lpPrint, lpPrint->Flags );
 
     if (lpPrint->Flags & PD_RETURNDEFAULT)
         /* FIXME: should fill lpPrint->hDevMode and lpPrint->hDevNames here */
@@ -1180,7 +1180,7 @@
   switch (wMsg)
     {
     case WM_INITDIALOG:
-      dprintf_info(commdlg,"PrintDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
+      TRACE(commdlg,"WM_INITDIALOG lParam=%08lX\n", lParam);
       ShowWindow16(hWnd, SW_SHOWNORMAL);
       return (TRUE);
     case WM_COMMAND:
@@ -1208,7 +1208,7 @@
   switch (wMsg)
     {
     case WM_INITDIALOG:
-      dprintf_info(commdlg,"PrintSetupDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
+      TRACE(commdlg,"WM_INITDIALOG lParam=%08lX\n", lParam);
       ShowWindow16(hWnd, SW_SHOWNORMAL);
       return (TRUE);
     case WM_COMMAND:
@@ -1240,7 +1240,7 @@
 short WINAPI GetFileTitle32A(LPCSTR lpFile, LPSTR lpTitle, UINT32 cbBuf)
 {
     int i, len;
-    dprintf_info(commdlg,"GetFileTitle(%p %p %d); \n", lpFile, lpTitle, cbBuf);
+    TRACE(commdlg,"(%p %p %d); \n", lpFile, lpTitle, cbBuf);
     if (lpFile == NULL || lpTitle == NULL)
     	return -1;
     len = strlen(lpFile);
@@ -1257,7 +1257,7 @@
 	i++;
 	break;
     }
-    dprintf_info(commdlg,"---> '%s' \n", &lpFile[i]);
+    TRACE(commdlg,"---> '%s' \n", &lpFile[i]);
     
     len = strlen(lpFile+i)+1;
     if (cbBuf < len)
@@ -1306,7 +1306,7 @@
     LPCVOID template;
     HWND32 hwndDialog;
 
-    dprintf_info(commdlg,"ChooseColor\n");
+    TRACE(commdlg,"ChooseColor\n");
     if (!lpChCol) return FALSE;    
 
     if (lpChCol->Flags & CC_ENABLETEMPLATEHANDLE)
@@ -2070,7 +2070,7 @@
    POINT16 point;
    struct CCPRIVATE * lpp; 
    
-   dprintf_info(commdlg,"ColorDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
+   TRACE(commdlg,"WM_INITDIALOG lParam=%08lX\n", lParam);
    lpp=calloc(1,sizeof(struct CCPRIVATE));
    lpp->lpcc=(LPCHOOSECOLOR)lParam;
    if (lpp->lpcc->lStructSize != sizeof(CHOOSECOLOR))
@@ -2139,7 +2139,7 @@
     HDC32 hdc;
     COLORREF *cr;
     struct CCPRIVATE * lpp=(struct CCPRIVATE *)GetWindowLong32A(hDlg, DWL_USER); 
-    dprintf_info(commdlg,"CC_WMCommand wParam=%x lParam=%lx\n",wParam,lParam);
+    TRACE(commdlg,"CC_WMCommand wParam=%x lParam=%lx\n",wParam,lParam);
     switch (wParam)
     {
           case 0x2c2:  /* edit notify RGB */
@@ -2401,7 +2401,7 @@
     LPCVOID template;
     HWND32 hwndDialog;
 
-    dprintf_info(commdlg,"ChooseFont\n");
+    TRACE(commdlg,"ChooseFont\n");
     if (!lpChFont) return FALSE;    
 
     if (lpChFont->Flags & CF_ENABLETEMPLATEHANDLE)
@@ -2483,8 +2483,7 @@
   LPCHOOSEFONT lpcf=(LPCHOOSEFONT)GetWindowLong32A(hDlg, DWL_USER); 
   LOGFONT16 *lplf = (LOGFONT16 *)PTR_SEG_TO_LIN( logfont );
 
-  dprintf_info(commdlg,"FontFamilyEnumProc: font=%s (nFontType=%d)\n",
-     			lplf->lfFaceName,nFontType);
+  TRACE(commdlg,"font=%s (nFontType=%d)\n", lplf->lfFaceName,nFontType);
 
   if (lpcf->Flags & CF_FIXEDPITCHONLY)
    if (!(lplf->lfPitchAndFamily & FIXED_PITCH))
@@ -2602,11 +2601,14 @@
   TEXTMETRIC16 *lptm = (TEXTMETRIC16 *)PTR_SEG_TO_LIN(metrics);
   int i;
   
-  dprintf_info(commdlg,"FontStyleEnumProc: (nFontType=%d)\n",nFontType);
-  dprintf_info(commdlg,"  %s h=%d w=%d e=%d o=%d wg=%d i=%d u=%d s=%d ch=%d op=%d cp=%d q=%d pf=%xh\n",
-	lplf->lfFaceName,lplf->lfHeight,lplf->lfWidth,lplf->lfEscapement,lplf->lfOrientation,
-	lplf->lfWeight,lplf->lfItalic,lplf->lfUnderline,lplf->lfStrikeOut,lplf->lfCharSet,
-	lplf->lfOutPrecision,lplf->lfClipPrecision,lplf->lfQuality,lplf->lfPitchAndFamily);
+  TRACE(commdlg,"(nFontType=%d)\n",nFontType);
+  TRACE(commdlg,"  %s h=%d w=%d e=%d o=%d wg=%d i=%d u=%d s=%d"
+	       " ch=%d op=%d cp=%d q=%d pf=%xh\n",
+	       lplf->lfFaceName,lplf->lfHeight,lplf->lfWidth,
+	       lplf->lfEscapement,lplf->lfOrientation,
+	       lplf->lfWeight,lplf->lfItalic,lplf->lfUnderline,
+	       lplf->lfStrikeOut,lplf->lfCharSet, lplf->lfOutPrecision,
+	       lplf->lfClipPrecision,lplf->lfQuality, lplf->lfPitchAndFamily);
 
   if (SetFontSizesToCombo3(hcmb3, lplf ,lpcf))
    return 0;
@@ -2639,11 +2641,11 @@
   SetWindowLong32A(hDlg, DWL_USER, lParam); 
   lpcf=(LPCHOOSEFONT)lParam;
   lpxx=PTR_SEG_TO_LIN(lpcf->lpLogFont);
-  dprintf_info(commdlg,"FormatCharDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
+  TRACE(commdlg,"WM_INITDIALOG lParam=%08lX\n", lParam);
 
   if (lpcf->lStructSize != sizeof(CHOOSEFONT))
   {
-    dprintf_err(commdlg,"WM_INITDIALOG: structure size failure !!!\n");
+    ERR(commdlg,"structure size failure !!!\n");
     EndDialog32 (hDlg, 0); 
     return FALSE;
   }
@@ -2682,7 +2684,7 @@
   {
     if (!EnumFontFamilies16(hdc, NULL,FontFamilyEnumProc,
                             (LPARAM)GetDlgItem32(hDlg,cmb1)))
-      dprintf_info(commdlg,"WM_INITDIALOG: EnumFontFamilies returns 0\n");
+      TRACE(commdlg,"EnumFontFamilies returns 0\n");
     if (lpcf->Flags & CF_INITTOLOGFONTSTRUCT)
     {
       /* look for fitting font name in combobox1 */
@@ -2729,7 +2731,7 @@
   }
   else
   {
-    dprintf_warn(commdlg,"WM_INITDIALOG: HDC failure !!!\n");
+    WARN(commdlg,"HDC failure !!!\n");
     EndDialog32 (hDlg, 0); 
     return FALSE;
   }
@@ -2794,7 +2796,7 @@
    buffer = SEGPTR_ALLOC(40);
    switch (lpdi->CtlID)
    {
-    case cmb1:	/* dprintf_info(commdlg,"WM_Drawitem cmb1\n"); */
+    case cmb1:	/* TRACE(commdlg,"WM_Drawitem cmb1\n"); */
 		SendMessage16(lpdi->hwndItem, CB_GETLBTEXT16, lpdi->itemID,
 			(LPARAM)SEGPTR_GET(buffer));	          
 		GetObject16( hBitmapTT, sizeof(bm), &bm );
@@ -2815,14 +2817,14 @@
 #endif
 		break;
     case cmb2:
-    case cmb3:	/* dprintf_info(commdlg,"WM_DRAWITEN cmb2,cmb3\n"); */
+    case cmb3:	/* TRACE(commdlg,"WM_DRAWITEN cmb2,cmb3\n"); */
 		SendMessage16(lpdi->hwndItem, CB_GETLBTEXT16, lpdi->itemID,
 			(LPARAM)SEGPTR_GET(buffer));
 		TextOut16(lpdi->hDC, lpdi->rcItem.left,
                           lpdi->rcItem.top, buffer, lstrlen16(buffer));
 		break;
 
-    case cmb4:	/* dprintf_info(commdlg,"WM_DRAWITEM cmb4 (=COLOR)\n"); */
+    case cmb4:	/* TRACE(commdlg,"WM_DRAWITEM cmb4 (=COLOR)\n"); */
 		SendMessage16(lpdi->hwndItem, CB_GETLBTEXT16, lpdi->itemID,
     		    (LPARAM)SEGPTR_GET(buffer));
 		TextOut16(lpdi->hDC, lpdi->rcItem.left +  25+5,
@@ -2881,7 +2883,7 @@
   LPCHOOSEFONT lpcf=(LPCHOOSEFONT)GetWindowLong32A(hDlg, DWL_USER); 
   LPLOGFONT16 lpxx=PTR_SEG_TO_LIN(lpcf->lpLogFont);
   
-  dprintf_info(commdlg,"FormatCharDlgProc // WM_COMMAND lParam=%08lX\n", lParam);
+  TRACE(commdlg,"WM_COMMAND lParam=%08lX\n", lParam);
   switch (wParam)
   {
 	case cmb1:if (HIWORD(lParam)==CBN_SELCHANGE)
@@ -2898,7 +2900,7 @@
                         char *str = SEGPTR_ALLOC(256);
                         SendDlgItemMessage16(hDlg,cmb1,CB_GETLBTEXT16,i,
                                              (LPARAM)SEGPTR_GET(str));
-	                dprintf_info(commdlg,"WM_COMMAND/cmb1 =>%s\n",str);
+	                TRACE(commdlg,"WM_COMMAND/cmb1 =>%s\n",str);
        		        EnumFontFamilies16(hdc,str,FontStyleEnumProc,
 		             MAKELONG(GetDlgItem32(hDlg,cmb2),GetDlgItem32(hDlg,cmb3)));
 		        SetCursor16(hcursor);
@@ -2909,7 +2911,7 @@
  		    }
  		    else
                     {
-                      dprintf_warn(commdlg,"WM_COMMAND: HDC failure !!!\n");
+                      WARN(commdlg,"HDC failure !!!\n");
                       EndDialog32 (hDlg, 0); 
                       return TRUE;
                     }
@@ -2920,7 +2922,7 @@
 	case cmb3:if (HIWORD(lParam)==CBN_SELCHANGE || HIWORD(lParam)== BN_CLICKED )
 	          {
                     char *str = SEGPTR_ALLOC(256);
-                    dprintf_info(commdlg,"WM_COMMAND/cmb2,3 =%08lX\n", lParam);
+                    TRACE(commdlg,"WM_COMMAND/cmb2,3 =%08lX\n", lParam);
 		    i=SendDlgItemMessage16(hDlg,cmb1,CB_GETCURSEL16,0,0);
 		    if (i==CB_ERR)
                       i=GetDlgItemText32A( hDlg, cmb1, str, 256 );
@@ -3036,9 +3038,9 @@
       case WM_COMMAND:
                         return CFn_WMCommand(hDlg,wParam,lParam);
       case WM_CHOOSEFONT_GETLOGFONT: 
-                         dprintf_info(commdlg,
-                          "FormatCharDlgProc // WM_CHOOSEFONT_GETLOGFONT lParam=%08lX\n", lParam);
-                        /* FIXME:  current logfont back to caller */
+                         TRACE(commdlg,"WM_CHOOSEFONT_GETLOGFONT lParam=%08lX\n",
+				      lParam);
+			 FIXME(commdlg, "current logfont back to caller\n");
                         break;
     }
   return FALSE;
diff --git a/misc/crtdll.c b/misc/crtdll.c
index 7ca8fb9..ac5beeb 100644
--- a/misc/crtdll.c
+++ b/misc/crtdll.c
@@ -82,13 +82,12 @@
 	int	xargc,i,afterlastspace;
 	DWORD	version;
 
-	dprintf_info(crtdll,"CRTDLL__GetMainArgs(%p,%p,%p,%ld).\n",
+	TRACE(crtdll,"(%p,%p,%p,%ld).\n",
 		argc,argv,environ,flag
 	);
 	CRTDLL_acmdln_dll = cmdline = HEAP_strdupA( GetProcessHeap(), 0,
                                                     GetCommandLine32A() );
- 	dprintf_info(crtdll,"CRTDLL__GetMainArgs got \"%s\"\n",
-		cmdline);
+ 	TRACE(crtdll,"got '%s'\n", cmdline);
 
 	version	= GetVersion32();
 	CRTDLL_osver_dll       = version >> 16;
@@ -130,7 +129,7 @@
 	CRTDLL_argv_dll	= xargv;
 	*argv		= xargv;
 
-	dprintf_info(crtdll,"CRTDLL__GetMainArgs found %d arguments\n",
+	TRACE(crtdll,"found %d arguments\n",
 		CRTDLL_argc_dll);
 	CRTDLL_environ_dll = *environ = GetEnvironmentStrings32A();
 	return 0;
@@ -146,7 +145,7 @@
 {
 	_INITTERMFUN	*current;
 
-	dprintf_info(crtdll,"_initterm(%p,%p)\n",start,end);
+	TRACE(crtdll,"(%p,%p)\n",start,end);
 	current=start;
 	while (current<end) {
 		if (*current) (*current)();
@@ -173,9 +172,8 @@
     default:
       file=fdopen(handle,mode);
     }
-  dprintf_info(crtdll,
-		 "CRTDLL_fdopen open handle %d mode %s  got file %p\n",
-		 handle, mode, file);
+  TRACE(crtdll, "open handle %d mode %s  got file %p\n",
+	       handle, mode, file);
   return (DWORD)file;
 }
 
@@ -199,7 +197,7 @@
     DWORD *args = (DWORD *)ESP_reg(context);
     PEXCEPTION_FRAME endframe = (PEXCEPTION_FRAME)args[1];
     DWORD nr = args[2];
-    fprintf(stderr,"CRTDLL__local_unwind2(%p,%ld)\n",endframe,nr);
+    fprintf(stderr,"(%p,%ld)\n",endframe,nr);
 }
 
 /*********************************************************************
@@ -213,7 +211,7 @@
   DOS_FULL_NAME full_name;
   
   if (!DOSFS_GetFullName( path, FALSE, &full_name )) {
-    dprintf_warn(crtdll, "CRTDLL_fopen file %s bad name\n",path);
+    WARN(crtdll, "file %s bad name\n",path);
    return 0;
   }
   
@@ -234,15 +232,13 @@
   else if (strstr(mode,"a+")) flagmode= O_RDWR | O_CREAT | O_APPEND;
   else if (strchr(mode,'w')) flagmode = O_RDWR | O_CREAT | O_APPEND;
   else if (strchr(mode,'b'))
-    dprintf_info(crtdll,
-		   "CRTDLL_fopen %s in BINARY mode\n",path);
+    TRACE(crtdll, "%s in BINARY mode\n",path);
       
   dos_fildes=FILE_Open(path, flagmode);
   unix_fildes=FILE_GetUnixHandle(dos_fildes);
   file = fdopen(unix_fildes,mode);
 
-  dprintf_info(crtdll,
-		 "CRTDLL_fopen file %s mode %s got ufh %d dfh %d file %p\n",
+  TRACE(crtdll, "file %s mode %s got ufh %d dfh %d file %p\n",
 		 path,mode,unix_fildes,dos_fildes,file);
   return (DWORD)file;
 }
@@ -262,32 +258,29 @@
      known binary extensions must be unchanged */
   while ( (i < (nmemb*size)) && (ret==1)) {
     ret=fread(temp,1,1,file);
-    dprintf_info(crtdll,
-		 "CRTDLL_fread got %c 0x%02x ret %d\n",
-		   (isalpha(*(unsigned char*)temp))? *(unsigned char*)temp:
-		    ' ',*(unsigned char*)temp, ret);
+    TRACE(crtdll, "got %c 0x%02x ret %d\n",
+		 (isalpha(*(unsigned char*)temp))? *(unsigned char*)temp:
+		 ' ',*(unsigned char*)temp, ret);
     if (*(unsigned char*)temp != 0xd) { /* skip CR */
       temp++;
       i++;
     }
     else
-      dprintf_info(crtdll, "CRTDLL_fread skipping ^M\n");
+      TRACE(crtdll, "skipping ^M\n");
   }
-  dprintf_info(crtdll,
-		 "CRTDLL_fread 0x%08x items of size %d from file %p to %p\n",
-		 nmemb,size,file,ptr,);
+  TRACE(crtdll, "0x%08x items of size %d from file %p to %p\n",
+	       nmemb,size,file,ptr,);
   if(i!=nmemb)
-    dprintf_warn(crtdll, " failed!\n");
+    WARN(crtdll, " failed!\n");
 
   return i;
 #else
     
   ret=fread(ptr,size,nmemb,file);
-  dprintf_info(crtdll,
-	       "CRTDLL_fread 0x%08x items of size %d from file %p to %p\n",
+  TRACE(crtdll, "0x%08x items of size %d from file %p to %p\n",
 	       nmemb,size,file,ptr);
   if(ret!=nmemb)
-    dprintf_warn(crtdll, " failed!\n");
+    WARN(crtdll, " failed!\n");
 
   return ret;
 #endif
@@ -301,13 +294,12 @@
   long ret;
 
   ret=fseek(stream,offset,whence);
-  dprintf_info(crtdll,
-		 "CRTDLL_fseek file %p to 0x%08lx pos %s\n",
-		 stream,offset,(whence==SEEK_SET)?"SEEK_SET":
-		 (whence==SEEK_CUR)?"SEEK_CUR":
-		 (whence==SEEK_END)?"SEEK_END":"UNKNOWN");
+  TRACE(crtdll, "file %p to 0x%08lx pos %s\n",
+	       stream,offset,(whence==SEEK_SET)?"SEEK_SET":
+	       (whence==SEEK_CUR)?"SEEK_CUR":
+	       (whence==SEEK_END)?"SEEK_END":"UNKNOWN");
   if(ret)
-    dprintf_warn(crtdll, " failed!\n");
+    WARN(crtdll, " failed!\n");
 
   return ret;
 }
@@ -320,9 +312,8 @@
   long ret;
 
   ret=ftell(stream);
-  dprintf_info(crtdll,
-		 "CRTDLL_ftell file %p at 0x%08lx\n",
-		 stream,ret);
+  TRACE(crtdll, "file %p at 0x%08lx\n",
+	       stream,ret);
   return ret;
 }
   
@@ -334,11 +325,10 @@
   size_t ret;
 
   ret=fwrite(ptr,size,nmemb,file);
-  dprintf_info(crtdll,
-		 "CRTDLL_fwrite 0x%08x items of size %d from %p to file %p\n",
-		 nmemb,size,ptr,file);
+  TRACE(crtdll, "0x%08x items of size %d from %p to file %p\n",
+	       nmemb,size,ptr,file);
   if(ret!=nmemb)
-    dprintf_warn(crtdll, " Failed!\n");
+    WARN(crtdll, " Failed!\n");
 
   return ret;
 }
@@ -348,9 +338,7 @@
  */
 INT32 __cdecl CRTDLL_setbuf(LPVOID file, LPSTR buf)
 {
-  dprintf_info(crtdll,
-		 "CRTDLL_setbuf(file %p buf %p)\n",
-		 file,buf);
+  TRACE(crtdll, "(file %p buf %p)\n", file, buf);
   /* this doesn't work:"void value not ignored as it ought to be" 
   return setbuf(file,buf); 
   */
@@ -381,9 +369,8 @@
 	default:
 	  return (-1);
 	}
-	dprintf_info(crtdll,
-		       "CRTDLL_open_osfhandle(handle %08lx,flags %d) return %d\n",
-		       osfhandle,flags,handle);
+	TRACE(crtdll, "(handle %08lx,flags %d) return %d\n",
+		     osfhandle,flags,handle);
 	return handle;
 	
 }
@@ -455,7 +442,7 @@
  */
 BOOL32 __cdecl CRTDLL__isatty(DWORD x)
 {
-	dprintf_info(crtdll,"CRTDLL__isatty(%ld)\n",x);
+	TRACE(crtdll,"(%ld)\n",x);
 	return TRUE;
 }
 
@@ -472,7 +459,7 @@
 	  len = (UINT32)write(fd,buf,(LONG)count);
 	else
 	  len = _lwrite32(fd,buf,count);
-	dprintf_info(crtdll,"CRTDLL_write %d/%d byte to dfh %d from %p,\n",
+	TRACE(crtdll,"%d/%d byte to dfh %d from %p,\n",
 		       len,count,fd,buf);
 	return len;
 }
@@ -492,7 +479,7 @@
  */
 void __cdecl CRTDLL__cexit(INT32 ret)
 {
-        dprintf_info(crtdll,"CRTDLL__cexit(%d)\n",ret);
+        TRACE(crtdll,"(%d)\n",ret);
 	ExitProcess(ret);
 }
 
@@ -502,7 +489,7 @@
  */
 void __cdecl CRTDLL_exit(DWORD ret)
 {
-        dprintf_info(crtdll,"CRTDLL_exit(%ld)\n",ret);
+        TRACE(crtdll,"(%ld)\n",ret);
 	ExitProcess(ret);
 }
 
@@ -512,7 +499,7 @@
  */
 INT32 __cdecl CRTDLL__abnormal_termination(void)
 {
-        dprintf_info(crtdll,"CRTDLL__abnormal_termination\n");
+        TRACE(crtdll,"(void)\n");
 	return 0;
 }
 
@@ -525,9 +512,9 @@
     int ret;
 
     ret = fflush(stream);
-    dprintf_info(crtdll,"CRTDLL_fflush %p returnd %d\n",stream,ret);
+    TRACE(crtdll,"%p returnd %d\n",stream,ret);
     if(ret)
-      dprintf_warn(crtdll, " Failed!\n");
+      WARN(crtdll, " Failed!\n");
 
     return ret;
 }
@@ -543,7 +530,7 @@
    * windows95's ftp.exe.
    */
    ret = gets(buf);
-   dprintf_info(crtdll,"CRTDLL_gets got %s\n",ret);
+   TRACE(crtdll,"got %s\n",ret);
    return ret;
 }
 
@@ -571,8 +558,7 @@
  */
 INT32 __cdecl CRTDLL_fputc( INT32 c, FILE *stream )
 {
-  dprintf_info(crtdll,
-		 "CRTDLL_fputc %c to file %p\n",c,stream);
+    TRACE(crtdll, "%c to file %p\n",c,stream);
     return fputc(c,stream);
 }
 
@@ -582,8 +568,7 @@
  */
 INT32 __cdecl CRTDLL_fputs( LPCSTR s, FILE *stream )
 {
-  dprintf_info(crtdll,
-		 "CRTDLL_fputs %s to file %p\n",s,stream);
+    TRACE(crtdll, "%s to file %p\n",s,stream);
     return fputs(s,stream);
 }
 
@@ -593,8 +578,7 @@
  */
 INT32 __cdecl CRTDLL_puts(LPCSTR s)
 {
-  dprintf_info(crtdll,
-		 "CRTDLL_fputs %s \n",s);
+    TRACE(crtdll, "%s \n",s);
     return puts(s);
 }
 
@@ -604,8 +588,7 @@
  */
 INT32 __cdecl CRTDLL_putc(INT32 c, FILE *stream)
 {
-  dprintf_info(crtdll,
-		 "CRTDLL_putc %c to file %p\n",c,stream);
+    TRACE(crtdll, " %c to file %p\n",c,stream);
     return fputc(c,stream);
 }
 /*********************************************************************
@@ -614,8 +597,7 @@
 INT32 __cdecl CRTDLL_fgetc( FILE *stream )
 {
   int ret= fgetc(stream);
-  dprintf_info(crtdll,
-		 "CRTDLL_fgetc got %d\n",ret);
+  TRACE(crtdll, "got %d\n",ret);
   return ret;
 }
 
@@ -626,8 +608,7 @@
 INT32 __cdecl CRTDLL_getc( FILE *stream )
 {
   int ret= fgetc(stream);
-  dprintf_info(crtdll,
-		 "CRTDLL_getc got %d\n",ret);
+  TRACE(crtdll, "got %d\n",ret);
   return ret;
 }
 
@@ -638,8 +619,7 @@
 {
    unsigned int ret = (x >> shift)|( x >>((sizeof(x))-shift));
 
-   dprintf_info(crtdll,
-		  "CRTDLL_rotl got 0x%08x rot %d ret 0x%08x\n",
+   TRACE(crtdll, "got 0x%08x rot %d ret 0x%08x\n",
 		  x,shift,ret);
    return ret;
     
@@ -651,8 +631,7 @@
 {
    unsigned long ret = (x >> shift)|( x >>((sizeof(x))-shift));
 
-   dprintf_info(crtdll,
-		  "CRTDLL_lrotl got 0x%08lx rot %d ret 0x%08lx\n",
+   TRACE(crtdll, "got 0x%08lx rot %d ret 0x%08lx\n",
 		  x,shift,ret);
    return ret;
     
@@ -676,11 +655,10 @@
       *control_M='\n';
       *(control_M+1)=0;
     }
-  dprintf_info(crtdll,
-		 "CRTDLL_fgets got %s for %d chars from file %p\n",
+  TRACE(crtdll, "got %s for %d chars from file %p\n",
 		 s,size,stream);
   if(ret)
-    dprintf_warn(crtdll, " Failed!\n");
+    WARN(crtdll, " Failed!\n");
 
   return ret;
 }
@@ -736,7 +714,7 @@
  */
 unsigned char* __cdecl CRTDLL__mbscpy(unsigned char *x,unsigned char *y)
 {
-    dprintf_info(crtdll,"CRTDLL_mbscpy %s and %s\n",x,y);
+    TRACE(crtdll,"CRTDLL_mbscpy %s and %s\n",x,y);
     return strcpy(x,y);
 }
 
@@ -777,13 +755,13 @@
 {
   unsigned char *y =x;
   
-  dprintf_info(crtdll, "CRTDLL_strlwr got %s\n", x);
+  TRACE(crtdll, "CRTDLL_strlwr got %s\n", x);
   while (*y) {
     if ((*y > 0x40) && (*y< 0x5b))
       *y = *y + 0x20;
     y++;
   }
-  dprintf_info(crtdll, "   returned %s\n", x);
+  TRACE(crtdll, "   returned %s\n", x);
 		 
   return x;
 }
@@ -810,7 +788,7 @@
   }
   /* If buffer too short, exit.  */
   if (i > SYSBUF_LENGTH) {
-    dprintf_info(crtdll,"_system buffer to small\n");
+    TRACE(crtdll,"_system buffer to small\n");
     return 127;
   }
   
@@ -827,8 +805,7 @@
   }
   *bp++ = '"';
   *bp = 0;
-  dprintf_info(crtdll,
-		 "_system got \"%s\", executing \"%s\"\n",x,buffer);
+  TRACE(crtdll, "_system got '%s', executing '%s'\n",x,buffer);
 
   return system(buffer);
 }
@@ -881,7 +858,7 @@
  */
 VOID __cdecl CRTDLL_longjmp(jmp_buf env, int val)
 {
-    dprintf_fixme(crtdll,"CRTDLL_longjmp semistup, expect crash\n");
+    FIXME(crtdll,"CRTDLL_longjmp semistup, expect crash\n");
     return longjmp(env, val);
 }
 
@@ -970,11 +947,11 @@
       fclose(stream);
       ret = _lclose32( dos_handle);
     }
-    dprintf_info(crtdll,"CRTDLL_fclose(%p) ufh %d dfh %d\n",
+    TRACE(crtdll,"(%p) ufh %d dfh %d\n",
 		   stream,unix_handle,dos_handle);
 
     if(ret)
-      dprintf_warn(crtdll, " Failed!\n");
+      WARN(crtdll, " Failed!\n");
 
     return ret;
 }
@@ -988,15 +965,15 @@
     DOS_FULL_NAME full_name;
 
     if (!DOSFS_GetFullName( pathname, FALSE, &full_name )) {
-      dprintf_warn(crtdll, "CRTDLL_unlink file %s bad name\n",pathname);
+      WARN(crtdll, "CRTDLL_unlink file %s bad name\n",pathname);
       return EOF;
     }
   
     ret=unlink(full_name.long_name);
-    dprintf_info(crtdll,"CRTDLL_unlink(%s unix %s)\n",
+    TRACE(crtdll,"(%s unix %s)\n",
 		   pathname,full_name.long_name);
     if(ret)
-      dprintf_warn(crtdll, " Failed!\n");
+      WARN(crtdll, " Failed!\n");
 
     return ret;
 }
@@ -1038,13 +1015,13 @@
 
     if (!DOSFS_GetFullName( filename, TRUE, &full_name ))
     {
-      dprintf_warn(crtdll, "CRTDLL__stat filename %s bad name\n",filename);
+      WARN(crtdll, "CRTDLL__stat filename %s bad name\n",filename);
       return -1;
     }
     ret=stat(full_name.long_name,&mystat);
-    dprintf_info(crtdll,"CRTDLL__stat %s\n", filename);
+    TRACE(crtdll,"CRTDLL__stat %s\n", filename);
     if(ret) 
-      dprintf_warn(crtdll, " Failed!\n");
+      WARN(crtdll, " Failed!\n");
 
     /* FIXME: should check what Windows returns */
 
@@ -1083,11 +1060,11 @@
     if (flags & 0x0200 ) wineflags |= O_TRUNC;
     if (flags & 0x0400 ) wineflags |= O_EXCL;
     if (flags & 0xf0f4 ) 
-      dprintf_info(crtdll,"CRTDLL_open file unsupported flags 0x%04x\n",flags);
+      TRACE(crtdll,"CRTDLL_open file unsupported flags 0x%04x\n",flags);
     /* End Fixme */
 
     ret = FILE_Open(path,wineflags);
-    dprintf_info(crtdll,"CRTDLL_open file %s mode 0x%04x (lccmode 0x%04x) got dfh %d\n",
+    TRACE(crtdll,"CRTDLL_open file %s mode 0x%04x (lccmode 0x%04x) got dfh %d\n",
 		   path,wineflags,flags,ret);
     return ret;
 }
@@ -1099,9 +1076,9 @@
 {
     int ret=_lclose32(fd);
 
-    dprintf_info(crtdll,"CRTDLL_close(%d)\n",fd);
+    TRACE(crtdll,"(%d)\n",fd);
     if(ret)
-      dprintf_warn(crtdll, " Failed!\n");
+      WARN(crtdll, " Failed!\n");
 
     return ret;
 }
@@ -1114,7 +1091,7 @@
     int ret;
     
     ret=feof(stream);
-    dprintf_info(crtdll,"CRTDLL_feof(%p) %s\n",stream,(ret)?"true":"false");
+    TRACE(crtdll,"(%p) %s\n",stream,(ret)?"true":"false");
     return ret;
 }
 
@@ -1360,9 +1337,9 @@
 #define O_TEXT     0x4000
 #define O_BINARY   0x8000
 
-	dprintf_fixme(crtdll, "CRTDLL._setmode on fhandle %d mode %s, STUB.\n",
+	FIXME(crtdll, "on fhandle %d mode %s, STUB.\n",
 		      fh,(mode=O_TEXT)?"O_TEXT":
-		                        (mode=O_BINARY)?"O_BINARY":"UNKNOWN");
+		      (mode=O_BINARY)?"O_BINARY":"UNKNOWN");
 	return -1;
 }
 
@@ -1392,7 +1369,7 @@
     else if (!(*mb))
       ret =0;
       
-    dprintf_info(crtdll,"CRTDLL_mlen %s for max %d bytes ret %d\n",mb,size,ret);
+    TRACE(crtdll,"CRTDLL_mlen %s for max %d bytes ret %d\n",mb,size,ret);
 
     return ret;
 }
@@ -1419,7 +1396,7 @@
     p++;
     ret = (p -wcs);
           
-    dprintf_info(crtdll,"CRTDLL_mbstowcs %s for %d chars put %d wchars\n",
+    TRACE(crtdll,"CRTDLL_mbstowcs %s for %d chars put %d wchars\n",
 		   mbs,size,ret);
     return ret;
 }
@@ -1447,7 +1424,7 @@
      else
        ret = -1;
    
-   dprintf_info(crtdll,"CRTDLL_mbtowc %s for %d chars\n",mb,size);
+   TRACE(crtdll,"CRTDLL_mbtowc %s for %d chars\n",mb,size);
          
    return ret;
 }
@@ -1508,7 +1485,7 @@
   }
   if (!DOSFS_GetFullName( name, FALSE, &full_name )) return NULL;
   lstrcpyn32A(buf,full_name.short_name,size);
-  dprintf_info(crtdll,"CRTDLL_fullpath got %s\n",buf);
+  TRACE(crtdll,"CRTDLL_fullpath got %s\n",buf);
   return buf;
 }
 
@@ -1524,7 +1501,7 @@
      */
   char * drivechar,*dirchar,*namechar;
 
-  dprintf_info(crtdll,"CRTDLL__splitpath got %s\n",path);
+  TRACE(crtdll,"CRTDLL__splitpath got %s\n",path);
 
   drivechar  = strchr(path,':');
   dirchar    = strrchr(path,'/');
@@ -1568,7 +1545,7 @@
 	}
     }
 
-  dprintf_info(crtdll,"CRTDLL__splitpath found %s %s %s %s\n",drive,directory,filename,extension);
+  TRACE(crtdll,"CRTDLL__splitpath found %s %s %s %s\n",drive,directory,filename,extension);
   
 }
 
@@ -1598,7 +1575,7 @@
   if (len > size)
     {
       /* set error to ERANGE */
-      dprintf_info(crtdll,"CRTDLL_getcwd buffer to small\n");
+      TRACE(crtdll,"CRTDLL_getcwd buffer to small\n");
       return NULL;
     }
   return buf;
@@ -1640,28 +1617,25 @@
      DOS_FULL_NAME tempname;
      
      if ((ret = tempnam(dir,prefix))==NULL) {
-       dprintf_warn(crtdll, "Unable to get unique filename\n");
+       WARN(crtdll, "Unable to get unique filename\n");
        return NULL;
      }
      if (!DOSFS_GetFullName(ret,FALSE,&tempname))
      {
-       dprintf_info(crtdll,
-		      "CRTDLL_tempnam Wrong path?\n");
+       TRACE(crtdll, "Wrong path?\n");
        return NULL;
      }
      free(ret);
      if ((ret = CRTDLL_malloc(strlen(tempname.short_name)+1)) == NULL) {
-	 dprintf_warn(crtdll,
-			"CRTDLL_tempnam CRTDL_malloc for shortname failed\n");
+	 WARN(crtdll, "CRTDL_malloc for shortname failed\n");
 	 return NULL;
      }
      if ((ret = strcpy(ret,tempname.short_name)) == NULL) { 
-       dprintf_warn(crtdll,
-		      "CRTDLL_tempnam Malloc for shortname failed\n");
+       WARN(crtdll, "Malloc for shortname failed\n");
        return NULL;
      }
      
-     dprintf_info(crtdll,"CRTDLL_tempnam dir %s prefix %s got %s\n",
+     TRACE(crtdll,"dir %s prefix %s got %s\n",
 		    dir,prefix,ret);
      return ret;
 
@@ -1677,19 +1651,18 @@
      char *ret;
 
      if ((ret =tmpnam(s))== NULL) {
-       dprintf_warn(crtdll, "Unable to get unique filename\n");
+       WARN(crtdll, "Unable to get unique filename\n");
        return NULL;
      }
      if (!DOSFS_GetFullName(ret,FALSE,&CRTDLL_tmpname))
      {
-       dprintf_info(crtdll,
-		      "CRTDLL_tmpnam Wrong path?\n");
+       TRACE(crtdll, "Wrong path?\n");
        return NULL;
      }
      strcat(CRTDLL_tmpname.short_name,".");
-     dprintf_info(crtdll,"CRTDLL_tmpnam for buf %p got %s\n",
+     TRACE(crtdll,"for buf %p got %s\n",
 		    s,CRTDLL_tmpname.short_name);
-     dprintf_info(crtdll,"CRTDLL_tmpnam long got %s\n",
+     TRACE(crtdll,"long got %s\n",
 		    CRTDLL_tmpname.long_name);
      if ( s != NULL) 
        return strcpy(s,CRTDLL_tmpname.short_name);
@@ -1714,7 +1687,7 @@
  */
 VOID __cdecl CRTDLL_signal(int sig, sig_handler_type ptr)
 {
-    dprintf_fixme(crtdll, "CRTDLL_signal %d %p: STUB!\n", sig, ptr);
+    FIXME(crtdll, "(%d %p): STUB!\n", sig, ptr);
 }
 
 /*********************************************************************
@@ -1728,6 +1701,6 @@
  */
 VOID __cdecl CRTDLL__sleep(unsigned long timeout) 
 {
-  dprintf_info(crtdll,"CRTDLL__sleep for %ld milliseconds\n",timeout);
+  TRACE(crtdll,"CRTDLL__sleep for %ld milliseconds\n",timeout);
   Sleep((timeout)?timeout:1);
 }
diff --git a/misc/ddeml.c b/misc/ddeml.c
index 4367c53..fb94286 100644
--- a/misc/ddeml.c
+++ b/misc/ddeml.c
@@ -18,7 +18,7 @@
 UINT16 WINAPI DdeInitialize16( LPDWORD pidInst, PFNCALLBACK16 pfnCallback,
                                DWORD afCmd, DWORD ulRes)
 {
-    fprintf( stdnimp, "DdeInitialize16: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -29,7 +29,7 @@
 UINT32 WINAPI DdeInitialize32A( LPDWORD pidInst, PFNCALLBACK32 pfnCallback,
                                 DWORD afCmd, DWORD ulRes )
 {
-    fprintf( stdnimp, "DdeInitialize32A: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -40,7 +40,7 @@
 UINT32 WINAPI DdeInitialize32W( LPDWORD pidInst, PFNCALLBACK32 pfnCallback,
                                 DWORD afCmd, DWORD ulRes )
 {
-    fprintf( stdnimp, "DdeInitialize32W: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -59,7 +59,7 @@
  */
 BOOL32 WINAPI DdeUninitialize32( DWORD idInst )
 {
-    fprintf( stdnimp, "DdeUninitialize: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return TRUE;
 }
 
@@ -69,7 +69,7 @@
 HCONVLIST WINAPI DdeConnectList( DWORD idInst, HSZ hszService, HSZ hszTopic,
         HCONVLIST hConvList, LPCONVCONTEXT16 pCC )
 {
-    fprintf( stdnimp, "DdeConnectList: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -78,7 +78,7 @@
  */
 HCONV WINAPI DdeQueryNextServer( HCONVLIST hConvList, HCONV hConvPrev )
 {
-    fprintf( stdnimp, "DdeQueryNextServer: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -87,7 +87,7 @@
  */
 BOOL16 WINAPI DdeDisconnectList( HCONVLIST hConvList )
 {
-    fprintf( stdnimp, "DdeDisconnectList: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -97,7 +97,7 @@
 HCONV WINAPI DdeConnect16( DWORD idInst, HSZ hszService, HSZ hszTopic,
                            LPCONVCONTEXT16 pCC )
 {
-    fprintf( stdnimp, "DdeConnect16: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -108,7 +108,7 @@
 HCONV WINAPI DdeConnect32( DWORD idInst, HSZ hszService, HSZ hszTopic,
                            LPCONVCONTEXT32 pCC )
 {
-    fprintf( stdnimp, "DdeConnect32: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -126,7 +126,7 @@
  */
 BOOL16 WINAPI DdeSetUserHandle( HCONV hConv, DWORD id, DWORD hUser )
 {
-    fprintf( stdnimp, "DdeSetUserHandle: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -135,7 +135,7 @@
  */
 HDDEDATA WINAPI DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb, DWORD cbOff, HSZ hszItem, UINT16 wFmt, UINT16 afCmd )
 {
-    fprintf( stdnimp, "DdeCreateDataHandle: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -144,7 +144,7 @@
  */
 BOOL32 WINAPI DdeDisconnect32( HCONV hConv )
 {
-    fprintf( stdnimp, "DdeDisconnect: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -154,7 +154,7 @@
  */
 HCONV WINAPI DdeReconnect( HCONV hConv )
 {
-    fprintf( stdnimp, "DdeReconnect: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -173,7 +173,7 @@
  */
 HSZ WINAPI DdeCreateStringHandle32A( DWORD idInst, LPCSTR psz, INT32 codepage )
 {
-    fprintf( stdnimp, "DdeCreateStringHandle32A: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -183,7 +183,7 @@
  */
 HSZ WINAPI DdeCreateStringHandle32W( DWORD idInst, LPCWSTR psz, INT32 codepage)
 {
-    fprintf( stdnimp, "DdeCreateStringHandle32W: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -202,7 +202,7 @@
  */
 BOOL32 WINAPI DdeFreeStringHandle32( DWORD idInst, HSZ hsz )
 {
-    fprintf( stdnimp, "DdeFreeStringHandle: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return TRUE;
 }
 
@@ -221,7 +221,7 @@
  */
 BOOL32 WINAPI DdeFreeDataHandle32( HDDEDATA hData )
 {
-    fprintf( stdnimp, "DdeFreeDataHandle: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return TRUE;
 }
 
@@ -240,7 +240,7 @@
  */
 BOOL32 WINAPI DdeKeepStringHandle32( DWORD idInst, HSZ hsz )
 {
-    fprintf( stdnimp, "DdeKeepStringHandle: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return TRUE;
 }
 
@@ -266,7 +266,7 @@
                                         UINT32 wType, DWORD dwTimeout,
                                         LPDWORD pdwResult )
 {
-    fprintf( stdnimp, "DdeClientTransaction: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -276,7 +276,7 @@
 BOOL16 WINAPI DdeAbandonTransaction( DWORD idInst, HCONV hConv, 
                                      DWORD idTransaction )
 {
-    fprintf( stdnimp, "DdeAbandonTransaction: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -285,7 +285,7 @@
  */
 BOOL16 WINAPI DdePostAdvise( DWORD idInst, HSZ hszTopic, HSZ hszItem )
 {
-    fprintf( stdnimp, "DdePostAdvise: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -295,7 +295,7 @@
 HDDEDATA WINAPI DdeAddData( HDDEDATA hData, LPBYTE pSrc, DWORD cb,
                             DWORD cbOff )
 {
-    fprintf( stdnimp, "DdeAddData: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -305,7 +305,7 @@
 DWORD WINAPI DdeGetData( HDDEDATA hData, LPBYTE pDst, DWORD cbMax, 
                          DWORD cbOff )
 {
-    fprintf( stdnimp, "DdeGetData: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -314,7 +314,7 @@
  */
 LPBYTE WINAPI DdeAccessData( HDDEDATA hData, LPDWORD pcbDataSize )
 {
-     fprintf( stdnimp, "DdeAccessData: empty stub\n" );
+     FIXME( ddeml, "empty stub\n" );
      return 0;
 }
 
@@ -323,7 +323,7 @@
  */
 BOOL16 WINAPI DdeUnaccessData( HDDEDATA hData )
 {
-     fprintf( stdnimp, "DdeUnaccessData: empty stub\n" );
+     FIXME( ddeml, "empty stub\n" );
      return 0;
 }
 
@@ -332,7 +332,7 @@
  */
 BOOL16 WINAPI DdeEnableCallback( DWORD idInst, HCONV hConv, UINT16 wCmd )
 {
-     fprintf( stdnimp, "DdeEnableCallback: empty stub\n" );
+     FIXME( ddeml, "empty stub\n" );
      return 0;
 }
 
@@ -352,7 +352,7 @@
 HDDEDATA WINAPI DdeNameService32( DWORD idInst, HSZ hsz1, HSZ hsz2,
                                   UINT32 afCmd )
 {
-    fprintf( stdnimp, "DdeNameService: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -371,7 +371,7 @@
  */
 UINT32 WINAPI DdeGetLastError32( DWORD idInst )
 {
-    fprintf( stdnimp, "DdeGetLastError: empty stub\n" );
+    FIXME( ddeml, "empty stub\n" );
     return 0;
 }
 
@@ -380,7 +380,7 @@
  */
 int WINAPI DdeCmpStringHandles( HSZ hsz1, HSZ hsz2 )
 {
-     fprintf( stdnimp, "DdeCmpStringHandles: empty stub\n" );
+     FIXME( ddeml, "empty stub\n" );
      return 0;
 }
 
diff --git a/misc/imagelist.c b/misc/imagelist.c
new file mode 100644
index 0000000..f212a9c
--- /dev/null
+++ b/misc/imagelist.c
@@ -0,0 +1,647 @@
+/*
+ *  ImageList implementation
+ *
+ *  Copyright 1998 Eric Kohl
+ *
+ *  TODO:
+ *    - Use device independent bitmaps (DIBs) instead of device
+ *      dependent bitmaps (DDBs).
+ *    - Fix image selection (ImageList_Draw).
+ *    - Improve error checking.
+ *    - Add missing functions.
+ *    - Many many other things. (undocumented functions)
+ */
+
+/* This must be defined because the HIMAGELIST type is just a pointer
+ * to the _IMAGELIST data structure. But MS does not want us to know
+ * anything about its contents. Applications just see a pointer to
+ * a struct without any content. It's just to keep compatibility.
+ */
+#define __WINE_IMAGELIST_C
+ 
+/* This must be defined until "GetIconInfo" is implemented completely.
+ * To do that the Cursor and Icon code in objects/cursoricon.c must
+ * be rewritten.
+ */
+#define __GET_ICON_INFO_HACK__ 
+ 
+#include <stdlib.h>
+#include "windows.h"
+#include "imagelist.h"
+#include "commctrl.h"
+#include "debug.h"
+
+#ifdef __GET_ICON_INFO_HACK__
+#include "bitmap.h"
+#endif
+
+
+static void
+IMAGELIST_GrowBitmaps (HIMAGELIST himl, INT32 nImageCount)
+{
+    HDC32     hdcScreen, hdcImageList, hdcBitmap;
+    HBITMAP32 hbmNewBitmap;
+    INT32     nNewWidth;
+
+    /* no space left for new Image(s) ==> create new Bitmap(s) */
+    printf ("IMAGELIST_GrowBitmaps: Create grown bitmaps!!\n");
+
+    nNewWidth = (himl->cCurImage + nImageCount + himl->cGrow) * himl->cx;
+
+    hdcScreen = GetDC32 (GetDesktopWindow32 ());
+    hdcImageList = CreateCompatibleDC32 (hdcScreen);
+    hdcBitmap = CreateCompatibleDC32 (hdcScreen);
+    ReleaseDC32 (hdcScreen, GetDesktopWindow32 ());
+
+    hbmNewBitmap =
+        CreateCompatibleBitmap32 (hdcImageList, nNewWidth, himl->cy);
+
+    SelectObject32 (hdcImageList, himl->hbmImage);
+    SelectObject32 (hdcBitmap, hbmNewBitmap);
+    BitBlt32 (hdcBitmap, 0, 0, himl->cCurImage * himl->cx, himl->cy,
+              hdcImageList, 0, 0, SRCCOPY);
+
+    DeleteObject32 (himl->hbmImage);
+    himl->hbmImage = hbmNewBitmap;
+
+    if (himl->hbmMask) {
+        hbmNewBitmap = 
+            CreateCompatibleBitmap32 (hdcImageList, nNewWidth, himl->cy); 
+        SelectObject32 (hdcImageList, himl->hbmMask);
+        SelectObject32 (hdcBitmap, hbmNewBitmap);
+        BitBlt32 (hdcBitmap, 0, 0, himl->cCurImage * himl->cx, himl->cy,
+                  hdcImageList, 0, 0, SRCCOPY);
+        DeleteObject32 (himl->hbmMask);
+        himl->hbmMask = hbmNewBitmap;
+    }
+
+    DeleteDC32 (hdcImageList);
+    DeleteDC32 (hdcBitmap);
+}
+
+
+INT32 WINAPI
+ImageList_Add (HIMAGELIST himl, HBITMAP32 hbmImage, HBITMAP32 hbmMask)
+{
+    HDC32    hdcImageList, hdcImage, hdcMask;
+    INT32    nFirstIndex, nImageCount;
+    INT32    nStartX, nRunX, nRunY;
+    COLORREF clrColor;
+    BITMAP32 bmp;
+
+    GetObject32A (hbmImage, sizeof(BITMAP32), (LPVOID)&bmp);
+    nImageCount = bmp.bmWidth / himl->cx;
+
+    if (himl->cCurImage + nImageCount >= himl->cMaxImage)
+        IMAGELIST_GrowBitmaps (himl, nImageCount);
+
+    hdcImageList = CreateCompatibleDC32 (0);
+    hdcImage = CreateCompatibleDC32 (0);
+
+    SelectObject32 (hdcImageList, himl->hbmImage);
+    SelectObject32 (hdcImage, hbmImage);
+
+    BitBlt32 (hdcImageList, himl->cCurImage * himl->cx, 0,
+              bmp.bmWidth, himl->cy, hdcImage, 0, 0, SRCCOPY);
+          
+    if (himl->hbmMask) {
+        if (hbmMask) {
+            SelectObject32 (hdcImageList, himl->hbmMask);
+            SelectObject32 (hdcImage, hbmMask);
+            BitBlt32 (hdcImageList, himl->cCurImage * himl->cx, 0,
+                      bmp.bmWidth, himl->cy, hdcImage, 0, 0, SRCCOPY);
+        }
+        else {
+            /* create mask from the imagelist's background color */
+            hdcMask = CreateCompatibleDC32 (0);
+            SelectObject32 (hdcMask, himl->hbmMask);
+            nStartX = himl->cCurImage * himl->cx;
+            for (nRunY = 0; nRunY < himl->cy; nRunY++) {
+                for (nRunX = 0; nRunX < bmp.bmWidth; nRunX++) {
+                    clrColor = GetPixel32 (hdcImage, nRunX, nRunY);
+                    if (clrColor == himl->clrBk) {
+                        SetPixel32 (hdcImageList, nStartX + nRunX, nRunY, 
+                                    RGB(0, 0, 0));
+                        SetPixel32 (hdcMask, nStartX + nRunX, nRunY, 
+                                    RGB(255, 255, 255));
+                    }
+                    else
+                        SetPixel32 (hdcMask, nStartX + nRunX, nRunY, 
+                                    RGB(0, 0, 0));        
+                }
+            }
+            DeleteDC32 (hdcMask);
+        }
+    }
+
+    DeleteDC32 (hdcImageList);
+    DeleteDC32 (hdcImage);
+
+    nFirstIndex = himl->cCurImage;
+    himl->cCurImage += nImageCount;
+
+    return (nFirstIndex);
+}
+
+
+INT32 WINAPI
+ImageList_AddMasked (HIMAGELIST himl, HBITMAP32 hbmImage, COLORREF crMask)
+{
+    HDC32    hdcImageList, hdcImage, hdcMask;
+    INT32    nIndex, nImageCount;
+    BITMAP32 bmp;
+    INT32    nStartX, nRunX, nRunY;
+    COLORREF crColor;
+
+    GetObject32A (hbmImage, sizeof(BITMAP32), &bmp);
+    nImageCount = bmp.bmWidth / himl->cx;
+
+    if (himl->cCurImage + nImageCount >= himl->cMaxImage)
+        IMAGELIST_GrowBitmaps (himl, nImageCount);
+
+    nIndex = himl->cCurImage;
+    himl->cCurImage += nImageCount;
+
+    hdcImageList = CreateCompatibleDC32 (0);
+    hdcImage = CreateCompatibleDC32 (0);
+
+    SelectObject32 (hdcImageList, himl->hbmImage);
+    SelectObject32 (hdcImage, hbmImage);
+    BitBlt32 (hdcImageList, nIndex * himl->cx, 0,
+              bmp.bmWidth, himl->cy, hdcImage, 0, 0, SRCCOPY);
+
+    if (himl->hbmMask) {
+        /* create Mask */
+        hdcMask = CreateCompatibleDC32 (0);
+        SelectObject32 (hdcMask, himl->hbmMask);
+        nStartX = nIndex * himl->cx;
+        for (nRunY = 0; nRunY < himl->cy; nRunY++) {
+            for (nRunX = 0; nRunX < bmp.bmWidth; nRunX++) {
+                crColor = GetPixel32 (hdcImage, nRunX, nRunY);
+                if (crColor == crMask) {
+                    SetPixel32 (hdcImageList, nStartX + nRunX, nRunY,
+                                RGB(0, 0, 0));
+                    SetPixel32 (hdcMask, nStartX + nRunX, nRunY,
+                                RGB(255, 255, 255));
+                }
+                else
+                    SetPixel32 (hdcMask, nStartX + nRunX, nRunY, RGB(0, 0, 0));
+            }
+        }
+        DeleteDC32 (hdcMask);
+    }
+
+    DeleteDC32 (hdcImageList);
+    DeleteDC32 (hdcImage);
+  
+    return (nIndex);
+}
+
+
+HIMAGELIST WINAPI
+ImageList_Create (INT32 cx, INT32 cy, UINT32 flags, INT32 cInitial, INT32 cGrow)
+{
+    HIMAGELIST himl;
+    HANDLE32 hHeap;
+    HDC32 hdcDesktop;
+    HWND32 hwndDesktop;
+
+    hHeap = GetProcessHeap ();
+    himl = (HIMAGELIST) HeapAlloc (hHeap, 0, sizeof(struct _IMAGELIST));
+    if (!himl)
+        return (0);
+    himl->hHeap = hHeap;
+    himl->cx = cx;
+    himl->cy = cy;
+    himl->flags = flags;
+    himl->cMaxImage = cInitial + cGrow;
+    himl->cGrow = cGrow;
+    himl->cCurImage = 0;
+    himl->clrBk = CLR_NONE;  /* ??? or CLR_DEFAULT */
+    himl->nOvlIdx[0] = -1;
+    himl->nOvlIdx[1] = -1;
+    himl->nOvlIdx[2] = -1;
+    himl->nOvlIdx[3] = -1;
+
+    hwndDesktop = GetDesktopWindow32();
+    hdcDesktop = GetDC32 (hwndDesktop);
+    
+    himl->hbmImage =
+        CreateCompatibleBitmap32 (hdcDesktop, himl->cx * himl->cMaxImage, 
+                                  himl->cy);
+    if (himl->flags & ILC_MASK)
+        himl->hbmMask = 
+            CreateCompatibleBitmap32 (hdcDesktop, himl->cx * himl->cMaxImage, 
+                                      himl->cy); 
+    else
+        himl->hbmMask = 0;
+
+    ReleaseDC32 (hwndDesktop, hdcDesktop);
+    
+    return (himl);    
+}
+
+
+BOOL32 WINAPI
+ImageList_Destroy (HIMAGELIST himl)
+{
+    if (himl->hbmImage)
+        DeleteObject32 (himl->hbmImage);
+    if (himl->hbmMask)
+        DeleteObject32 (himl->hbmMask);
+        
+    HeapFree (himl->hHeap, 0, (LPVOID)himl);
+    return (TRUE);
+}
+
+
+
+BOOL32 WINAPI
+ImageList_Draw (HIMAGELIST himl, INT32 i, HDC32 hdc, 
+                INT32 x, INT32 y, UINT32 fStyle)
+{
+    HDC32     hdcImageList,hdcMask;
+    HBITMAP32 hbmMask;
+    HBRUSH32 hBrush, hOldBrush;
+    INT32 nOvlIdx;
+
+    hdcImageList = CreateCompatibleDC32 (0);
+  
+    if (himl->hbmMask) {  
+        SelectObject32 (hdcImageList, himl->hbmMask);
+        BitBlt32 (hdc, x, y, himl->cx, himl->cy, hdcImageList,
+                  himl->cx * i, 0, SRCAND);  
+    }  
+
+    SelectObject32 (hdcImageList, himl->hbmImage);
+
+    BitBlt32 (hdc, x, y, himl->cx, himl->cy, hdcImageList,
+              himl->cx * i, 0, SRCPAINT);
+
+    /* Draw overlay image */
+    if (fStyle & 0x0700) {
+        nOvlIdx = (fStyle & 0x0700) >> 8;
+        if ((nOvlIdx >= 1) && (nOvlIdx <= 4)) {
+            nOvlIdx = himl->nOvlIdx[nOvlIdx - 1];
+            if ((nOvlIdx >= 0) && (nOvlIdx <= himl->cCurImage)) {
+
+                if (himl->hbmMask) {  
+                    SelectObject32 (hdcImageList, himl->hbmMask);
+                    BitBlt32 (hdc, x, y, himl->cx, himl->cy, hdcImageList,
+                              himl->cx * nOvlIdx, 0, SRCAND);  
+                }  
+                SelectObject32 (hdcImageList, himl->hbmImage);
+                BitBlt32 (hdc, x, y, himl->cx, himl->cy, hdcImageList,
+                          himl->cx * nOvlIdx, 0, SRCPAINT);
+
+            }
+        }
+    }
+
+    DeleteDC32 (hdcImageList);
+  
+    return (TRUE);
+}
+
+
+
+COLORREF WINAPI
+ImageList_GetBkColor (HIMAGELIST himl)
+{
+    return (himl->clrBk);
+}
+
+
+HICON32 WINAPI
+ImageList_GetIcon (HIMAGELIST himl, INT32 i, UINT32 flags)
+{
+
+
+    return (0);
+}
+
+
+BOOL32 WINAPI
+ImageList_GetIconSize (HIMAGELIST himl, INT32 *cx, INT32 *cy)
+{
+    *cx = himl->cx;
+    *cy = himl->cy;
+    return (TRUE);
+}
+
+
+INT32 WINAPI
+ImageList_GetImageCount (HIMAGELIST himl)
+{
+    return (himl->cCurImage);
+}
+
+
+BOOL32 WINAPI
+ImageList_GetImageInfo (HIMAGELIST himl, INT32 i, IMAGEINFO *pImageInfo)
+{
+    pImageInfo->hbmImage = himl->hbmImage;
+    pImageInfo->hbmMask  = himl->hbmMask;
+    
+    pImageInfo->rcImage.top    = 0;
+    pImageInfo->rcImage.bottom = himl->cy;
+    pImageInfo->rcImage.left   = i * himl->cx;
+    pImageInfo->rcImage.right  = (i+1) * himl->cx;
+    
+    return (TRUE);
+}
+
+
+HIMAGELIST WINAPI
+ImageList_LoadImage32A (HINSTANCE32 hi, LPCSTR lpbmp, INT32 cx, INT32 cGrow, 
+                        COLORREF clrMask, UINT32 uType, UINT32 uFlags)
+{
+    HIMAGELIST himl = NULL;
+    HANDLE32   handle;
+    INT32      nImageCount;
+
+    handle = LoadImage32A (hi, lpbmp, uType, 0, 0, uFlags);
+
+    if (uType == IMAGE_BITMAP) {
+        BITMAP32 bmp;
+        GetObject32A (handle, sizeof(BITMAP32), &bmp);
+        nImageCount = bmp.bmWidth / cx;
+
+        himl = ImageList_Create (cx, bmp.bmHeight, ILC_MASK | ILC_COLOR,
+                                 nImageCount, cGrow);
+        ImageList_AddMasked (himl, (HBITMAP32)handle, clrMask);
+    }
+    else if ((uType == IMAGE_ICON) || (uType == IMAGE_CURSOR)) {
+#ifdef __GET_ICON_INFO_HACK__
+        HBITMAP32 hbmImage;
+        HBITMAP32 hbmMask;
+        CURSORICONINFO *ptr;
+
+        if (!(ptr = (CURSORICONINFO *)GlobalLock16(handle))) return (NULL);
+        hbmMask  = CreateBitmap32 (ptr->nWidth, ptr->nHeight, 1, 1, 
+                                   (char *)(ptr + 1));
+        hbmImage = CreateBitmap32 (ptr->nWidth, ptr->nHeight, ptr->bPlanes,
+                                   ptr->bBitsPerPixel,
+                                   (char *)(ptr + 1) + ptr->nHeight * 
+                                   BITMAP_WIDTH_BYTES(ptr->nWidth, 1));
+        himl = ImageList_Create (ptr->nWidth, ptr->nHeight,
+                                 ILC_MASK | ILC_COLOR, 1, cGrow);
+        ImageList_Add (himl, hbmImage, hbmMask);
+        DeleteObject32 (hbmImage);
+        DeleteObject32 (hbmMask);
+        GlobalUnlock16 (handle);
+#else
+        ICONINFO32 ii;
+        BITMAP32 bmp;
+
+        GetIconInfo (hIcon, &ii);
+        GetObject32A (ii->hbmMask, sizeof(BITMAP32), (LPVOID)&bmp);
+        himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight, 
+                                 ILC_MASK | ILC_COLOR, 1, cGrow);
+        ImageList_Add (himl, ii->hbmColor, ii->hbmMask);
+#endif
+    }
+
+    DeleteObject32 (handle);
+    
+    return (himl);
+}
+
+
+HIMAGELIST WINAPI
+ImageList_LoadImage32W (HINSTANCE32 hi, LPCWSTR lpbmp, INT32 cx, INT32 cGrow, 
+                        COLORREF clrMask, UINT32 uType, UINT32 uFlags)
+{
+    HIMAGELIST himl = NULL;
+    HANDLE32   handle;
+    INT32      nImageCount;
+
+    handle = LoadImage32W (hi, lpbmp, uType, 0, 0, uFlags);
+
+    if (uType == IMAGE_BITMAP) {
+        BITMAP32 bmp;
+        GetObject32A (handle, sizeof(BITMAP32), &bmp);
+        nImageCount = bmp.bmWidth / cx;
+
+        himl = ImageList_Create (cx, bmp.bmHeight, ILC_MASK | ILC_COLOR,
+                                 nImageCount, cGrow);
+        ImageList_AddMasked (himl, (HBITMAP32)handle, clrMask);
+    }
+    else if ((uType == IMAGE_ICON) || (uType == IMAGE_CURSOR)) {
+#ifdef __GET_ICON_INFO_HACK__
+        HBITMAP32 hbmImage;
+        HBITMAP32 hbmMask;
+        CURSORICONINFO *ptr;
+
+        if (!(ptr = (CURSORICONINFO *)GlobalLock16(handle))) return (NULL);
+        hbmMask  = CreateBitmap32 (ptr->nWidth, ptr->nHeight, 1, 1, 
+                                   (char *)(ptr + 1));
+        hbmImage = CreateBitmap32 (ptr->nWidth, ptr->nHeight, ptr->bPlanes,
+                                   ptr->bBitsPerPixel,
+                                   (char *)(ptr + 1) + ptr->nHeight * 
+                                   BITMAP_WIDTH_BYTES(ptr->nWidth, 1));
+        himl = ImageList_Create (ptr->nWidth, ptr->nHeight,
+                                 ILC_MASK | ILC_COLOR, 1, cGrow);
+        ImageList_Add (himl, hbmImage, hbmMask);
+        DeleteObject32 (hbmImage);
+        DeleteObject32 (hbmMask);
+        GlobalUnlock16 (handle);
+#else
+        ICONINFO32 ii;
+        BITMAP32 bmp;
+
+        GetIconInfo (hIcon, &ii);
+        GetObject32A (ii->hbmMask, sizeof(BITMAP32), (LPVOID)&bmp);
+        himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight, 
+                                 ILC_MASK | ILC_COLOR, 1, cGrow);
+        ImageList_Add (himl, ii->hbmColor, ii->hbmMask);
+#endif
+    }
+
+    DeleteObject32 (handle);
+    
+    return (himl);
+}
+
+
+HIMAGELIST WINAPI
+ImageList_Merge (HIMAGELIST himl1, INT32 i1, HIMAGELIST himl2, INT32 i2,
+                 INT32 xOffs, INT32 yOffs)
+{
+    HIMAGELIST himlDst = NULL;
+    HDC32      hdcSrcImage, hdcDstImage;
+    INT32      nX1, nX2;
+
+    himlDst = ImageList_Create (himl1->cx, himl1->cy,
+                                ILC_MASK | ILC_COLOR, 1, 1);
+    if (himlDst) {
+        hdcSrcImage = CreateCompatibleDC32 (0);
+        hdcDstImage = CreateCompatibleDC32 (0);
+        nX1 = i1 * himl1->cx;
+        nX2 = i2 * himl2->cx;
+        
+        /* copy image */
+        SelectObject32 (hdcSrcImage, himl1->hbmImage);
+        SelectObject32 (hdcDstImage, himlDst->hbmImage);
+        BitBlt32 (hdcDstImage, 0, 0, himlDst->cx, himlDst->cy, 
+                  hdcSrcImage, nX1, 0, SRCCOPY);  /* SRCCOPY */
+
+        SelectObject32 (hdcSrcImage, himl2->hbmMask);
+        BitBlt32 (hdcDstImage, xOffs, yOffs, 
+                  himlDst->cx - xOffs, himlDst->cy - yOffs, 
+                  hdcSrcImage, nX2, 0, SRCAND);
+
+        SelectObject32 (hdcSrcImage, himl2->hbmImage);
+        BitBlt32 (hdcDstImage, xOffs, yOffs, 
+                  himlDst->cx - xOffs, himlDst->cy - yOffs, 
+                  hdcSrcImage, nX2, 0, SRCPAINT);
+
+        /* copy mask */
+        SelectObject32 (hdcSrcImage, himl1->hbmMask);
+        SelectObject32 (hdcDstImage, himlDst->hbmMask);
+        BitBlt32 (hdcDstImage, 0, 0, himlDst->cx, himlDst->cy, 
+                  hdcSrcImage, nX1, 0, SRCCOPY);
+
+        SelectObject32 (hdcSrcImage, himl2->hbmMask);
+        BitBlt32 (hdcDstImage, xOffs, yOffs, 
+                  himlDst->cx - xOffs, himlDst->cy - yOffs, 
+                  hdcSrcImage, nX2, 0, SRCAND);
+
+        DeleteDC32 (hdcSrcImage);
+        DeleteDC32 (hdcDstImage);
+    }
+   
+    return (himlDst);
+}
+
+
+
+BOOL32 WINAPI
+ImageList_Replace (HIMAGELIST himl, INT32 i,  HBITMAP32 hbmImage, 
+                   HBITMAP32 hbmMask)
+{
+    HDC32 hdcImageList, hdcImage;
+
+    if ((i >= himl->cCurImage) || (i < 0)) return (FALSE);
+
+    hdcImageList = CreateCompatibleDC32 (0);
+    hdcImage = CreateCompatibleDC32 (0);
+
+    /* Replace Image */
+    SelectObject32 (hdcImageList, himl->hbmImage);
+    SelectObject32 (hdcImage, hbmImage);
+
+    BitBlt32 (hdcImageList, i * himl->cx, 0,
+              himl->cx, himl->cy, hdcImage, 0, 0, SRCCOPY);
+
+    if (himl->hbmMask) {
+        /* Replace Mask */
+        SelectObject32 (hdcImageList, himl->hbmMask);
+        SelectObject32 (hdcImage, hbmMask);
+
+        BitBlt32 (hdcImageList, i * himl->cx, 0,
+                  himl->cx, himl->cy, hdcImage, 0, 0, SRCCOPY);
+    }
+
+    DeleteDC32 (hdcImage);
+    DeleteDC32 (hdcImageList);
+
+    return (TRUE);
+}
+
+
+INT32 WINAPI
+ImageList_ReplaceIcon (HIMAGELIST himl, INT32 i, HICON32 hIcon)
+{
+    HDC32     hdcImageList, hdcImage;
+    INT32     nIndex;
+#ifdef __GET_ICON_INFO_HACK__
+    HBITMAP32 hbmImage;
+    HBITMAP32 hbmMask;
+    CURSORICONINFO *ptr;
+#else    
+    ICONINFO32 ii;
+    BITMAP32 bmp;
+#endif
+
+    if ((i >= himl->cCurImage) || (i < -1)) return (-1);
+
+#ifdef __GET_ICON_INFO_HACK__
+    if (!(ptr = (CURSORICONINFO *)GlobalLock16(hIcon))) return (-1);
+    hbmMask  = CreateBitmap32 (ptr->nWidth, ptr->nHeight, 1, 1, 
+                               (char *)(ptr + 1));
+    hbmImage = CreateBitmap32 (ptr->nWidth, ptr->nHeight, ptr->bPlanes,
+                               ptr->bBitsPerPixel,
+                               (char *)(ptr + 1) + ptr->nHeight * 
+                               BITMAP_WIDTH_BYTES(ptr->nWidth, 1));
+#else
+    GetIconInfo (hIcon, &ii);
+    GetObject32A (ii->hbmMask, sizeof(BITMAP32), (LPVOID)&bmp);
+#endif
+
+    if (i == -1) {
+        if (himl->cCurImage + 1 >= himl->cMaxImage)
+            IMAGELIST_GrowBitmaps (himl, 1);
+        nIndex = himl->cCurImage;
+        himl->cCurImage ++;
+    }
+    else
+        nIndex = i;
+
+    hdcImageList = CreateCompatibleDC32 (0);
+    hdcImage = CreateCompatibleDC32 (0);
+
+#ifdef __GET_ICON_INFO_HACK__
+    SelectObject32 (hdcImageList, himl->hbmImage);
+    SelectObject32 (hdcImage, hbmImage);
+#else
+    SelectObject32 (hdcImage, ii->hbmColor);
+#endif
+
+    BitBlt32 (hdcImageList, nIndex * himl->cx, 0,
+              himl->cx, himl->cy, hdcImage, 0, 0, SRCCOPY);
+
+    if (himl->hbmMask) {
+#ifdef __GET_ICON_INFO_HACK__
+        SelectObject32 (hdcImageList, himl->hbmMask);
+        SelectObject32 (hdcImage, hbmMask);
+#else
+        SelectObject32 (hdcImage, ii->hbmMask);
+#endif
+        BitBlt32 (hdcImageList, nIndex * himl->cx, 0,
+                  himl->cx, himl->cy, hdcImage, 0, 0, SRCCOPY);
+    }
+
+    DeleteDC32 (hdcImageList);
+    DeleteDC32 (hdcImage);
+#ifdef __GET_ICON_INFO_HACK        
+    DeleteObject32 (hbmImage);
+    DeleteObject32 (hbmMask);
+    GlobalUnlock16 (hIcon);
+#endif
+    return (nIndex);
+}
+
+
+COLORREF WINAPI
+ImageList_SetBkColor (HIMAGELIST himl, COLORREF clrBk)
+{
+    COLORREF clrOldBk;
+
+    clrOldBk = himl->clrBk;
+    himl->clrBk = clrBk;
+    return (clrOldBk);
+}
+
+
+
+BOOL32 WINAPI
+ImageList_SetOverlayImage (HIMAGELIST himl, INT32 iImage, INT32 iOverlay)
+{
+    if ((iOverlay < 1) || (iOverlay > 4)) return (FALSE);
+    if ((iImage < 0) || (iImage > himl->cCurImage)) return (FALSE);
+    
+    himl->nOvlIdx[iOverlay - 1] = iImage;
+    return (TRUE);
+}
+
diff --git a/misc/lstr.c b/misc/lstr.c
index 252d081..ff3576a 100644
--- a/misc/lstr.c
+++ b/misc/lstr.c
@@ -517,12 +517,10 @@
 	DWORD	width = dwFlags & FORMAT_MESSAGE_MAX_WIDTH_MASK;
 	DWORD	nolinefeed = 0;
 
-	dprintf_info(resource,
-		"FormatMessage32A(0x%lx,%p,%ld,0x%lx,%p,%ld,%p)\n",
-		dwFlags,lpSource,dwMessageId,dwLanguageId,lpBuffer,nSize,args
-	);
+	TRACE(resource, "(0x%lx,%p,%ld,0x%lx,%p,%ld,%p)\n",
+		     dwFlags,lpSource,dwMessageId,dwLanguageId,lpBuffer,nSize,args);
 	if (width) 
-		fprintf(stdnimp,"	- line wrapping not supported.\n");
+		FIXME(resource,"line wrapping not supported.\n");
 	from = NULL;
 	if (dwFlags & FORMAT_MESSAGE_FROM_STRING)
 		from = HEAP_strdupA( GetProcessHeap(), 0, (LPSTR)lpSource);
@@ -596,6 +594,9 @@
 							f+=strlen(f); /*at \0*/
 						}
 					} else
+					        if(!args) 
+						  break;
+					else
 						fmtstr=HEAP_strdupA(GetProcessHeap(),0,"%s");
 					if (args) {
 						if (dwFlags & FORMAT_MESSAGE_ARGUMENT_ARRAY)
@@ -603,7 +604,7 @@
 						else
                                                     argliststart=(*(DWORD**)args)+insertnr-1;
 
-						if (fmtstr[strlen(fmtstr)]=='s')
+						if (fmtstr[strlen(fmtstr)-1]=='s')
 							sprintfbuf=HeapAlloc(GetProcessHeap(),0,strlen((LPSTR)argliststart[0])+1);
 						else
 							sprintfbuf=HeapAlloc(GetProcessHeap(),0,100);
@@ -683,12 +684,10 @@
 	DWORD	width = dwFlags & FORMAT_MESSAGE_MAX_WIDTH_MASK;
 	DWORD	nolinefeed = 0;
 
-	dprintf_info(resource,
-		"FormatMessage32A(0x%lx,%p,%ld,0x%lx,%p,%ld,%p)\n",
-		dwFlags,lpSource,dwMessageId,dwLanguageId,lpBuffer,nSize,args
-	);
+	TRACE(resource, "(0x%lx,%p,%ld,0x%lx,%p,%ld,%p)\n",
+		     dwFlags,lpSource,dwMessageId,dwLanguageId,lpBuffer,nSize,args);
 	if (width) 
-		fprintf(stdnimp,"	- line wrapping not supported.\n");
+		FIXME(resource,"line wrapping not supported.\n");
 	from = NULL;
 	if (dwFlags & FORMAT_MESSAGE_FROM_STRING)
 		from = HEAP_strdupWtoA(GetProcessHeap(),0,(LPWSTR)lpSource);
@@ -764,13 +763,16 @@
 							f+=strlen(f); /*at \0*/
 						}
 					} else
+					        if(!args)
+						  break;
+					else
 						fmtstr=HEAP_strdupA( GetProcessHeap(),0,"%s");
 					if (dwFlags & FORMAT_MESSAGE_ARGUMENT_ARRAY)
 						argliststart=args+insertnr-1;
 					else
 						argliststart=(*(DWORD**)args)+insertnr-1;
 
-					if (fmtstr[strlen(fmtstr)]=='s') {
+					if (fmtstr[strlen(fmtstr)-1]=='s') {
 						DWORD	xarr[3];
 
 						xarr[0]=(DWORD)HEAP_strdupWtoA(GetProcessHeap(),0,(LPWSTR)(*(argliststart+0)));
diff --git a/misc/lzexpand.c b/misc/lzexpand.c
index f9defeb..7440e9d 100644
--- a/misc/lzexpand.c
+++ b/misc/lzexpand.c
@@ -118,7 +118,7 @@
  */
 INT16 WINAPI LZStart16(void)
 {
-    dprintf_info(file,"LZStart16(void)\n");
+    TRACE(file,"(void)\n");
     return 1;
 }
 
@@ -128,7 +128,7 @@
  */
 INT32 WINAPI LZStart32(void)
 {
-    dprintf_info(file,"LZStart32(void)\n");
+    TRACE(file,"(void)\n");
     return 1;
 }
 
@@ -161,7 +161,7 @@
 	struct	lzstate		*lzs;
 	DWORD	ret;
 
-	dprintf_info(file,"LZInit(%d)\n",hfSrc);
+	TRACE(file,"(%d)\n",hfSrc);
 	ret=read_header(hfSrc,&head);
 	if (ret<=0) {
 		_llseek32(hfSrc,0,SEEK_SET);
@@ -194,7 +194,7 @@
  */
 void WINAPI LZDone(void)
 {
-    dprintf_info(file,"LZDone()\n");
+    TRACE(file,"(void)\n");
 }
 
 
@@ -226,7 +226,7 @@
 	INT32		fnislowercased,ret,len;
 	LPSTR		s,t;
 
-	dprintf_info(file,"GetExpandedName(%s)\n",in);
+	TRACE(file,"(%s)\n",in);
 	fd=OpenFile32(in,&ofs,OF_READ);
 	if (fd==HFILE_ERROR32)
 		return (INT32)(INT16)LZERROR_BADINHANDLE;
@@ -322,7 +322,7 @@
 	struct	lzstate	*lzs;
 
 	buf=(LPBYTE)vbuf;
-	dprintf_info(file,"LZRead32(%d,%p,%d)\n",fd,buf,toread);
+	TRACE(file,"(%d,%p,%d)\n",fd,buf,toread);
 	howmuch=toread;
 	for (i=0;i<nroflzstates;i++)
 		if (lzstates[i].lzfd==fd)
@@ -426,7 +426,7 @@
 	struct	lzstate	*lzs;
 	LONG	newwanted;
 
-	dprintf_info(file,"LZSeek(%d,%ld,%d)\n",fd,off,type);
+	TRACE(file,"(%d,%ld,%d)\n",fd,off,type);
 	for (i=0;i<nroflzstates;i++)
 		if (lzstates[i].lzfd==fd)
 			break;
@@ -479,7 +479,7 @@
 	BYTE	buf[BUFLEN];
 	INT32	WINAPI (*xread)(HFILE32,LPVOID,UINT32);
 
-	dprintf_info(file,"LZCopy(%d,%d)\n",src,dest);
+	TRACE(file,"(%d,%d)\n",src,dest);
 	for (i=0;i<nroflzstates;i++)
 		if (src==lzstates[i].lzfd)
 			break;
@@ -545,7 +545,7 @@
 {
 	HFILE32	fd,cfd;
 
-	dprintf_info(file,"LZOpenFile(%s,%p,%d)\n",fn,ofs,mode);
+	TRACE(file,"(%s,%p,%d)\n",fn,ofs,mode);
 	/* 0x70 represents all OF_SHARE_* flags, ignore them for the check */
 	fd=OpenFile32(fn,ofs,mode);
 	if (fd==HFILE_ERROR32)
@@ -603,7 +603,7 @@
 {
 	int	i;
 
-	dprintf_info(file,"LZClose(%d)\n",fd);
+	TRACE(file,"(%d)\n",fd);
 	for (i=0;i<nroflzstates;i++)
 		if (lzstates[i].lzfd==fd)
 			break;
@@ -626,7 +626,7 @@
  */
 LONG WINAPI CopyLZFile16( HFILE16 src, HFILE16 dest )
 {
-    dprintf_info(file,"CopyLZFile16(%d,%d)\n",src,dest);
+    TRACE(file,"(%d,%d)\n",src,dest);
     return LZCopy32(src,dest);
 }
 
@@ -639,6 +639,6 @@
  */
 LONG WINAPI CopyLZFile32( HFILE32 src, HFILE32 dest )
 {
-    dprintf_info(file,"CopyLZFile32(%d,%d)\n",src,dest);
+    TRACE(file,"(%d,%d)\n",src,dest);
     return LZCopy32(src,dest);
 }
diff --git a/misc/registry.c b/misc/registry.c
index 3e47851..3f7ac03 100644
--- a/misc/registry.c
+++ b/misc/registry.c
@@ -50,7 +50,7 @@
 {
     LPWSTR   name;          /* name of value (UNICODE) or NULL for win31 */
     DWORD    type;          /* type of value */
-    DWORD    len;           /* length of data */
+    DWORD    len;           /* length of data in BYTEs */
     DWORD    lastmodified;  /* time of seconds since 1.1.1970 */
     LPBYTE   data;          /* content, may be strings, binaries, etc. */
 } KEYVALUE,*LPKEYVALUE;
@@ -117,10 +117,10 @@
 
 	for (i=0;i<nrofopenhandles;i++) {
 		if (openhandles[i].lpkey==lpkey) {
-			dprintf_warn(reg, "add_handle:Tried to add %p twice!\n",lpkey);
+			WARN(reg, "Tried to add %p twice!\n",lpkey);
 		}
 		if (openhandles[i].hkey==hkey) {
-			dprintf_warn(reg, "add_handle:Tried to add %lx twice!\n",(LONG)hkey);
+			WARN(reg, "Tried to add %lx twice!\n",(LONG)hkey);
 		}
 	}
 	openhandles=xrealloc(	openhandles,
@@ -139,7 +139,7 @@
 	for (i=0;i<nrofopenhandles;i++)
 		if (openhandles[i].hkey==hkey)
 			return openhandles[i].lpkey;
-	dprintf_warn(reg, "get_handle:Didn't find handle %lx?\n",(LONG)hkey);
+	WARN(reg, "Didn't find handle %lx?\n",(LONG)hkey);
 	return NULL;
 }
 
@@ -151,7 +151,7 @@
 		if (openhandles[i].hkey==hkey)
 			break;
 	if (i==nrofopenhandles) {
-		dprintf_warn(reg, "remove_handle:Didn't find handle %08x?\n",hkey);
+		WARN(reg, "Didn't find handle %08x?\n",hkey);
 		return;
 	}
 	memcpy(	openhandles+i,
@@ -199,7 +199,7 @@
 	case HKEY_CURRENT_CONFIG:
 		return key_current_config;
 	default:
-		dprintf_warn(reg, "lookup_hkey(%lx), special key!\n",
+		WARN(reg, "(%lx), special key!\n",
 			(LONG)hkey
 		);
 		return get_handle(hkey);
@@ -806,7 +806,7 @@
 		return 0;
 	}
 	if (ver!=REGISTRY_SAVE_VERSION) {
-		dprintf_info(reg,__FILE__":_wine_loadsubreg:Old format (%d) registry found, ignoring it. (buf was %s).\n",ver,buf);
+		TRACE(reg,"Old format (%d) registry found, ignoring it. (buf was %s).\n",ver,buf);
 		free(buf);
 		return 0;
 	}
@@ -828,7 +828,7 @@
 
 	F=fopen(fn,"rb");
 	if (F==NULL) {
-		dprintf_warn(reg,"Couldn't open %s for reading: %s\n",
+		WARN(reg,"Couldn't open %s for reading: %s\n",
 		       fn,strerror(errno)
 		);
 		return;
@@ -996,7 +996,7 @@
 {
    LPWSTR dest = xmalloc (2 * nchars + 2);
 
-   lstrcpynAtoW(dest,src, nchars);
+   lstrcpynAtoW(dest,src,nchars+1);
    dest[nchars] = 0;
    return dest;
 }
@@ -1088,7 +1088,7 @@
 
 	  if ((1 << dkv.type) & UNICONVMASK) {
 	    data = (LPBYTE) strcvtA2W(curdata, dkv.valdatalen);
-	    len = dkv.valdatalen + 1;
+	    len = 2*(dkv.valdatalen + 1);
 	  } else {
 	    /* I don't think we want to NULL terminate all data */
 	    data = xmalloc(dkv.valdatalen);
@@ -1168,7 +1168,7 @@
 	OFSTRUCT	ofs;
 	BY_HANDLE_FILE_INFORMATION hfdinfo;
 
-	dprintf_info(reg,"Loading Win95 registry database '%s'\n",fn);
+	TRACE(reg,"Loading Win95 registry database '%s'\n",fn);
 	hfd=OpenFile32(fn,&ofs,OF_READ);
 	if (hfd==HFILE_ERROR32)
 		return;
@@ -1188,7 +1188,7 @@
 	if (4!=_lread32(hfd,magic,4))
 		return;
 	if (strcmp(magic,"RGKN")) {
-		dprintf_warn(reg, "second IFF header not RGKN, but %s\n", magic);
+		WARN(reg, "second IFF header not RGKN, but %s\n", magic);
 		return;
 	}
 
@@ -1353,7 +1353,7 @@
 				}
 			}
 		} else {
-			dprintf_info(reg,"__w31_dumptree:strange: no directory key name, idx=%04x\n", idx);
+			TRACE(reg,"strange: no directory key name, idx=%04x\n", idx);
 		}
 		__w31_dumptree(dir->child_idx,txt,tab,head,xlpkey,lastmodified,level+1);
 		idx=dir->sibling_idx;
@@ -1379,12 +1379,12 @@
 
 	/* read & dump header */
 	if (sizeof(head)!=_lread32(hf,&head,sizeof(head))) {
-		dprintf_err(reg, "_w31_loadreg:reg.dat is too short.\n");
+		ERR(reg, "reg.dat is too short.\n");
 		_lclose32(hf);
 		return;
 	}
 	if (memcmp(head.cookie, "SHCC3.10", sizeof(head.cookie))!=0) {
-		dprintf_err(reg, "_w31_loadreg:reg.dat has bad signature.\n");
+		ERR(reg, "reg.dat has bad signature.\n");
 		_lclose32(hf);
 		return;
 	}
@@ -1393,7 +1393,7 @@
 	/* read and dump index table */
 	tab = xmalloc(len);
 	if (len!=_lread32(hf,tab,len)) {
-		dprintf_err(reg,"_w31_loadreg:couldn't read %d bytes.\n",len); 
+		ERR(reg,"couldn't read %d bytes.\n",len); 
 		free(tab);
 		_lclose32(hf);
 		return;
@@ -1402,14 +1402,14 @@
 	/* read text */
 	txt = xmalloc(head.textsize);
 	if (-1==_llseek32(hf,head.textoff,SEEK_SET)) {
-		dprintf_err(reg,"_w31_loadreg:couldn't seek to textblock.\n"); 
+		ERR(reg,"couldn't seek to textblock.\n"); 
 		free(tab);
 		free(txt);
 		_lclose32(hf);
 		return;
 	}
 	if (head.textsize!=_lread32(hf,txt,head.textsize)) {
-		dprintf_err(reg,"_w31_loadreg:textblock too short (%d instead of %ld).\n",len,head.textsize); 
+		ERR(reg,"textblock too short (%d instead of %ld).\n",len,head.textsize); 
 		free(tab);
 		free(txt);
 		_lclose32(hf);
@@ -1417,7 +1417,7 @@
 	}
 
 	if (!GetFileInformationByHandle(hf,&hfinfo)) {
-		dprintf_err(reg,"_w31_loadreg:GetFileInformationByHandle failed?.\n"); 
+		ERR(reg,"GetFileInformationByHandle failed?.\n"); 
 		free(tab);
 		free(txt);
 		_lclose32(hf);
@@ -1529,7 +1529,7 @@
 	LPKEYSTRUCT	lpNextKey,lpxkey;
 	LPWSTR		*wps;
 	int		wpc,i;
-	dprintf_info(reg,"RegOpenKeyEx32W(%lx,%s,%ld,%lx,%p)\n",
+	TRACE(reg,"(%lx,%s,%ld,%lx,%p)\n",
 		(LONG)hkey,W2C(lpszSubKey,0),dwReserved,samDesired,retkey
 	);
 
@@ -1571,7 +1571,7 @@
 	LPCWSTR	lpszSubKey,
 	LPHKEY	retkey
 ) {
-	dprintf_info(reg,"RegOpenKey32W(%lx,%s,%p)\n",
+	TRACE(reg,"(%lx,%s,%p)\n",
 		(LONG)hkey,W2C(lpszSubKey,0),retkey
 	);
 	return RegOpenKeyEx32W(hkey,lpszSubKey,0,KEY_ALL_ACCESS,retkey);
@@ -1589,7 +1589,7 @@
 	LPWSTR	lpszSubKeyW;
 	DWORD	ret;
 
-	dprintf_info(reg,"RegOpenKeyEx32A(%lx,%s,%ld,%lx,%p)\n",
+	TRACE(reg,"(%lx,%s,%ld,%lx,%p)\n",
 		(LONG)hkey,lpszSubKey,dwReserved,samDesired,retkey
 	);
 	if (lpszSubKey)
@@ -1608,7 +1608,7 @@
 	LPCSTR	lpszSubKey,
 	LPHKEY	retkey
 ) {
-	dprintf_info(reg,"RegOpenKey32A(%lx,%s,%p)\n",
+	TRACE(reg,"(%lx,%s,%p)\n",
 		(LONG)hkey,lpszSubKey,retkey
 	);
 	return	RegOpenKeyEx32A(hkey,lpszSubKey,0,KEY_ALL_ACCESS,retkey);
@@ -1620,7 +1620,7 @@
 	LPCSTR	lpszSubKey,
 	LPHKEY	retkey
 ) {
-	dprintf_info(reg,"RegOpenKey16(%lx,%s,%p)\n",
+	TRACE(reg,"(%lx,%s,%p)\n",
 		(LONG)hkey,lpszSubKey,retkey
 	);
 	return RegOpenKey32A(hkey,lpszSubKey,retkey);
@@ -1656,7 +1656,7 @@
 	int		wpc,i;
 
 /*FIXME: handle security/access/whatever */
-	dprintf_info(reg,"RegCreateKeyEx32W(%lx,%s,%ld,%s,%lx,%lx,%p,%p,%p)\n",
+	TRACE(reg,"(%lx,%s,%ld,%s,%lx,%lx,%p,%p,%p)\n",
 		(LONG)hkey,
 		W2C(lpszSubKey,0),
 		dwReserved,
@@ -1752,7 +1752,7 @@
 ) {
 	DWORD	junk,ret;
 
-	dprintf_info(reg,"RegCreateKey32W(%lx,%s,%p)\n",
+	TRACE(reg,"(%lx,%s,%p)\n",
 		(LONG)hkey,W2C(lpszSubKey,0),retkey
 	);
 	ret=RegCreateKeyEx32W(
@@ -1784,7 +1784,7 @@
 	LPWSTR	lpszSubKeyW,lpszClassW;
 	DWORD	ret;
 
-	dprintf_info(reg,"RegCreateKeyEx32A(%lx,%s,%ld,%s,%lx,%lx,%p,%p,%p)\n",
+	TRACE(reg,"(%lx,%s,%ld,%s,%lx,%lx,%p,%p,%p)\n",
 		(LONG)hkey,
 		lpszSubKey,
 		dwReserved,
@@ -1829,7 +1829,7 @@
 ) {
 	DWORD	junk;
 
-	dprintf_info(reg,"RegCreateKey32A(%lx,%s,%p)\n",
+	TRACE(reg,"(%lx,%s,%p)\n",
 		(LONG)hkey,lpszSubKey,retkey
 	);
 	return	RegCreateKeyEx32A(
@@ -1851,7 +1851,7 @@
 	LPCSTR	lpszSubKey,
 	LPHKEY	retkey
 ) {
-	dprintf_info(reg,"RegCreateKey16(%lx,%s,%p)\n",
+	TRACE(reg,"(%lx,%s,%p)\n",
 		(LONG)hkey,lpszSubKey,retkey
 	);
 	return RegCreateKey32A(hkey,lpszSubKey,retkey);
@@ -1881,10 +1881,9 @@
 	LPKEYSTRUCT	lpkey;
 	int		i;
 
-	dprintf_info(reg,"RegQueryValueEx32W(%x,%s,%p,%p,%p,%ld)\n",
-		hkey,W2C(lpszValueName,0),lpdwReserved,lpdwType,lpbData,
-		lpcbData?*lpcbData:0
-	);
+	TRACE(reg,"(%x,%s,%p,%p,%p,%ld)\n",
+		     hkey,W2C(lpszValueName,0),lpdwReserved,lpdwType,lpbData,
+		     lpcbData?*lpcbData:0);
 
 	lpkey	= lookup_hkey(hkey);
 	if (!lpkey)
@@ -1923,8 +1922,7 @@
 		return SHELL_ERROR_SUCCESS;
 	}
 	if (*lpcbData<lpkey->values[i].len) {
-		*(WCHAR*)lpbData
-			= 0;
+		*(WCHAR*)lpbData= 0;
 		*lpcbData	= lpkey->values[i].len;
 		return ERROR_MORE_DATA;
 	}
@@ -1943,10 +1941,9 @@
 	HKEY	xhkey;
 	DWORD	ret,lpdwType;
 
-	dprintf_info(reg,"RegQueryValue32W(%x,%s,%p,%ld)\n",
-		hkey,W2C(lpszSubKey,0),lpszData,
-		lpcbData?*lpcbData:0
-	);
+	TRACE(reg,"(%x,%s,%p,%ld)\n",
+		     hkey,W2C(lpszSubKey,0),lpszData,
+		     lpcbData?*lpcbData:0);
 
 	/* only open subkey, if we really do descend */
 	if (lpszSubKey && *lpszSubKey) {
@@ -1985,10 +1982,10 @@
 	DWORD	*mylen;
 	DWORD	type;
 
-	dprintf_info(reg,"RegQueryValueEx32A(%x,%s,%p,%p,%p,%ld)\n",
-		hkey,lpszValueName,lpdwReserved,lpdwType,lpbData,
-		lpcbData?*lpcbData:0
-	);
+	TRACE(reg,"(%x,%s,%p,%p,%p,%ld)\n",
+		     hkey,lpszValueName,lpdwReserved,lpdwType,lpbData,
+		     lpcbData?*lpcbData:0);
+
 	if (lpszValueName)
 		lpszValueNameW=strdupA2W(lpszValueName);
 	else 
@@ -2070,10 +2067,10 @@
 	LPBYTE	lpbData,
 	LPDWORD	lpcbData
 ) {
-	dprintf_info(reg,"RegQueryValueEx16(%x,%s,%p,%p,%p,%ld)\n",
-		hkey,lpszValueName,lpdwReserved,lpdwType,lpbData,
-		lpcbData?*lpcbData:0
-	);
+	TRACE(reg,"(%x,%s,%p,%p,%p,%ld)\n",
+		     hkey,lpszValueName,lpdwReserved,lpdwType,lpbData,
+		     lpcbData?*lpcbData:0);
+
 	return RegQueryValueEx32A(
 		hkey,
 		lpszValueName,
@@ -2094,10 +2091,9 @@
 	HKEY	xhkey;
 	DWORD	ret,lpdwType;
 
-	dprintf_info(reg,"RegQueryValue32A(%x,%s,%p,%ld)\n",
-		hkey,lpszSubKey,lpszData,
-		lpcbData?*lpcbData:0
-	);
+	TRACE(reg,"(%x,%s,%p,%ld)\n",
+		     hkey,lpszSubKey,lpszData,
+		     lpcbData?*lpcbData:0);
 
 	/* only open subkey, if we really do descend */
 	if (lpszSubKey && *lpszSubKey) {
@@ -2128,9 +2124,9 @@
 	LPSTR	lpszData,
 	LPDWORD	lpcbData
 ) {
-	dprintf_info(reg,"RegQueryValue16(%x,%s,%p,%ld)\n",
-		hkey,lpszSubKey,lpszData,lpcbData?*lpcbData:0
-	);
+	TRACE(reg,"(%x,%s,%p,%ld)\n",
+		     hkey,lpszSubKey,lpszData,lpcbData?*lpcbData:0);
+
 	/* HACK: the 16bit RegQueryValue doesn't handle selectorblocks
 	 *       anyway, so we just mask out the high 16 bit.
 	 *       (this (not so much incidently;) hopefully fixes Aldus FH4)
@@ -2160,7 +2156,7 @@
 	LPKEYSTRUCT	lpkey;
 	int		i;
 
-	dprintf_info(reg,"RegSetValueEx32W(%x,%s,%ld,%ld,%p,%ld)\n",
+	TRACE(reg,"(%x,%s,%ld,%ld,%p,%ld)\n",
 		hkey,W2C(lpszValueName,0),dwReserved,dwType,lpbData,cbData
 	);
 	/* we no longer care about the lpbData type here... */
@@ -2217,7 +2213,7 @@
 	LPWSTR	lpszValueNameW;
 	DWORD	ret;
 
-	dprintf_info(reg,"RegSetValueEx32A(%x,%s,%ld,%ld,%p,%ld)\n",
+	TRACE(reg,"(%x,%s,%ld,%ld,%p,%ld)\n",
 		hkey,lpszValueName,dwReserved,dwType,lpbData,cbData
 	);
 	if ((1<<dwType) & UNICONVMASK) {
@@ -2246,7 +2242,7 @@
 	LPBYTE	lpbData,
 	DWORD	cbData
 ) {
-	dprintf_info(reg,"RegSetValueEx16(%x,%s,%ld,%ld,%p,%ld)\n",
+	TRACE(reg,"(%x,%s,%ld,%ld,%p,%ld)\n",
 		hkey,lpszValueName,dwReserved,dwType,lpbData,cbData
 	);
 	return RegSetValueEx32A(hkey,lpszValueName,dwReserved,dwType,lpbData,cbData);
@@ -2263,7 +2259,7 @@
 	HKEY	xhkey;
 	DWORD	ret;
 
-	dprintf_info(reg,"RegSetValue32W(%x,%s,%ld,%s,%ld)\n",
+	TRACE(reg,"(%x,%s,%ld,%s,%ld)\n",
 		hkey,W2C(lpszSubKey,0),dwType,W2C(lpszData,0),cbData
 	);
 	if (lpszSubKey && *lpszSubKey) {
@@ -2277,7 +2273,7 @@
 		dwType=REG_SZ;
 	}
 	if (cbData!=2*lstrlen32W(lpszData)+2) {
-		dprintf_info(reg,"RegSetValueX called with len=%ld != strlen(%s)+1=%d!\n",
+		TRACE(reg,"RegSetValueX called with len=%ld != strlen(%s)+1=%d!\n",
 			cbData,W2C(lpszData,0),2*lstrlen32W(lpszData)+2
 		);
 		cbData=2*lstrlen32W(lpszData)+2;
@@ -2299,7 +2295,7 @@
 	DWORD	ret;
 	HKEY	xhkey;
 
-	dprintf_info(reg,"RegSetValue32A(%x,%s,%ld,%s,%ld)\n",
+	TRACE(reg,"(%x,%s,%ld,%s,%ld)\n",
 		hkey,lpszSubKey,dwType,lpszData,cbData
 	);
 	if (lpszSubKey && *lpszSubKey) {
@@ -2310,7 +2306,7 @@
 		xhkey=hkey;
 
 	if (dwType!=REG_SZ) {
-		dprintf_info(reg,"RegSetValueA called with dwType=%ld!\n",dwType);
+		TRACE(reg,"RegSetValueA called with dwType=%ld!\n",dwType);
 		dwType=REG_SZ;
 	}
 	if (cbData!=strlen(lpszData)+1)
@@ -2330,7 +2326,7 @@
 	DWORD	cbData
 ) {
 	DWORD	ret;
-	dprintf_info(reg,"RegSetValue16(%x,%s,%ld,%s,%ld)\n",
+	TRACE(reg,"(%x,%s,%ld,%s,%ld)\n",
 		hkey,lpszSubKey,dwType,lpszData,cbData
 	);
 	ret=RegSetValue32A(hkey,lpszSubKey,dwType,lpszData,cbData);
@@ -2358,7 +2354,7 @@
 ) {
 	LPKEYSTRUCT	lpkey,lpxkey;
 
-	dprintf_info(reg,"RegEnumKeyEx32W(%x,%ld,%p,%ld,%p,%p,%p,%p)\n",
+	TRACE(reg,"(%x,%ld,%p,%ld,%p,%p,%p,%p)\n",
 		hkey,iSubkey,lpszName,*lpcchName,lpdwReserved,lpszClass,lpcchClass,ft
 	);
 	lpkey=lookup_hkey(hkey);
@@ -2378,7 +2374,7 @@
 	memcpy(lpszName,lpxkey->keyname,lstrlen32W(lpxkey->keyname)*2+2);
 	if (lpszClass) {
 		/* what should we write into it? */
-		*lpszClass		= 0;
+		*lpszClass	= 0;
 		*lpcchClass	= 2;
 	}
 	return ERROR_SUCCESS;
@@ -2394,7 +2390,7 @@
 ) {
 	FILETIME	ft;
 
-	dprintf_info(reg,"RegEnumKey32W(%x,%ld,%p,%ld)\n",
+	TRACE(reg,"(%x,%ld,%p,%ld)\n",
 		hkey,iSubkey,lpszName,lpcchName
 	);
 	return RegEnumKeyEx32W(hkey,iSubkey,lpszName,&lpcchName,NULL,NULL,NULL,&ft);
@@ -2414,7 +2410,7 @@
 	LPWSTR	lpszNameW,lpszClassW;
 
 
-	dprintf_info(reg,"RegEnumKeyEx32A(%x,%ld,%p,%ld,%p,%p,%p,%p)\n",
+	TRACE(reg,"(%x,%ld,%p,%ld,%p,%p,%p,%p)\n",
 		hkey,iSubkey,lpszName,*lpcchName,lpdwReserved,lpszClass,lpcchClass,ft
 	);
 	if (lpszName) {
@@ -2465,7 +2461,7 @@
 ) {
 	FILETIME	ft;
 
-	dprintf_info(reg,"RegEnumKey32A(%x,%ld,%p,%ld)\n",
+	TRACE(reg,"(%x,%ld,%p,%ld)\n",
 		hkey,iSubkey,lpszName,lpcchName
 	);
 	return	RegEnumKeyEx32A(
@@ -2487,7 +2483,7 @@
 	LPSTR	lpszName,
 	DWORD	lpcchName
 ) {
-	dprintf_info(reg,"RegEnumKey16(%x,%ld,%p,%ld)\n",
+	TRACE(reg,"(%x,%ld,%p,%ld)\n",
 		hkey,iSubkey,lpszName,lpcchName
 	);
 	return RegEnumKey32A(hkey,iSubkey,lpszName,lpcchName);
@@ -2514,7 +2510,7 @@
 	LPKEYSTRUCT	lpkey;
 	LPKEYVALUE	val;
 
-	dprintf_info(reg,"RegEnumValue32W(%x,%ld,%p,%p,%p,%p,%p,%p)\n",
+	TRACE(reg,"(%x,%ld,%p,%p,%p,%p,%p,%p)\n",
 		hkey,iValue,lpszValue,lpcchValue,lpdReserved,lpdwType,lpbData,lpcbData
 	);
 	lpkey = lookup_hkey(hkey);
@@ -2561,7 +2557,7 @@
 	LPBYTE	lpbDataW;
 	DWORD	ret,lpcbDataW;
 
-	dprintf_info(reg,"RegEnumValue32A(%x,%ld,%p,%p,%p,%p,%p,%p)\n",
+	TRACE(reg,"(%x,%ld,%p,%p,%p,%p,%p,%p)\n",
 		hkey,iValue,lpszValue,lpcchValue,lpdReserved,lpdwType,lpbData,lpcbData
 	);
 
@@ -2614,7 +2610,7 @@
 	LPBYTE	lpbData,
 	LPDWORD	lpcbData
 ) {
-	dprintf_info(reg,"RegEnumValue(%x,%ld,%p,%p,%p,%p,%p,%p)\n",
+	TRACE(reg,"(%x,%ld,%p,%p,%p,%p,%p,%p)\n",
 		hkey,iValue,lpszValue,lpcchValue,lpdReserved,lpdwType,lpbData,lpcbData
 	);
 	return RegEnumValue32A(
@@ -2634,7 +2630,7 @@
  */
 /* RegCloseKey			[SHELL.3] [KERNEL.220] [ADVAPI32.126] */
 DWORD WINAPI RegCloseKey(HKEY hkey) {
-	dprintf_info(reg,"RegCloseKey(%x)\n",hkey);
+	TRACE(reg,"(%x)\n",hkey);
 	remove_handle(hkey);
 	return ERROR_SUCCESS;
 }
@@ -2650,17 +2646,17 @@
 	LPWSTR		*wps;
 	int		wpc,i;
 
-	dprintf_info(reg,"RegDeleteKey32W(%x,%s)\n",
+	TRACE(reg,"(%x,%s)\n",
 		hkey,W2C(lpszSubKey,0)
 	);
 	lpNextKey	= lookup_hkey(hkey);
 	if (!lpNextKey) {
-		dprintf_info(reg, "  Badkey[1].\n");
+		TRACE(reg, "  Badkey[1].\n");
 		return SHELL_ERROR_BADKEY;
 	}
 	/* we need to know the previous key in the hier. */
 	if (!lpszSubKey || !*lpszSubKey) {
-		dprintf_info(reg, "  Badkey[2].\n");
+		TRACE(reg, "  Badkey[2].\n");
 		return SHELL_ERROR_BADKEY;
 	}
 	split_keypath(lpszSubKey,&wps,&wpc);
@@ -2669,7 +2665,7 @@
 	while (i<wpc-1) {
 		lpxkey=lpNextKey->nextsub;
 		while (lpxkey) {
-			dprintf_info(reg, "  Scanning [%s]\n",
+			TRACE(reg, "  Scanning [%s]\n",
 				     W2C (lpxkey->keyname, 0));
 			if (!lstrcmpi32W(wps[i],lpxkey->keyname))
 				break;
@@ -2677,7 +2673,7 @@
 		}
 		if (!lpxkey) {
 			FREE_KEY_PATH;
-			dprintf_info(reg, "  Not found.\n");
+			TRACE(reg, "  Not found.\n");
 			/* not found is success */
 			return SHELL_ERROR_SUCCESS;
 		}
@@ -2687,7 +2683,7 @@
 	lpxkey	= lpNextKey->nextsub;
 	lplpPrevKey = &(lpNextKey->nextsub);
 	while (lpxkey) {
-		dprintf_info(reg, "  Scanning [%s]\n",
+		TRACE(reg, "  Scanning [%s]\n",
 			     W2C (lpxkey->keyname, 0));
 		if (!lstrcmpi32W(wps[i],lpxkey->keyname))
 			break;
@@ -2696,12 +2692,12 @@
 	}
 	if (!lpxkey) {
 		FREE_KEY_PATH;
-		dprintf_warn(reg , "  Not found.\n");
+		WARN(reg , "  Not found.\n");
 		return SHELL_ERROR_BADKEY;
 	}
 	if (lpxkey->nextsub) {
 		FREE_KEY_PATH;
-		dprintf_warn(reg , "  Not empty.\n");
+		WARN(reg , "  Not empty.\n");
 		return SHELL_ERROR_CANTWRITE;
 	}
 	*lplpPrevKey	= lpxkey->next;
@@ -2712,7 +2708,7 @@
 		free(lpxkey->values);
 	free(lpxkey);
 	FREE_KEY_PATH;
-	dprintf_info(reg, "  Done.\n");
+	TRACE(reg, "  Done.\n");
 	return	SHELL_ERROR_SUCCESS;
 }
 
@@ -2721,7 +2717,7 @@
 	LPWSTR	lpszSubKeyW;
 	DWORD	ret;
 
-	dprintf_info(reg,"RegDeleteKey32A(%x,%s)\n",
+	TRACE(reg,"(%x,%s)\n",
 		hkey,lpszSubKey
 	);
 	lpszSubKeyW=HEAP_strdupAtoW(GetProcessHeap(),0,lpszSubKey);
@@ -2732,7 +2728,7 @@
 
 /* RegDeleteKey			[SHELL.4] [KERNEL.219] */
 DWORD WINAPI RegDeleteKey16(HKEY hkey,LPCSTR lpszSubKey) {
-	dprintf_info(reg,"RegDeleteKey16(%x,%s)\n",
+	TRACE(reg,"(%x,%s)\n",
 		hkey,lpszSubKey
 	);
 	return RegDeleteKey32A(hkey,lpszSubKey);
@@ -2751,7 +2747,7 @@
 	LPKEYSTRUCT	lpkey;
 	LPKEYVALUE	val;
 
-	dprintf_info(reg,"RegDeleteValue32W(%x,%s)\n",
+	TRACE(reg,"(%x,%s)\n",
 		hkey,W2C(lpszValue,0)
 	);
 	lpkey=lookup_hkey(hkey);
@@ -2792,7 +2788,7 @@
 	LPWSTR	lpszValueW;
 	DWORD	ret;
 
-	dprintf_info(reg, "RegDeleteValue32A(%x,%s)\n", hkey,lpszValue );
+	TRACE(reg, "(%x,%s)\n", hkey,lpszValue );
         lpszValueW=HEAP_strdupAtoW(GetProcessHeap(),0,lpszValue);
 	ret=RegDeleteValue32W(hkey,lpszValueW);
         HeapFree(GetProcessHeap(),0,lpszValueW);
@@ -2802,14 +2798,14 @@
 /* RegDeleteValue		[KERNEL.222] */
 DWORD WINAPI RegDeleteValue16(HKEY hkey,LPSTR lpszValue)
 {
-	dprintf_info(reg,"RegDeleteValue16(%x,%s)\n", hkey,lpszValue );
+	TRACE(reg,"(%x,%s)\n", hkey,lpszValue );
 	return RegDeleteValue32A(hkey,lpszValue);
 }
 
 /* RegFlushKey			[ADVAPI32.143] [KERNEL.227] */
 DWORD WINAPI RegFlushKey(HKEY hkey)
 {
-	dprintf_fixme(reg, "RegFlushKey(%x), STUB.\n", hkey);
+	FIXME(reg, "(%x), STUB.\n", hkey);
 	return SHELL_ERROR_SUCCESS;
 }
 
@@ -2834,7 +2830,7 @@
 	int		nrofkeys,maxsubkey,maxclass,maxvalues,maxvname,maxvdata;
 	int		i;
 
-	dprintf_info(reg,"RegQueryInfoKey32W(%x,......)\n",hkey);
+	TRACE(reg,"(%x,......)\n",hkey);
 	lpkey=lookup_hkey(hkey);
 	if (!lpkey)
 		return SHELL_ERROR_BADKEY;
@@ -2909,7 +2905,7 @@
 	LPWSTR		lpszClassW;
 	DWORD		ret;
 
-	dprintf_info(reg,"RegQueryInfoKey32A(%x,......)\n",hkey);
+	TRACE(reg,"(%x,......)\n",hkey);
 	if (lpszClass) {
 		*lpcchClass*= 2;
 		lpszClassW  = (LPWSTR)xmalloc(*lpcchClass);
diff --git a/misc/shell.c b/misc/shell.c
index 69f12aa..a7ae4c0 100644
--- a/misc/shell.c
+++ b/misc/shell.c
@@ -78,11 +78,13 @@
     "Jochen Karrer",
     "Andreas Kirschbaum",
     "Albrecht Kleine",
+    "Eric Kohl",
     "Jon Konrath",
     "Alex Korobka",
     "Greg Kreider",
     "Anand Kumria",
     "Scott A. Laird",
+    "David Lee Lambert",
     "Andrew Lewycky",
     "Martin von Loewis",
     "Michiel van Loon",
@@ -155,6 +157,7 @@
     "Nikita V. Youshchenko",
     "Mikolaj Zalewski",
     "John Zero",
+    "Luiz Otavio L. Zorzella",
     NULL
 };
 
@@ -222,7 +225,7 @@
     LPSTR lpCurrent;
     WORD  i;
     
-    dprintf_info(reg,"DragQueryFile(%04x, %i, %p, %u)\n",
+    TRACE(reg,"(%04x, %i, %p, %u)\n",
 		hDrop,wFile,lpszFile,wLength);
     
     lpDropFileStruct = (LPDROPFILESTRUCT) GlobalLock16(hDrop); 
@@ -296,7 +299,7 @@
     int i;                  /* random counter */
     char xlpFile[256];      /* result of SearchPath */
 
-    dprintf_info(exec, "SHELL_FindExecutable: %s\n",
+    TRACE(exec, "%s\n",
                  (lpFile != NULL?lpFile:"-") );
     lpResult[0]='\0'; /* Start off with an empty return string */
 
@@ -322,7 +325,7 @@
     /* Make local copy & lowercase it for reg & 'programs=' lookup */
     lstrcpyn32A( tmpext, extension, 5 );
     CharLower32A( tmpext );
-    dprintf_info(exec, "SHELL_FindExecutable: %s file\n", tmpext);
+    TRACE(exec, "%s file\n", tmpext);
     
     /* Three places to check: */
     /* 1. win.ini, [windows], programs (NB no leading '.') */
@@ -348,7 +351,7 @@
 				strcpy(lpResult, xlpFile);
 				/* Need to perhaps check that the file has a path
 				 * attached */
-				dprintf_info(exec, "SHELL_FindExecutable: found %s\n",
+				TRACE(exec, "found %s\n",
 							 lpResult);
                                 return 33;
 
@@ -366,7 +369,7 @@
                          &filetypelen ) == SHELL_ERROR_SUCCESS )
     {
 	filetype[filetypelen]='\0';
-	dprintf_info(exec, "SHELL_FindExecutable: File type: %s\n",
+	TRACE(exec, "File type: %s\n",
 		     filetype);
 
 	/* Looking for ...buffer\shell\lpOperation\command */
@@ -420,7 +423,7 @@
 	  }
 	}
 
-    dprintf_info(exec, "SHELL_FindExecutable: returning %s\n", lpResult);
+    TRACE(exec, "returning %s\n", lpResult);
     return retval;
 }
 
@@ -435,7 +438,7 @@
     char old_dir[1024];
     char cmd[256];
 
-    dprintf_info(exec, "ShellExecute(%04x,'%s','%s','%s','%s',%x)\n",
+    TRACE(exec, "(%04x,'%s','%s','%s','%s',%x)\n",
 		hWnd, lpOperation ? lpOperation:"<null>", lpFile ? lpFile:"<null>",
 		lpParameters ? lpParameters : "<null>", 
 		lpDirectory ? lpDirectory : "<null>", iShowCmd);
@@ -460,7 +463,7 @@
             strcat(cmd,lpParameters);
         }
 
-        dprintf_info(exec,"ShellExecute:starting %s\n",cmd);
+        TRACE(exec,"starting %s\n",cmd);
         retval = WinExec32( cmd, iShowCmd );
     }
     if (lpDirectory) SetCurrentDirectory32A( old_dir );
@@ -498,7 +501,7 @@
     HINSTANCE32 retval=31;    /* default - 'No association was found' */
     char old_dir[1024];
 
-    dprintf_info(exec, "FindExecutable: File %s, Dir %s\n", 
+    TRACE(exec, "File %s, Dir %s\n", 
 		 (lpFile != NULL?lpFile:"-"), 
 		 (lpDirectory != NULL?lpDirectory:"-"));
 
@@ -519,7 +522,7 @@
 
     retval = SHELL_FindExecutable( lpFile, "open", lpResult );
 
-    dprintf_info(exec, "FindExecutable: returning %s\n", lpResult);
+    TRACE(exec, "returning %s\n", lpResult);
     if (lpDirectory) SetCurrentDirectory32A( old_dir );
     return retval;
 }
@@ -931,7 +934,7 @@
   HFILE32 	hFile = OpenFile32( lpszExeFileName, &ofs, OF_READ );
   UINT16	iconDirCount = 0,iconCount = 0;
   
-  dprintf_info(reg,"InternalExtractIcon(%04x,file %s,start %d,extract %d\n", 
+  TRACE(reg,"(%04x,file %s,start %d,extract %d\n", 
 		       hInstance, lpszExeFileName, nIconIndex, n);
 
   if( hFile == HFILE_ERROR32 || !n ) return 0;
@@ -966,13 +969,13 @@
 	  {
 	     iconDirCount = pTInfo->count;
 	     pIconDir = ((NE_NAMEINFO*)(pTInfo + 1));
-	     dprintf_info(reg,"\tfound directory - %i icon families\n", iconDirCount);
+	     TRACE(reg,"\tfound directory - %i icon families\n", iconDirCount);
 	  }
 	if( pTInfo->type_id == NE_RSCTYPE_ICON ) 
 	  { 
 	     iconCount = pTInfo->count;
 	     pIconStorage = ((NE_NAMEINFO*)(pTInfo + 1));
-	     dprintf_info(reg,"\ttotal icons - %i\n", iconCount);
+	     TRACE(reg,"\ttotal icons - %i\n", iconCount);
 	  }
   	pTInfo = (NE_TYPEINFO *)((char*)(pTInfo+1)+pTInfo->count*sizeof(NE_NAMEINFO));
     }
@@ -1036,13 +1039,13 @@
 	
 	fmapping = CreateFileMapping32A(hFile,NULL,PAGE_READONLY|SEC_COMMIT,0,0,NULL);
 	if (fmapping == 0) { /* FIXME, INVALID_HANDLE_VALUE? */
-		fprintf(stderr,"InternalExtractIcon:failed to create filemap.\n");
+		WARN(reg,"failed to create filemap.\n");
 		_lclose32( hFile);
 		return 0;
 	}
 	peimage = MapViewOfFile(fmapping,FILE_MAP_READ,0,0,0);
 	if (!peimage) {
-		fprintf(stderr,"InternalExtractIcon:failed to mmap filemap.\n");
+		WARN(reg,"failed to mmap filemap.\n");
 		CloseHandle(fmapping);
 		_lclose32( hFile);
 		return 0;
@@ -1066,7 +1069,7 @@
 	}
 
 	if (!rootresdir) {
-		fprintf(stderr,"InternalExtractIcon: haven't found section for resource directory.\n");
+		WARN(reg,"haven't found section for resource directory.\n");
 		UnmapViewOfFile(peimage);
 		CloseHandle(fmapping);
 		_lclose32( hFile);
@@ -1074,7 +1077,7 @@
 	}
 	icongroupresdir = GetResDirEntryW(rootresdir,(LPWSTR)RT_GROUP_ICON,(DWORD)rootresdir,FALSE);
 	if (!icongroupresdir) {
-		fprintf(stderr,"InternalExtractIcon: No Icongroupresourcedirectory!\n");
+		WARN(reg,"No Icongroupresourcedirectory!\n");
 		UnmapViewOfFile(peimage);
 		CloseHandle(fmapping);
 		_lclose32( hFile);
@@ -1091,9 +1094,8 @@
 	}
 
 	if (nIconIndex >= iconDirCount) {
-		fprintf(stderr,"nIconIndex %d is larger than iconDirCount %d\n",
-			nIconIndex,iconDirCount
-		);
+		WARN(reg,"nIconIndex %d is larger than iconDirCount %d\n",
+			    nIconIndex,iconDirCount);
 		UnmapViewOfFile(peimage);
 		CloseHandle(fmapping);
 		_lclose32( hFile);
@@ -1131,7 +1133,7 @@
 			igdata = peimage+(igdataent->OffsetToData-pe_sections[j].VirtualAddress+pe_sections[j].PointerToRawData);
 		}
 		if (!igdata) {
-			fprintf(stderr,"InternalExtractIcon: no matching real address found for icongroup!\n");
+			WARN(reg,"no matching real address for icongroup!\n");
 			UnmapViewOfFile(peimage);
 			CloseHandle(fmapping);
 			_lclose32( hFile);
@@ -1144,7 +1146,7 @@
 	}
 	iconresdir=GetResDirEntryW(rootresdir,(LPWSTR)RT_ICON,(DWORD)rootresdir,FALSE);
 	if (!iconresdir) {
-	    fprintf(stderr,"InternalExtractIcon: No Iconresourcedirectory!\n");
+	    WARN(reg,"No Iconresourcedirectory!\n");
 	    UnmapViewOfFile(peimage);
 	    CloseHandle(fmapping);
 	    _lclose32( hFile);
@@ -1168,7 +1170,7 @@
 		idata = peimage+(idataent->OffsetToData-pe_sections[j].VirtualAddress+pe_sections[j].PointerToRawData);
 	    }
 	    if (!idata) {
-		fprintf(stderr,"InternalExtractIcon: no matching real address found for icondata!\n");
+		WARN(reg,"no matching real address found for icondata!\n");
 		RetPtr[i]=0;
 		continue;
 	    }
@@ -1323,7 +1325,7 @@
 
   CharToOem32A(str,str);
 
-  dprintf_info(reg,"DoEnvSubst: accept %s\n", str);
+  TRACE(reg,"accept %s\n", str);
 
   while( *lpstr && lpbstr - lpBuffer < length )
    {
@@ -1343,8 +1345,7 @@
 
 		   if( l > length - (lpbstr - lpBuffer) - 1 )
 		     {
-		       fprintf(stdnimp,"File %s, line %i: Env subst aborted - string too short\n", 
-					__FILE__, __LINE__);
+		       WARN(reg,"Env subst aborted - string too short\n");
 		      *lpend = '%';
 		       break;
 		     }
@@ -1372,7 +1373,7 @@
   else
       length = 0;
 
-  dprintf_info(reg,"    return %s\n", str);
+  TRACE(reg,"    return %s\n", str);
 
   OemToChar32A(str,str);
   HeapFree( GetProcessHeap(), 0, lpBuffer);
@@ -1389,7 +1390,7 @@
  */
 LRESULT WINAPI ShellHookProc(INT16 code, WPARAM16 wParam, LPARAM lParam)
 {
-    dprintf_info(reg,"ShellHookProc: %i, %04x, %08x\n", code, wParam, 
+    TRACE(reg,"%i, %04x, %08x\n", code, wParam, 
 						      (unsigned)lParam );
     if( SHELL_hHook && SHELL_hWnd )
     {
@@ -1405,10 +1406,10 @@
     return CallNextHookEx16( WH_SHELL, code, wParam, lParam );
 }
 
-LRESULT WINAPI FUNC004(INT16 code, WPARAM16 wParam, LPARAM lParam)
+LRESULT WINAPI FUNC004(INT16 code, WPARAM16 wParam, /*LPARAM*/WORD lParam)
 {
-	fprintf(stderr,"FUNC004(%d,%d,%ld),STUB!\n",code,wParam,lParam);
-	return ShellHookProc(code,wParam,lParam);
+	FIXME(reg,"(%d,%d,%d),STUB!\n",code,wParam,lParam);
+	return ShellHookProc(code,wParam,(DWORD)lParam);
 }
 
 /*************************************************************************
@@ -1416,7 +1417,7 @@
  */
 BOOL32 WINAPI RegisterShellHook(HWND16 hWnd, UINT16 uAction)
 {
-    dprintf_info(reg,"RegisterShellHook: %04x [%u]\n", hWnd, uAction );
+    TRACE(reg,"%04x [%u]\n", hWnd, uAction );
 
     switch( uAction )
     {
@@ -1434,7 +1435,7 @@
 		    uMsgWndDestroyed = RegisterWindowMessage32A( lpstrMsgWndDestroyed );
 		    uMsgShellActivate = RegisterWindowMessage32A( lpstrMsgShellActivate );
 		} 
-		else fprintf( stderr, "\tunable to install ShellHookProc()!\n");
+		else WARN(reg, "unable to install ShellHookProc()!\n");
 	     }
 
 	     if( SHELL_hHook ) return ((SHELL_hWnd = hWnd) != 0);
@@ -1442,7 +1443,7 @@
 
 	default:
 
-	     fprintf( stderr, "RegisterShellHook: unknown code %i\n", uAction );
+	     WARN(reg, "unknown code %i\n", uAction );
 
 	     /* just in case */
 
@@ -1547,11 +1548,9 @@
 
 void WINAPI Control_RunDLL (HWND32 hwnd, LPCVOID code, LPCSTR cmd, DWORD arg4)
 {
-  dprintf_info(exec, "Control_RunDLL (%08x, %p, \"%s\", %08lx)\n",
-		hwnd,
-		code ? code : "(null)",
-		cmd ? cmd : "(null)",
-		arg4);
+  TRACE(exec, "(%08x, %p, \"%s\", %08lx)\n",
+		hwnd, code ? code : "(null)",
+		cmd ? cmd : "(null)", arg4);
 }
 
 /*************************************************************************
diff --git a/misc/shellord.c b/misc/shellord.c
index 9eda433..edaa2d7 100644
--- a/misc/shellord.c
+++ b/misc/shellord.c
@@ -435,26 +435,24 @@
 ) {
 	DWORD	WINAPI	(*dllgetclassob)(REFCLSID,REFIID,LPVOID);
 	DWORD		hres;
-/*
 	LPCLASSFACTORY	classfac;
- */
 
 	dllgetclassob = (DWORD(*)(REFCLSID,REFIID,LPVOID))_find_moduleproc(dllname,NULL,"DllGetClassObject");
 	if (!dllgetclassob)
 		return 0x80070000|GetLastError();
 
 /* FIXME */
+/*
 	hres = (*dllgetclassob)(clsid,(REFIID)&IID_IClassFactory,inst);
 	if (hres<0)
 		return hres;
 
-/*
+ */
 	hres = (*dllgetclassob)(clsid,(REFIID)&IID_IClassFactory,&classfac);
 	if (hres<0)
 		return hres;
 	classfac->lpvtbl->fnCreateInstance(classfac,unknownouter,refiid,inst);
 	classfac->lpvtbl->fnRelease(classfac);
- */
 	return 0;
 }
 /*************************************************************************
diff --git a/misc/spy.c b/misc/spy.c
index 9a6b3fb..2d5357c 100644
--- a/misc/spy.c
+++ b/misc/spy.c
@@ -642,21 +642,21 @@
 {
     LPCSTR pname;
 
-    if (!debugging_info(message) || SPY_EXCLUDE(msg)) return;
+    if (!TRACE_ON(message) || SPY_EXCLUDE(msg)) return;
 
     /* each SPY_SENDMESSAGE must be complemented by call to SPY_ExitMessage */
     switch(iFlag)
     {
     case SPY_DISPATCHMESSAGE16:
 	pname = SPY_GetWndName(hWnd);
-        dprintf_info(message,"%*s(%04x) %-16s message [%04x] %s dispatched  wp=%04x lp=%08lx\n",
+        TRACE(message,"%*s(%04x) %-16s message [%04x] %s dispatched  wp=%04x lp=%08lx\n",
                         SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
                         wParam, lParam);
         break;
 
     case SPY_DISPATCHMESSAGE32:
 	pname = SPY_GetWndName(hWnd);
-        dprintf_info(message,"%*s(%08x) %-16s message [%04x] %s dispatched  wp=%08x lp=%08lx\n",
+        TRACE(message,"%*s(%08x) %-16s message [%04x] %s dispatched  wp=%08x lp=%08lx\n",
                         SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
                         wParam, lParam);
         break;
@@ -674,28 +674,26 @@
 	    pname = SPY_GetWndName(hWnd);
 
             if (iFlag == SPY_SENDMESSAGE16)
-                dprintf_info(message,
-				"%*s(%04x) %-16s message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
-                                SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ), 
-				taskName, wParam, lParam );
+                TRACE(message, "%*s(%04x) %-16s message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
+			     SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ), 
+			     taskName, wParam, lParam );
             else
-                dprintf_info(message,
-				"%*s(%08x) %-16s message [%04x] %s sent from %s wp=%08x lp=%08lx\n",
-                                SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ), 
-				taskName, wParam, lParam );
+                TRACE(message, "%*s(%08x) %-16s message [%04x] %s sent from %s wp=%08x lp=%08lx\n",
+			     SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ), 
+			     taskName, wParam, lParam );
         }
         break;   
 
     case SPY_DEFWNDPROC16:
 	if( SPY_ExcludeDWP ) return;
-        dprintf_info(message, "%*s(%04x)  DefWindowProc16: %s [%04x]  wp=%04x lp=%08lx\n",
+        TRACE(message, "%*s(%04x)  DefWindowProc16: %s [%04x]  wp=%04x lp=%08lx\n",
                         SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
                         msg, wParam, lParam );
         break;
 
     case SPY_DEFWNDPROC32:
 	if( SPY_ExcludeDWP ) return;
-        dprintf_info(message, "%*s(%08x)  DefWindowProc32: %s [%04x]  wp=%08x lp=%08lx\n",
+        TRACE(message, "%*s(%08x)  DefWindowProc32: %s [%04x]  wp=%08x lp=%08lx\n",
                         SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
                         msg, wParam, lParam );
         break;
@@ -711,7 +709,7 @@
 {
     LPCSTR pname;
 
-    if (!debugging_info(message) || SPY_EXCLUDE(msg) ||
+    if (!TRACE_ON(message) || SPY_EXCLUDE(msg) ||
 	(SPY_ExcludeDWP && (iFlag == SPY_RESULT_DEFWND16 || iFlag == SPY_RESULT_DEFWND32)) )
 	return;
 
@@ -720,39 +718,39 @@
     switch(iFlag)
     {
     case SPY_RESULT_DEFWND16:
-	dprintf_info(message,"%*s(%04x)  DefWindowProc16: %s [%04x] returned %08lx\n",
+	TRACE(message,"%*s(%04x)  DefWindowProc16: %s [%04x] returned %08lx\n",
 			SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
 	break;
 
     case SPY_RESULT_DEFWND32:
-	dprintf_info(message,"%*s(%08x)  DefWindowProc32: %s [%04x] returned %08lx\n",
+	TRACE(message,"%*s(%08x)  DefWindowProc32: %s [%04x] returned %08lx\n",
 			SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
 	break;
 
     case SPY_RESULT_OK16:
 	pname = SPY_GetWndName(hWnd);
-        dprintf_info(message,"%*s(%04x) %-16s message [%04x] %s returned %08lx\n",
+        TRACE(message,"%*s(%04x) %-16s message [%04x] %s returned %08lx\n",
                         SPY_IndentLevel, "", hWnd, pname, msg,
                         SPY_GetMsgName( msg ), lReturn );
         break;
 
     case SPY_RESULT_OK32:
 	pname = SPY_GetWndName(hWnd);
-        dprintf_info(message,"%*s(%08x) %-16s message [%04x] %s returned %08lx\n",
+        TRACE(message,"%*s(%08x) %-16s message [%04x] %s returned %08lx\n",
                         SPY_IndentLevel, "", hWnd, pname, msg,
                         SPY_GetMsgName( msg ), lReturn );
         break; 
 
     case SPY_RESULT_INVALIDHWND16:
 	pname = SPY_GetWndName(hWnd);
-        dprintf_warn(message, "%*s(%04x) %-16s message [%04x] %s HAS INVALID HWND\n",
+        WARN(message, "%*s(%04x) %-16s message [%04x] %s HAS INVALID HWND\n",
                         SPY_IndentLevel, "", hWnd, pname, msg,
                         SPY_GetMsgName( msg ) );
         break;
 
     case SPY_RESULT_INVALIDHWND32:
 	pname = SPY_GetWndName(hWnd);
-        dprintf_warn(message, "%*s(%08x) %-16s message [%04x] %s HAS INVALID HWND\n",
+        WARN(message, "%*s(%08x) %-16s message [%04x] %s HAS INVALID HWND\n",
                         SPY_IndentLevel, "", hWnd, pname, msg,
                         SPY_GetMsgName( msg ) );
         break;
@@ -768,12 +766,12 @@
     int i;
     char buffer[1024];
 
-    if (!debugging_info(message)) return TRUE;
+    if (!TRACE_ON(message)) return TRUE;
 
     PROFILE_GetWineIniString( "Spy", "Include", "", buffer, sizeof(buffer) );
     if (buffer[0] && strcmp( buffer, "INCLUDEALL" ))
     {
-        dprintf_info(message, "SpyInit: Include=%s\n", buffer );
+        TRACE(message, "Include=%s\n", buffer );
         for (i = 0; i <= SPY_MAX_MSGNUM; i++)
             SPY_Exclude[i] = (MessageTypeNames[i] && !strstr(buffer,MessageTypeNames[i]));
     }
@@ -781,7 +779,7 @@
     PROFILE_GetWineIniString( "Spy", "Exclude", "", buffer, sizeof(buffer) );
     if (buffer[0])
     {
-        dprintf_info(message, "SpyInit: Exclude=%s\n", buffer );
+        TRACE(message, "Exclude=%s\n", buffer );
         if (!strcmp( buffer, "EXCLUDEALL" ))
             for (i = 0; i <= SPY_MAX_MSGNUM; i++) SPY_Exclude[i] = TRUE;
         else
diff --git a/misc/stress.c b/misc/stress.c
index 5714552..6320dfa 100644
--- a/misc/stress.c
+++ b/misc/stress.c
@@ -7,7 +7,7 @@
 
 int WINAPI AllocDiskSpace(long lLeft, UINT16 uDrive)
 {
-	dprintf_fixme(stress, "stress.dll: AllocDiskSpace(%d, %ld) - stub\n", 
+	FIXME(stress, "(%d, %ld) - stub\n", 
 		       uDrive, lLeft);
 
 	return 1;
@@ -15,7 +15,7 @@
 
 int WINAPI AllocFileHandles(int Left)
 {
-	dprintf_info(stress, "stress.dll: AllocFileHandles(%d) - stub\n", Left);
+	TRACE(stress, "(%d) - stub\n", Left);
 
 	if (Left < 0)
 		return -1;
@@ -25,48 +25,48 @@
 
 BOOL16 WINAPI AllocGDIMem(UINT16 uLeft)
 {
-	dprintf_info(stress, "stress.dll: AllocGDIMem(%d) - stub\n", uLeft);
+	TRACE(stress, "(%d) - stub\n", uLeft);
 
 	return 1;
 }
 
 BOOL16 WINAPI AllocMem(DWORD dwLeft)
 {
-	dprintf_fixme(stress, "stress.dll: AllocMem(%ld) - stub\n", dwLeft);
+	FIXME(stress, "(%ld) - stub\n", dwLeft);
 
 	return 1;
 }
 
 BOOL16 WINAPI AllocUserMem(UINT16 uContig)
 {
-	dprintf_info(stress, "stress.dll: AllocUserMem %d\n", uContig);
+	TRACE(stress, "AllocUserMem %d\n", uContig);
 
 	return 1;
 }
 
 void WINAPI FreeAllMem(void)
 {
-	dprintf_info(stress, "stress.dll: FreeAllMem\n");
+	TRACE(stress, "FreeAllMem\n");
 }
 
 void WINAPI FreeAllGDIMem(void)
 {
-	dprintf_info(stress, "stress.dll: FreeAllGDIMem\n");
+	TRACE(stress, "FreeAllGDIMem\n");
 }
 
 void WINAPI FreeAllUserMem(void)
 {
-	dprintf_info(stress, "stress.dll: FreeAllUserMem\n");
+	TRACE(stress, "FreeAllUserMem\n");
 }
 
 void WINAPI GetFreeAllUserMem(void)
 {
-       dprintf_info(stress, "stress.dll: GetFreeAllUserMem\n");
+       TRACE(stress, "GetFreeAllUserMem\n");
 }
 
 int WINAPI GetFreeFileHandles(void)
 {
-	dprintf_info(stress, "stress.dll: GetFreeFileHandles\n");
+	TRACE(stress, "GetFreeFileHandles\n");
 
 #ifndef OPEN_MAX
 	return _POSIX_OPEN_MAX;
@@ -77,10 +77,10 @@
 
 void WINAPI UnAllocDiskSpace(UINT16 drive)
 {
-	dprintf_info(stress, "stress.dll: UnAllocDiskSpace %d\n", drive);
+	TRACE(stress, "UnAllocDiskSpace %d\n", drive);
 }
 
 void WINAPI UnAllocFileHandles(void)
 {
-	dprintf_info(stress, "stress.dll: GetFreeAllUserMem\n");
+	TRACE(stress, "GetFreeAllUserMem\n");
 }
diff --git a/misc/toolhelp.c b/misc/toolhelp.c
index 9ec8c6f..a6520d8 100644
--- a/misc/toolhelp.c
+++ b/misc/toolhelp.c
@@ -35,7 +35,7 @@
 {
     int	i;
 
-    dprintf_info(toolhelp, "NotifyRegister(%x,%lx,%x) called.\n",
+    TRACE(toolhelp, "(%x,%lx,%x) called.\n",
                       htask, (DWORD)lpfnCallback, wFlags );
     if (!htask) htask = GetCurrentTask();
     for (i=0;i<nrofnotifys;i++)
@@ -61,7 +61,7 @@
 {
     int	i;
     
-    dprintf_info(toolhelp, "NotifyUnregister(%x) called.\n", htask );
+    TRACE(toolhelp, "(%x) called.\n", htask );
     if (!htask) htask = GetCurrentTask();
     for (i=nrofnotifys;i--;)
         if (notifys[i].htask==htask)
diff --git a/misc/tweak.c b/misc/tweak.c
index e39f95a..603f9df 100644
--- a/misc/tweak.c
+++ b/misc/tweak.c
@@ -210,8 +210,8 @@
 	    PROFILE_GetWineIniInt("Tweak.Colors", "Pen0095.Grn", 0x00),
 	    PROFILE_GetWineIniInt("Tweak.Colors", "Pen0095.Blu", 0x00)));
 
-    dprintf_info(tweak, "TWEAK_VarInit: Using %s look and feel.\n",
-		  TWEAK_Win95Look ? "Win95" : "Win3.1");
+    TRACE(tweak, "Using %s look and feel.\n",
+		 TWEAK_Win95Look ? "Win95" : "Win3.1");
     return 1;
 }
 
diff --git a/misc/ver.c b/misc/ver.c
index d58df8a..da9f8e5 100644
--- a/misc/ver.c
+++ b/misc/ver.c
@@ -54,7 +54,7 @@
     char const * teststring,
     char const * epilogue )
 {
-    dprintf_info(ver, "%s %p (\"%s\") %s\n", prologue, 
+    TRACE(ver, "%s %p (\"%s\") %s\n", prologue, 
 		(void const *) teststring, 
 		teststring ? teststring : "(null)",
 		epilogue);
@@ -72,7 +72,7 @@
 {
         dbg_decl_str(ver, 1024);
 
-	dprintf_info(ver," structversion=0x%lx.0x%lx, fileversion=0x%lx.0x%lx, productversion=0x%lx.0x%lx, flagmask=0x%lx, flags=%s%s%s%s%s%s\n",
+	TRACE(ver," structversion=0x%lx.0x%lx, fileversion=0x%lx.0x%lx, productversion=0x%lx.0x%lx, flagmask=0x%lx, flags=%s%s%s%s%s%s\n",
 		    (vffi->dwStrucVersion>>16),vffi->dwStrucVersion&0xFFFF,
 		    vffi->dwFileVersionMS,vffi->dwFileVersionLS,
 		    vffi->dwProductVersionMS,vffi->dwProductVersionLS,
@@ -106,7 +106,7 @@
 	case VOS__PM32:dsprintf(ver,"PM32");break;
 	default:dsprintf(ver,"UNKNOWN(0x%lx)",vffi->dwFileOS&0xFFFF);break;
 	}
-	dprintf_info(ver, "(%s)\n", dbg_str(ver));
+	TRACE(ver, "(%s)\n", dbg_str(ver));
 
 	dbg_reset_str(ver);
 	switch (vffi->dwFileType) {
@@ -172,9 +172,9 @@
 	case VFT_VXD:dsprintf(ver,"filetype=VXD");break;
 	case VFT_STATIC_LIB:dsprintf(ver,"filetype=STATIC_LIB");break;
 	}
-	dprintf_info(ver, "%s\n", dbg_str(ver));
+	TRACE(ver, "%s\n", dbg_str(ver));
 
-	dprintf_info(ver, "  filedata=0x%lx.0x%lx\n",
+	TRACE(ver, "  filedata=0x%lx.0x%lx\n",
 		    vffi->dwFileDateMS,vffi->dwFileDateLS);
 }
 
@@ -316,13 +316,13 @@
 	nehdoffset = LZTELL(lzfd);
 	LZREAD(&nehd);
 	if (nehd.resource_tab_offset==nehd.rname_tab_offset) {
-		dprintf_info(ver,"no resources in NE dll\n");
+		TRACE(ver,"no resources in NE dll\n");
 		return 0;
 	}
 	LZSeek32(lzfd,nehd.resource_tab_offset+nehdoffset,SEEK_SET);
 	LZREAD(&shiftcount);
-	dprintf_info(ver,"shiftcount is %d\n",shiftcount);
-	dprintf_info(ver,"reading resource typeinfo dir.\n");
+	TRACE(ver,"shiftcount is %d\n",shiftcount);
+	TRACE(ver,"reading resource typeinfo dir.\n");
 
 	if (!HIWORD(typeid)) typeid = (SEGPTR)(LOWORD(typeid) | 0x8000);
 	if (!HIWORD(resid))  resid  = (SEGPTR)(LOWORD(resid) | 0x8000);
@@ -332,7 +332,7 @@
 		LZREAD(&ti);
 		if (!ti.type_id)
 			return 0;
-		dprintf_info(ver,"    ti.typeid =%04x,count=%d\n",ti.type_id,ti.count);
+		TRACE(ver,"    ti.typeid =%04x,count=%d\n",ti.type_id,ti.count);
 
 		skipflag=0;
 		if (!HIWORD(typeid)) {
@@ -356,7 +356,7 @@
 				str=xmalloc(len);
 				if (len!=LZRead32(lzfd,str,len))
 					return 0;
-				dprintf_info(ver,"read %s to compare it with %s\n",
+				TRACE(ver,"read %s to compare it with %s\n",
 					str,(char*)PTR_SEG_TO_LIN(typeid)
 				);
 				if (lstrcmpi32A(str,(char*)PTR_SEG_TO_LIN(typeid)))
@@ -374,7 +374,7 @@
 			int	len;
 
 			LZREAD(&ni);
-			dprintf_info(ver,"	ni.id=%4x,offset=%d,length=%d\n",
+			TRACE(ver,"	ni.id=%4x,offset=%d,length=%d\n",
 				ni.id,ni.offset,ni.length
 			);
 			skipflag=1;
@@ -397,7 +397,7 @@
 					str=xmalloc(len);
 					if (len!=LZRead32(lzfd,str,len))
 						return 0;
-					dprintf_info(ver,"read %s to compare it with %s\n",
+					TRACE(ver,"read %s to compare it with %s\n",
 						str,(char*)PTR_SEG_TO_LIN(typeid)
 					);
 					if (!lstrcmpi32A(str,(char*)PTR_SEG_TO_LIN(typeid)))
@@ -416,7 +416,7 @@
 				free(rdata);
 				return 0;
 			}
-			dprintf_info(ver,"resource found.\n");
+			TRACE(ver,"resource found.\n");
 			*resdata= (BYTE*)rdata;
 			*reslen	= len;
 			return 1;
@@ -445,7 +445,7 @@
 	pehdoffset = LZTELL(lzfd);
 	LZREAD(&pehd);
 	resdir = pehd.OptionalHeader.DataDirectory[IMAGE_FILE_RESOURCE_DIRECTORY];
-	dprintf_info(ver,"find_pe_resource(.,%p,%p,....)\n",typeid,resid);
+	TRACE(ver,"(.,%p,%p,....)\n",typeid,resid);
 	if (!resdir.Size) {
 		fprintf(stderr,"misc/ver.c:find_pe_resource() no resource directory found in PE file.\n");
 		return 0;
@@ -480,20 +480,20 @@
 	resourcedir = (LPIMAGE_RESOURCE_DIRECTORY)(image+resdir.VirtualAddress);
 	xresdir = GetResDirEntryW(resourcedir,typeid,(DWORD)resourcedir,FALSE);
 	if (!xresdir) {
-		dprintf_info(ver,"...no typeid entry found for %p\n",typeid);
+		TRACE(ver,"...no typeid entry found for %p\n",typeid);
 		HeapFree(GetProcessHeap(),0,image);
 		return 0;
 	}
 	xresdir = GetResDirEntryW(xresdir,resid,(DWORD)resourcedir,FALSE);
 	if (!xresdir) {
-		dprintf_info(ver,"...no resid entry found for %p\n",resid);
+		TRACE(ver,"...no resid entry found for %p\n",resid);
 		HeapFree(GetProcessHeap(),0,image);
 		return 0;
 	}
 	
 	xresdir = GetResDirEntryW(xresdir,0,(DWORD)resourcedir,TRUE);
 	if (!xresdir) {
-		dprintf_info(ver,"...no 0 (default language) entry found for %p\n",resid);
+		TRACE(ver,"...no 0 (default language) entry found for %p\n",resid);
 		HeapFree(GetProcessHeap(),0,image);
 		return 0;
 	}
@@ -527,7 +527,7 @@
 	int			reslen=0;
 	int			res=0;
 
-	dprintf_info(ver,"GetFileResourceSize(%s,%lx,%lx,%p)\n",
+	TRACE(ver,"(%s,%lx,%lx,%p)\n",
 		filename,(LONG)restype,(LONG)resid,off
 	);
 	lzfd=LZOpenFile32A(filename,&ofs,OF_READ);
@@ -564,7 +564,7 @@
 	int			res=0;
 	int			reslen=datalen;
 
-	dprintf_info(ver,"GetFileResource(%s,%lx,%lx,%ld,%ld,%p)\n",
+	TRACE(ver,"(%s,%lx,%lx,%ld,%ld,%p)\n",
 		filename,(LONG)restype,(LONG)resid,off,datalen,data
 	);
 
@@ -603,7 +603,7 @@
 	BYTE	buf[144];
 	VS_FIXEDFILEINFO *vffi;
 
-	dprintf_info(ver,"GetFileVersionInfoSize16(%s,%p)\n",filename,handle);
+	TRACE(ver,"(%s,%p)\n",filename,handle);
 	len=GetFileResourceSize(filename,VS_FILE_INFO,VS_VERSION_INFO,handle);
 	if (!len)
 		return 0;
@@ -629,7 +629,7 @@
 	if (*(WORD*)buf < len)
 		len = *(WORD*)buf;
 
-	if(debugging_info(ver))
+	if(TRACE_ON(ver))
 	  print_vffi_debug(vffi);
 
 	return len;
@@ -638,7 +638,7 @@
 /* GetFileVersionInfoSize32A			[VERSION.1] */
 DWORD WINAPI GetFileVersionInfoSize32A(LPCSTR filename,LPDWORD handle)
 {
-	dprintf_info(ver,"GetFileVersionInfoSize32A(%s,%p)\n",filename,handle);
+	TRACE(ver,"(%s,%p)\n",filename,handle);
 	return GetFileVersionInfoSize16(filename,handle);
 }
 
@@ -655,7 +655,7 @@
 DWORD  WINAPI GetFileVersionInfo16(LPCSTR filename,DWORD handle,DWORD datasize,
                                    LPVOID data)
 {
-	dprintf_info(ver,"GetFileVersionInfo16(%s,%ld,%ld,%p)\n",
+	TRACE(ver,"(%s,%ld,%ld,%p)\n",
 		filename,handle,datasize,data
 	);
 	return GetFileResource(
@@ -712,27 +712,27 @@
     retval = 0;
 
     /* Print out debugging information */
-    dprintf_info(ver, "VerFindFile() called with parameters:\n"
-		"\tflags = %x", flags);
+    TRACE(ver, "called with parameters:\n"
+		 "\tflags = %x", flags);
     if(flags & VFFF_ISSHAREDFILE)
-	dprintf_info(ver, " (VFFF_ISSHAREDFILE)\n");
+	TRACE(ver, " (VFFF_ISSHAREDFILE)\n");
     else
-	dprintf_info(ver, "\n");
+	TRACE(ver, "\n");
 
     ver_dstring("\tlpszFilename = ", lpszFilename, "");
     ver_dstring("\tlpszWinDir = ", lpszWinDir, "");
     ver_dstring("\tlpszAppDir = ", lpszAppDir, "");
 
-    dprintf_info(ver, "\tlpszCurDir = %p\n", lpszCurDir);
+    TRACE(ver, "\tlpszCurDir = %p\n", lpszCurDir);
     if(lpuCurDirLen)
-	dprintf_info(ver, "\tlpuCurDirLen = %p (%u)\n",
+	TRACE(ver, "\tlpuCurDirLen = %p (%u)\n",
 		    lpuCurDirLen, *lpuCurDirLen);
     else
-	dprintf_info(ver, "\tlpuCurDirLen = (null)\n");
+	TRACE(ver, "\tlpuCurDirLen = (null)\n");
 
-    dprintf_info(ver, "\tlpszDestDir = %p\n", lpszDestDir);
+    TRACE(ver, "\tlpszDestDir = %p\n", lpszDestDir);
     if(lpuDestDirLen)
-	dprintf_info(ver, "\tlpuDestDirLen = %p (%u)\n",
+	TRACE(ver, "\tlpuDestDirLen = %p (%u)\n",
 		    lpuDestDirLen, *lpuDestDirLen);
 
     /* Figure out where the file should go; shared files default to the
@@ -820,21 +820,21 @@
 	*lpuCurDirLen = curDirSizeReq;
     }
 
-    dprintf_info(ver, "VerFindFile() ret = %lu (%s%s%s)\n", retval,
-		(retval & VFF_CURNEDEST) ? "VFF_CURNEDEST " : "",
-		(retval & VFF_FILEINUSE) ? "VFF_FILEINUSE " : "",
-		(retval & VFF_BUFFTOOSMALL) ? "VFF_BUFFTOOSMALL " : "");
+    TRACE(ver, "ret = %lu (%s%s%s)\n", retval,
+		 (retval & VFF_CURNEDEST) ? "VFF_CURNEDEST " : "",
+		 (retval & VFF_FILEINUSE) ? "VFF_FILEINUSE " : "",
+		 (retval & VFF_BUFFTOOSMALL) ? "VFF_BUFFTOOSMALL " : "");
 
     ver_dstring("\t(Exit) lpszCurDir = ", lpszCurDir, "");
     if(lpuCurDirLen)
-	dprintf_info(ver, "\t(Exit) lpuCurDirLen = %p (%u)\n",
+	TRACE(ver, "\t(Exit) lpuCurDirLen = %p (%u)\n",
 		    lpuCurDirLen, *lpuCurDirLen);
     else
-	dprintf_info(ver, "\t(Exit) lpuCurDirLen = (null)\n");
+	TRACE(ver, "\t(Exit) lpuCurDirLen = (null)\n");
 
     ver_dstring("\t(Exit) lpszDestDir = ", lpszDestDir, "");
     if(lpuDestDirLen)
-	dprintf_info(ver, "\t(Exit) lpuDestDirLen = %p (%u)\n",
+	TRACE(ver, "\t(Exit) lpuDestDirLen = %p (%u)\n",
 		    lpuDestDirLen, *lpuDestDirLen);
 
     return retval;
@@ -1191,13 +1191,13 @@
 
 	while (1) {
 		db=(struct dbA*)block;
-		dprintf_info(ver,"db=%p,db->nextoff=%d,db->datalen=%d,db->name=%s\n",
+		TRACE(ver,"db=%p,db->nextoff=%d,db->datalen=%d,db->name=%s\n",
 			db,db->nextoff,db->datalen,db->name
 		);
 		if ((!db->nextoff) || (buff_remain<=0)) /* no more entries ? */
 			return NULL;
 
-		dprintf_info(ver,"comparing with %s\n",db->name);
+		TRACE(ver,"comparing with %s\n",db->name);
 		if (!lstrncmpi32A(db->name,str,substrlen)) {
 			if (nextslash) {
 				inc_size=DATA_OFFSET_A(db)+((db->datalen+3)&~3);
@@ -1248,7 +1248,7 @@
 		} else
 			vs = HEAP_strdupA(GetProcessHeap(),0,"no data");
 
-		dprintf_info(ver,"db->nextoff=%d,db->name=%s,db->data=\"%s\"\n",
+		TRACE(ver,"db->nextoff=%d,db->name=%s,db->data=\"%s\"\n",
 			db->nextoff,xs,vs
 		);
 		HeapFree(GetProcessHeap(),0,vs);
@@ -1284,7 +1284,7 @@
 	LPSTR	s;
 	BYTE	*block=PTR_SEG_TO_LIN(segblock),*b;
 
-	dprintf_info(ver,"VerQueryValue16(%p,%s,%p,%d)\n",
+	TRACE(ver,"(%p,%s,%p,%d)\n",
 		block,subblock,buffer,*buflen
 	);
 
@@ -1312,10 +1312,10 @@
 		*buflen	= db->datalen;
 		if (db->btext) {
 		    xs = HEAP_strdupWtoA(GetProcessHeap(),0,(WCHAR*)b);
-		    dprintf_info(ver,"->%s\n",xs);
+		    TRACE(ver,"->%s\n",xs);
 		    HeapFree(GetProcessHeap(),0,xs);
 		} else
-		    dprintf_info(ver,"->%p\n",b);
+		    TRACE(ver,"->%p\n",b);
 	} else {
 		struct	dbA	*db;
 		b=_find_dataA(block,s,*(WORD*)block);
@@ -1330,9 +1330,9 @@
 		*buflen	= db->datalen;
 		/* the string is only printable, if it is below \\StringFileInfo*/
 		if (!lstrncmpi32A("VS_VERSION_INFO\\StringFileInfo\\",s,strlen("VS_VERSION_INFO\\StringFileInfo\\")))
-		    dprintf_info(ver,"	-> %s=%s\n",subblock,b);
+		    TRACE(ver,"	-> %s=%s\n",subblock,b);
 		else
-		    dprintf_info(ver,"	-> %s=%p\n",subblock,b);
+		    TRACE(ver,"	-> %s=%p\n",subblock,b);
 	}
 	*buffer	= (b-block)+segblock;
 	free(s);
@@ -1345,7 +1345,7 @@
 	BYTE	*b,*block=(LPBYTE)vblock,**buffer=(LPBYTE*)vbuffer;
 	LPSTR	s;
 
-	dprintf_info(ver,"VerQueryValue32A(%p,%s,%p,%d)\n",
+	TRACE(ver,"(%p,%s,%p,%d)\n",
 		block,subblock,buffer,*buflen
 	);
 
@@ -1374,10 +1374,10 @@
 		b	= b+DATA_OFFSET_W(db);
 		if (db->btext) {
 		    xs = HEAP_strdupWtoA(GetProcessHeap(),0,(WCHAR*)b);
-		    dprintf_info(ver,"->%s\n",xs);
+		    TRACE(ver,"->%s\n",xs);
 		    HeapFree(GetProcessHeap(),0,xs);
 		} else
-		    dprintf_info(ver,"->%p\n",b);
+		    TRACE(ver,"->%p\n",b);
 		/* This is a leak.  */
 		b = HEAP_strdupWtoA(GetProcessHeap(),0,(WCHAR*)b);
 	} else {
@@ -1395,9 +1395,9 @@
 
 		/* the string is only printable, if it is below \\StringFileInfo*/
 		if (!lstrncmpi32A("VS_VERSION_INFO\\StringFileInfo\\",s,strlen("VS_VERSION_INFO\\StringFileInfo\\")))
-		    dprintf_info(ver,"	-> %s=%s\n",subblock,b);
+		    TRACE(ver,"	-> %s=%s\n",subblock,b);
 		else
-		    dprintf_info(ver,"	-> %s=%p\n",subblock,b);
+		    TRACE(ver,"	-> %s=%p\n",subblock,b);
 	}
 	*buffer	= b;
 	free(s);
diff --git a/misc/windebug.c b/misc/windebug.c
index 5f73299..3f17f9b 100644
--- a/misc/windebug.c
+++ b/misc/windebug.c
@@ -20,10 +20,11 @@
 	switch (AX_reg(context))
 	{
 		case 0x000D:
-		case 0x000E:	/* __asm__("pushl $0x0\n\t"); ??? */
-				break;
+		case 0x000E:
 		case 0x0060:	/* do nothing */
 				break;
+		case 0x0062: 
+				break;
 		case 0x0063:	/* do something complicated */
 				break;
 		case 0x0064:	/* do something complicated */
diff --git a/misc/winsock.c b/misc/winsock.c
index 239c456..ec78b4b 100644
--- a/misc/winsock.c
+++ b/misc/winsock.c
@@ -205,7 +205,7 @@
 
     optlen = sizeof(optval);
     getsockopt(s, SOL_SOCKET, SO_ERROR, &optval, &optlen);
-    if (optval) dprintf_warn(winsock, "\t[%i] error: %d\n", s, optval);
+    if (optval) WARN(winsock, "\t[%i] error: %d\n", s, optval);
     return optval != 0;
 }
 
@@ -248,7 +248,7 @@
 	if( b32 ) wsfds32->fd_count = j;
 	else wsfds16->fd_count = j;
 
-	dprintf_info(winsock, "\n");
+	TRACE(winsock, "\n");
 #undef wsfds32
 #undef wsfds16
     }
@@ -303,7 +303,7 @@
     HTASK16             tid = GetCurrentTask();
     LPWSINFO            pwsi;
 
-    dprintf_info(winsock, "WSAStartup: verReq=%x\n", wVersionRequested);
+    TRACE(winsock, "verReq=%x\n", wVersionRequested);
 
     if (LOBYTE(wVersionRequested) < 1 || (LOBYTE(wVersionRequested) == 1 &&
         HIBYTE(wVersionRequested) < 1)) return WSAVERNOTSUPPORTED;
@@ -358,7 +358,7 @@
 
     memcpy(lpWSAData, &WINSOCK_data, sizeof(WINSOCK_data));
 
-    dprintf_info(winsock, "WSAStartup: succeeded\n");
+    TRACE(winsock, "succeeded\n");
     return 0;
 }
 
@@ -410,12 +410,12 @@
 	WINSOCK_Shutdown();	/* just in case */
 
     if( pwsi->flags & WSI_BLOCKINGCALL )
-	dprintf_info(winsock,"\tinside blocking call!\n");
+	TRACE(winsock,"\tinside blocking call!\n");
 
 /* FIXME: aop_control() doesn't decrement pwsi->num_async_rq
  *
  *    if( pwsi->num_async_rq )
- *	  dprintf_warn(winsock,"\thave %i outstanding async ops!\n", pwsi->num_async_rq );
+ *	  WARN(winsock,"\thave %i outstanding async ops!\n", pwsi->num_async_rq );
  */
 
     for(i = 0, j = 0, n = 0; i < WS_MAX_SOCKETS_PER_PROCESS; i++)
@@ -429,7 +429,7 @@
             close(pwsi->sock[i].fd); j++; 
         }
     if( j ) 
-	  dprintf_info(winsock,"\tclosed %i sockets, killed %i async selects!\n", j, n);
+	  TRACE(winsock,"\tclosed %i sockets, killed %i async selects!\n", j, n);
 
     /* delete scratch buffers */
 
@@ -447,7 +447,7 @@
 {
     HTASK16	hTask = GetCurrentTask();
 
-    dprintf_info(winsock, "WSACleanup(%04x)\n", hTask );
+    TRACE(winsock, "(%04x)\n", hTask );
     if( hTask )
     {
 	LPWSINFO pwsi = wsi_find(hTask);
@@ -469,7 +469,7 @@
     LPWSINFO pwsi = wsi_find(GetCurrentTask());
     INT16    ret = (pwsi) ? pwsi->err : WSANOTINITIALISED;
 
-    dprintf_info(winsock, "WSAGetLastError(%08x) = %i\n", 
+    TRACE(winsock, "(%08x) = %i\n", 
 		    (unsigned)pwsi, (int)ret);
     return ret;
 }
@@ -481,7 +481,7 @@
 {
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WSASetLastError(%08x): %d\n", (unsigned)pwsi, (int)iError);
+    TRACE(winsock, "(%08x): %d\n", (unsigned)pwsi, (int)iError);
     if( pwsi ) pwsi->err = iError;
 }
 
@@ -522,7 +522,7 @@
     ws_socket*	pws  = (ws_socket*)WS_HANDLE2PTR((SOCKET16)s);
     LPWSINFO	pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_ACCEPT(%08x): socket %04x\n", 
+    TRACE(winsock, "(%08x): socket %04x\n", 
 				  (unsigned)pwsi, (UINT16)s ); 
     if( _check_ws(pwsi, pws) )
     {
@@ -573,7 +573,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_BIND(%08x): socket %04x, ptr %8x, length %d\n", 
+    TRACE(winsock, "(%08x): socket %04x, ptr %8x, length %d\n", 
 			   (unsigned)pwsi, s, (int) name, namelen);
 #if DEBUG_SOCKADDR
     dump_sockaddr(name);
@@ -585,7 +585,7 @@
 	  if ( bind(pws->fd, name, namelen) < 0 ) 
 	  {
 	     int	loc_errno = errno;
-	     dprintf_warn(winsock, "\tfailure - errno = %i\n", errno);
+	     WARN(winsock, "\tfailure - errno = %i\n", errno);
 	     errno = loc_errno;
 	     switch(errno)
 	     {
@@ -616,7 +616,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_CLOSE(%08x): socket %08x\n", (unsigned)pwsi, s);
+    TRACE(winsock, "(%08x): socket %08x\n", (unsigned)pwsi, s);
 
     if( _check_ws(pwsi, pws) )
     { 
@@ -651,7 +651,7 @@
   ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
   LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_CONNECT(%08x): socket %04x, ptr %8x, length %d\n", 
+  TRACE(winsock, "(%08x): socket %04x, ptr %8x, length %d\n", 
 			   (unsigned)pwsi, s, (int) name, namelen);
 #if DEBUG_SOCKADDR
   dump_sockaddr(name);
@@ -709,7 +709,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_GETPEERNAME(%08x): socket: %04x, ptr %8x, ptr %8x\n", 
+    TRACE(winsock, "(%08x): socket: %04x, ptr %8x, ptr %8x\n", 
 			   (unsigned)pwsi, s, (int) name, *namelen);
     if( _check_ws(pwsi, pws) )
     {
@@ -746,7 +746,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_GETSOCKNAME(%08x): socket: %04x, ptr %8x, ptr %8x\n", 
+    TRACE(winsock, "(%08x): socket: %04x, ptr %8x, ptr %8x\n", 
 			  (unsigned)pwsi, s, (int) name, (int) *namelen);
     if( _check_ws(pwsi, pws) )
     {
@@ -790,7 +790,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_GETSOCKOPT(%08x): socket: %04x, opt %d, ptr %8x, ptr %8x\n", 
+    TRACE(winsock, "(%08x): socket: %04x, opt %d, ptr %8x, ptr %8x\n", 
 			   (unsigned)pwsi, s, level, (int) optval, (int) *optlen);
     if( _check_ws(pwsi, pws) )
     {
@@ -883,7 +883,7 @@
   ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
   LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_IOCTL(%08x): socket %04x, cmd %08x, ptr %8x\n", 
+  TRACE(winsock, "(%08x): socket %04x, cmd %08x, ptr %8x\n", 
 			  (unsigned)pwsi, s, cmd, (unsigned) argp);
   if( _check_ws(pwsi, pws) )
   {
@@ -916,7 +916,7 @@
 
 	default:	  
 		/* Netscape tries hard to use bogus ioctl 0x667e */
-		dprintf_warn(winsock, "\tunknown WS_IOCTL cmd (%08x)\n", cmd);
+		WARN(winsock, "\tunknown WS_IOCTL cmd (%08x)\n", cmd);
     }
     if( ioctl(pws->fd, newcmd, (char*)argp ) == 0 ) return 0;
     pwsi->err = (errno == EBADF) ? WSAENOTSOCK : wsaErrno(); 
@@ -941,7 +941,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_LISTEN(%08x): socket %04x, backlog %d\n", 
+    TRACE(winsock, "(%08x): socket %04x, backlog %d\n", 
 			    (unsigned)pwsi, s, backlog);
     if( _check_ws(pwsi, pws) )
     {
@@ -979,7 +979,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_RECV(%08x): socket %04x, buf %8x, len %d, "
+    TRACE(winsock, "(%08x): socket %04x, buf %8x, len %d, "
 		    "flags %d\n", (unsigned)pwsi, s, (unsigned)buf, 
 		    len, flags);
     if( _check_ws(pwsi, pws) )
@@ -987,7 +987,7 @@
 	INT32 length;
 	if ((length = recv(pws->fd, buf, len, flags)) >= 0) 
 	{ 
-	    dprintf_info(winsock, " -> %i bytes\n", length);
+	    TRACE(winsock, " -> %i bytes\n", length);
 
 	    if( pws->psop && (pws->flags & (WS_FD_READ | WS_FD_CLOSE)) )
 		EVENT_AddIO( pws->fd, EVENT_IO_READ );	/* reenabler */
@@ -997,7 +997,7 @@
 	pwsi->err = wsaErrno();
     }
     else if( pwsi ) pwsi->err = WSAENOTSOCK;
-    dprintf_warn(winsock, " -> ERROR\n");
+    WARN(winsock, " -> ERROR\n");
     return SOCKET_ERROR;
 }
 
@@ -1019,7 +1019,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_RECVFROM(%08x): socket %04x, ptr %08x, "
+    TRACE(winsock, "(%08x): socket %04x, ptr %08x, "
 		    "len %d, flags %d\n", (unsigned)pwsi, s, (unsigned)buf,
 		    len, flags);
 #if DEBUG_SOCKADDR
@@ -1033,7 +1033,7 @@
 
 	if ((length = recvfrom(pws->fd, buf, len, flags, from, fromlen32)) >= 0)
 	{
-	    dprintf_info(winsock, " -> %i bytes\n", length);
+	    TRACE(winsock, " -> %i bytes\n", length);
 
 	    if( pws->psop && (pws->flags & (WS_FD_READ | WS_FD_CLOSE)) )
 		EVENT_AddIO( pws->fd, EVENT_IO_READ );  /* reenabler */
@@ -1043,7 +1043,7 @@
 	pwsi->err = wsaErrno();
     }
     else if( pwsi ) pwsi->err = WSAENOTSOCK;
-    dprintf_warn(winsock, " -> ERROR\n");
+    WARN(winsock, " -> ERROR\n");
     return SOCKET_ERROR;
 }
 
@@ -1071,7 +1071,7 @@
 {
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 	
-    dprintf_info(winsock, "WS_SELECT(%08x): read %8x, write %8x, excp %8x\n", 
+    TRACE(winsock, "(%08x): read %8x, write %8x, excp %8x\n", 
     (unsigned) pwsi, (unsigned) ws_readfds, (unsigned) ws_writefds, (unsigned) ws_exceptfds);
 
     if( pwsi )
@@ -1150,7 +1150,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_SEND(%08x): socket %04x, ptr %08x, length %d, flags %d\n", 
+    TRACE(winsock, "(%08x): socket %04x, ptr %08x, length %d, flags %d\n", 
 			   (unsigned)pwsi, s, (unsigned) buf, len, flags);
     if( _check_ws(pwsi, pws) )
     {
@@ -1186,7 +1186,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_SENDTO(%08x): socket %04x, ptr %08x, length %d, flags %d\n",
+    TRACE(winsock, "(%08x): socket %04x, ptr %08x, length %d, flags %d\n",
                           (unsigned)pwsi, s, (unsigned) buf, len, flags);
     if( _check_ws(pwsi, pws) )
     {
@@ -1223,7 +1223,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_SETSOCKOPT(%08x): socket %04x, lev %d, opt %d, ptr %08x, len %d\n",
+    TRACE(winsock, "(%08x): socket %04x, lev %d, opt %d, ptr %08x, len %d\n",
 			  (unsigned)pwsi, s, level, optname, (int) optval, optlen);
     if( _check_ws(pwsi, pws) )
     {
@@ -1263,7 +1263,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_SHUTDOWN(%08x): socket %04x, how %i\n",
+    TRACE(winsock, "(%08x): socket %04x, how %i\n",
 			    (unsigned)pwsi, s, how );
     if( _check_ws(pwsi, pws) )
     {
@@ -1328,7 +1328,7 @@
 {
   LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_SOCKET(%08x): af=%d type=%d protocol=%d\n", 
+  TRACE(winsock, "(%08x): af=%d type=%d protocol=%d\n", 
 			  (unsigned)pwsi, af, type, protocol);
 
   if( pwsi )
@@ -1372,7 +1372,7 @@
     {
         ws_socket*      pnew = wsi_alloc_socket(pwsi, sock);
 
-	dprintf_info(winsock,"\tcreated %i (handle %04x)\n", sock, (UINT16)WS_PTR2HANDLE(pnew));
+	TRACE(winsock,"\tcreated %i (handle %04x)\n", sock, (UINT16)WS_PTR2HANDLE(pnew));
 
         if( pnew ) 
 	{
@@ -1392,7 +1392,7 @@
     } else pwsi->err = wsaErrno();
   }
  
-  dprintf_warn(winsock, "\t\tfailed!\n");
+  WARN(winsock, "\t\tfailed!\n");
   return INVALID_SOCKET32;
 }
 
@@ -1439,7 +1439,7 @@
 SEGPTR WINAPI WINSOCK_gethostbyaddr16(const char *addr, INT16 len, INT16 type)
 {
     struct WIN_hostent* retval;
-    dprintf_info(winsock, "WS_GetHostByAddr16: ptr %08x, len %d, type %d\n",
+    TRACE(winsock, "ptr %08x, len %d, type %d\n",
                             (unsigned) addr, len, type);
     retval = __ws_gethostbyaddr( addr, len, type, WS_DUP_SEGPTR );
     return retval ? SEGPTR_GET(retval) : ((SEGPTR)NULL);
@@ -1448,7 +1448,7 @@
 struct WIN_hostent* WINAPI WINSOCK_gethostbyaddr32(const char *addr, INT32 len,
                                                 INT32 type)
 {
-    dprintf_info(winsock, "WS_GetHostByAddr32: ptr %08x, len %d, type %d\n",
+    TRACE(winsock, "ptr %08x, len %d, type %d\n",
                              (unsigned) addr, len, type);
     return __ws_gethostbyaddr(addr, len, type, WS_DUP_LINEAR);
 }
@@ -1475,14 +1475,14 @@
 SEGPTR WINAPI WINSOCK_gethostbyname16(const char *name)
 {
     struct WIN_hostent* retval;
-    dprintf_info(winsock, "WS_GetHostByName16: %s\n", (name)?name:NULL_STRING);
+    TRACE(winsock, "%s\n", (name)?name:NULL_STRING);
     retval = __ws_gethostbyname( name, WS_DUP_SEGPTR );
     return (retval)? SEGPTR_GET(retval) : ((SEGPTR)NULL) ;
 }
 
 struct WIN_hostent* WINAPI WINSOCK_gethostbyname32(const char* name)
 {
-    dprintf_info(winsock, "WS_GetHostByName32: %s\n", (name)?name:NULL_STRING);
+    TRACE(winsock, "%s\n", (name)?name:NULL_STRING);
     return __ws_gethostbyname( name, WS_DUP_LINEAR );
 }
 
@@ -1509,14 +1509,14 @@
 SEGPTR WINAPI WINSOCK_getprotobyname16(const char *name)
 {
     struct WIN_protoent* retval;
-    dprintf_info(winsock, "WS_GetProtoByName16: %s\n", (name)?name:NULL_STRING);
+    TRACE(winsock, "%s\n", (name)?name:NULL_STRING);
     retval = __ws_getprotobyname(name, WS_DUP_SEGPTR);
     return retval ? SEGPTR_GET(retval) : ((SEGPTR)NULL);
 }
 
 struct WIN_protoent* WINAPI WINSOCK_getprotobyname32(const char* name)
 {
-    dprintf_info(winsock, "WS_GetProtoByName32: %s\n", (name)?name:NULL_STRING);
+    TRACE(winsock, "%s\n", (name)?name:NULL_STRING);
     return __ws_getprotobyname(name, WS_DUP_LINEAR);
 }
 
@@ -1543,14 +1543,14 @@
 SEGPTR WINAPI WINSOCK_getprotobynumber16(INT16 number)
 {
     struct WIN_protoent* retval;
-    dprintf_info(winsock, "WS_GetProtoByNumber16: %i\n", number);
+    TRACE(winsock, "%i\n", number);
     retval = __ws_getprotobynumber(number, WS_DUP_SEGPTR);
     return retval ? SEGPTR_GET(retval) : ((SEGPTR)NULL);
 }
 
 struct WIN_protoent* WINAPI WINSOCK_getprotobynumber32(INT32 number)
 {
-    dprintf_info(winsock, "WS_GetProtoByNumber32: %i\n", number);
+    TRACE(winsock, "%i\n", number);
     return __ws_getprotobynumber(number, WS_DUP_LINEAR);
 }
 
@@ -1581,7 +1581,7 @@
 SEGPTR WINAPI WINSOCK_getservbyname16(const char *name, const char *proto)
 {
     struct WIN_servent* retval;
-    dprintf_info(winsock, "WS_GetServByName16: '%s', '%s'\n",
+    TRACE(winsock, "'%s', '%s'\n",
                             (name)?name:NULL_STRING, (proto)?proto:NULL_STRING);
     retval = __ws_getservbyname(name, proto, WS_DUP_SEGPTR);
     return retval ? SEGPTR_GET(retval) : ((SEGPTR)NULL);
@@ -1589,7 +1589,7 @@
 
 struct WIN_servent* WINAPI WINSOCK_getservbyname32(const char *name, const char *proto)
 {
-    dprintf_info(winsock, "WS_GetServByName32: '%s', '%s'\n",
+    TRACE(winsock, "'%s', '%s'\n",
                             (name)?name:NULL_STRING, (proto)?proto:NULL_STRING);
     return __ws_getservbyname(name, proto, WS_DUP_LINEAR);
 }
@@ -1621,7 +1621,7 @@
 SEGPTR WINAPI WINSOCK_getservbyport16(INT16 port, const char *proto)
 {
     struct WIN_servent* retval;
-    dprintf_info(winsock, "WS_GetServByPort16: %i, '%s'\n",
+    TRACE(winsock, "%i, '%s'\n",
                             (int)port, (proto)?proto:NULL_STRING);
     retval = __ws_getservbyport(port, proto, WS_DUP_SEGPTR);
     return retval ? SEGPTR_GET(retval) : ((SEGPTR)NULL);
@@ -1629,7 +1629,7 @@
 
 struct WIN_servent* WINAPI WINSOCK_getservbyport32(INT32 port, const char *proto)
 {
-    dprintf_info(winsock, "WS_GetServByPort32: %i, '%s'\n",
+    TRACE(winsock, "%i, '%s'\n",
                             (int)port, (proto)?proto:NULL_STRING);
     return __ws_getservbyport(port, proto, WS_DUP_LINEAR);
 }
@@ -1642,7 +1642,7 @@
 {
     LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_GetHostName(%08x): name %s, len %d\n",
+    TRACE(winsock, "(%08x): name %s, len %d\n",
                           (unsigned)pwsi, (name)?name:NULL_STRING, namelen);
     if( pwsi )
     {
@@ -1682,8 +1682,8 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetHostByAddr16(%08x): hwnd %04x, msg %04x, addr %08x[%i]\n",
-                          (unsigned)pwsi, hWnd, uMsg, (unsigned)addr , len );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %04x, addr %08x[%i]\n",
+	       (unsigned)pwsi, hWnd, uMsg, (unsigned)addr , len );
 
   if( pwsi ) 
     return __WSAsyncDBQuery(pwsi, hWnd, uMsg, type, addr, len,
@@ -1699,8 +1699,8 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetHostByAddr32(%08x): hwnd %04x, msg %08x, addr %08x[%i]\n",
-                          (unsigned)pwsi, (HWND16)hWnd, uMsg, (unsigned)addr , len );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %08x, addr %08x[%i]\n",
+	       (unsigned)pwsi, (HWND16)hWnd, uMsg, (unsigned)addr , len );
 
   if( pwsi )
     return __WSAsyncDBQuery(pwsi, hWnd, uMsg, type, addr, len,
@@ -1717,7 +1717,7 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetHostByName16(%08x): hwnd %04x, msg %04x, host %s, 
+  TRACE(winsock, "(%08x): hwnd %04x, msg %04x, host %s, 
 buffer %i\n", (unsigned)pwsi, hWnd, uMsg, (name)?name:NULL_STRING, (int)buflen );
 
   if( pwsi )
@@ -1733,8 +1733,9 @@
 					LPSTR sbuf, INT32 buflen)
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
-  dprintf_info(winsock, "WS_AsyncGetHostByName32(%08x): hwnd %04x, msg %08x, host %s, 
-buffer %i\n", (unsigned)pwsi, (HWND16)hWnd, uMsg, (name)?name:NULL_STRING, (int)buflen );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %08x, host %s, buffer %i\n", 
+	       (unsigned)pwsi, (HWND16)hWnd, uMsg, 
+	       (name)?name:NULL_STRING, (int)buflen );
   if( pwsi )
     return __WSAsyncDBQuery(pwsi, hWnd, uMsg, 0, name, 0,
  			    NULL, (void*)sbuf, buflen, WSMSG_ASYNC_HOSTBYNAME | WSMSG_ASYNC_WIN32);
@@ -1750,8 +1751,8 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetProtoByName16(%08x): hwnd %04x, msg %08x, protocol %s\n",
-                          (unsigned)pwsi, (HWND16)hWnd, uMsg, (name)?name:NULL_STRING );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %08x, protocol %s\n",
+	       (unsigned)pwsi, (HWND16)hWnd, uMsg, (name)?name:NULL_STRING );
 
   if( pwsi )
     return __WSAsyncDBQuery(pwsi, hWnd, uMsg, 0, name, 0,
@@ -1767,8 +1768,8 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetProtoByName32(%08x): hwnd %04x, msg %08x, protocol %s\n",
-                          (unsigned)pwsi, (HWND16)hWnd, uMsg, (name)?name:NULL_STRING );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %08x, protocol %s\n",
+	       (unsigned)pwsi, (HWND16)hWnd, uMsg, (name)?name:NULL_STRING );
 
   if( pwsi )
     return __WSAsyncDBQuery(pwsi, hWnd, uMsg, 0, name, 0,
@@ -1785,8 +1786,8 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetProtoByNumber16(%08x): hwnd %04x, msg %04x, num %i\n",
-                          (unsigned)pwsi, hWnd, uMsg, number );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %04x, num %i\n",
+	       (unsigned)pwsi, hWnd, uMsg, number );
 
   if( pwsi )
     return __WSAsyncDBQuery(pwsi, hWnd, uMsg, number, NULL, 0,
@@ -1802,8 +1803,8 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetProtoByNumber32(%08x): hwnd %04x, msg %08x, num %i\n",
-                          (unsigned)pwsi, (HWND16)hWnd, uMsg, number );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %08x, num %i\n",
+	       (unsigned)pwsi, (HWND16)hWnd, uMsg, number );
 
   if( pwsi )
     return __WSAsyncDBQuery(pwsi, hWnd, uMsg, number, NULL, 0,
@@ -1820,8 +1821,9 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetServByName16(%08x): hwnd %04x, msg %04x, name %s, proto %s\n",
-                   (unsigned)pwsi, hWnd, uMsg, (name)?name:NULL_STRING, (proto)?proto:NULL_STRING );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %04x, name %s, proto %s\n",
+	       (unsigned)pwsi, hWnd, uMsg, 
+	       (name)?name:NULL_STRING, (proto)?proto:NULL_STRING );
 
   if( pwsi )
   {
@@ -1842,8 +1844,9 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetServByName32(%08x): hwnd %04x, msg %08x, name %s, proto %s\n",
-           (unsigned)pwsi, (HWND16)hWnd, uMsg, (name)?name:NULL_STRING, (proto)?proto:NULL_STRING );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %08x, name %s, proto %s\n",
+	       (unsigned)pwsi, (HWND16)hWnd, uMsg, 
+	       (name)?name:NULL_STRING, (proto)?proto:NULL_STRING );
   if( pwsi )
   {
       int i = wsi_strtolo( pwsi, name, proto );
@@ -1864,8 +1867,8 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetServByPort16(%08x): hwnd %04x, msg %04x, port %i, proto %s\n",
-                           (unsigned)pwsi, hWnd, uMsg, port, (proto)?proto:NULL_STRING );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %04x, port %i, proto %s\n",
+	       (unsigned)pwsi, hWnd, uMsg, port, (proto)?proto:NULL_STRING );
 
   if( pwsi )
   {
@@ -1886,8 +1889,8 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_AsyncGetServByPort32(%08x): hwnd %04x, msg %08x, port %i, proto %s\n",
-                           (unsigned)pwsi, (HWND16)hWnd, uMsg, port, (proto)?proto:NULL_STRING );
+  TRACE(winsock, "(%08x): hwnd %04x, msg %08x, port %i, proto %s\n",
+	       (unsigned)pwsi, (HWND16)hWnd, uMsg, port, (proto)?proto:NULL_STRING );
 
   if( pwsi )
   {
@@ -1910,7 +1913,7 @@
     LPWSINFO		pwsi = wsi_find(GetCurrentTask());
     ws_async_op*	p_aop = (ws_async_op*)WS_HANDLE2PTR(hAsyncTaskHandle);
 
-    dprintf_info(winsock, "WS_CancelAsyncRequest(%08x): handle %08x\n", 
+    TRACE(winsock, "(%08x): handle %08x\n", 
 			   (unsigned)pwsi, hAsyncTaskHandle);
     if( pwsi )
     {
@@ -1950,7 +1953,7 @@
     DWORD		dwEvent, dwErrBytes;
     int			num_posted;
 
-    dprintf_info(winsock,"WINSOCK_HandleIO: %i pending descriptors\n", num_pending );
+    TRACE(winsock,"%i pending descriptors\n", num_pending );
 
     for( num_posted = dwEvent = 0 ; psop; psop = psop->next )
     {
@@ -1968,7 +1971,7 @@
 	     * Reenabling calls turn them back on.
 	     */
 
-	    dprintf_info(winsock,"\tchecking psop = 0x%08x\n", (unsigned) psop );
+	    TRACE(winsock,"\tchecking psop = 0x%08x\n", (unsigned) psop );
 
 	    num_pending--;
 
@@ -2044,7 +2047,7 @@
 		    if( PostMessage32A( psop->hWnd, psop->uMsg, (WPARAM32)WS_PTR2HANDLE(psop->pws), 
 			              (LPARAM)WSAMAKESELECTREPLY( WS_FD_WRITE, 0 ) ) )
 		    {
-			dprintf_info(winsock, "\t    hwnd %04x - %04x, %08x\n",
+			TRACE(winsock, "\t    hwnd %04x - %04x, %08x\n",
                                 psop->hWnd, psop->uMsg, (unsigned)MAKELONG(WS_FD_WRITE, 0) );
 			FD_CLR( fd, &event_set[EVENT_IO_WRITE] );
 			num_posted++;
@@ -2106,7 +2109,7 @@
 
 	    if( bPost )
 	    {
-		dprintf_info(winsock, "\t    hwnd %04x - %04x, %08x\n", 
+		TRACE(winsock, "\t    hwnd %04x - %04x, %08x\n", 
 				psop->hWnd, psop->uMsg, (unsigned)dwEvent );
 		PostMessage32A( psop->hWnd, psop->uMsg, 
 			      (WPARAM32)WS_PTR2HANDLE(psop->pws), (LPARAM)dwEvent );
@@ -2117,7 +2120,7 @@
 	if( num_pending <= 0 ) break;
     }
 
-    dprintf_info(winsock, "\tdone, %i posted events\n", num_posted );
+    TRACE(winsock, "\tdone, %i posted events\n", num_posted );
     return ( num_posted ) ? TRUE : FALSE;
 }
 
@@ -2126,7 +2129,7 @@
     ws_socket*    pws  = (ws_socket*)WS_HANDLE2PTR(s);
     LPWSINFO      pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_AsyncSelect(%08x): %04x, hWnd %04x, uMsg %08x, event %08x\n",
+    TRACE(winsock, "(%08x): %04x, hWnd %04x, uMsg %08x, event %08x\n",
 			  (unsigned)pwsi, (SOCKET16)s, (HWND16)hWnd, uMsg, (unsigned)lEvent );
     if( _check_ws(pwsi, pws) )
     {
@@ -2147,7 +2150,7 @@
 	    if( pws->flags & (WS_FD_CONNECT | WS_FD_WRITE) )
 		EVENT_DeleteIO( pws->fd, EVENT_IO_WRITE );
 
-	    dprintf_info(winsock,"\tremoving psop = 0x%08x\n", (unsigned) psop );
+	    TRACE(winsock,"\tremoving psop = 0x%08x\n", (unsigned) psop );
 
 	    WS_FREE( pws->psop );
 	    pws->flags &= ~(WS_FD_RAW | WS_FD_ACCEPT | WS_FD_CONNECT | 
@@ -2186,7 +2189,7 @@
 
 		/* TODO: handle WS_FD_ACCEPT right away if the socket is readable */
 
-		dprintf_info(winsock,"\tcreating psop = 0x%08x\n", (unsigned)psop );
+		TRACE(winsock,"\tcreating psop = 0x%08x\n", (unsigned)psop );
 
 		return 0; /* success */
 	    }
@@ -2211,7 +2214,7 @@
 {
   int i = set->fd_count;
   
-  dprintf_info(winsock, "__WSAFDIsSet16(%d,%8lx(%i))\n", s,(unsigned long)set, i);
+  TRACE(winsock, "(%d,%8lx(%i))\n", s,(unsigned long)set, i);
     
   while (i--)
       if (set->fd_array[i] == s) return 1;
@@ -2225,7 +2228,7 @@
 {
   int i = set->fd_count;
 
-  dprintf_info(winsock, "__WSAFDIsSet32(%d,%8lx(%i))\n", s,(unsigned long)set, i);
+  TRACE(winsock, "(%d,%8lx(%i))\n", s,(unsigned long)set, i);
 
   while (i--)
       if (set->fd_array[i] == s) return 1;
@@ -2245,7 +2248,7 @@
    * Note: It is allowed to call this function without prior WSAStartup().
    */
 
-  dprintf_info(winsock, "WS_IsBlocking()\n");
+  TRACE(winsock, "\n");
   return FALSE;
 }
 
@@ -2256,7 +2259,7 @@
 {
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_CancelBlockingCall(%08x)\n", (unsigned)pwsi);
+  TRACE(winsock, "(%08x)\n", (unsigned)pwsi);
 
   if( pwsi ) return 0;
   return SOCKET_ERROR;
@@ -2271,8 +2274,8 @@
   FARPROC16		prev;
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_SetBlockingHook16(%08x): hook %08x\n", 
-			  (unsigned)pwsi, (unsigned) lpBlockFunc);
+  TRACE(winsock, "(%08x): hook %08x\n", 
+	       (unsigned)pwsi, (unsigned) lpBlockFunc);
   if( pwsi ) 
   { 
       prev = (FARPROC16)pwsi->blocking_hook; 
@@ -2292,8 +2295,8 @@
   FARPROC32             prev;
   LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-  dprintf_info(winsock, "WS_SetBlockingHook32(%08x): hook %08x\n",
-                          (unsigned)pwsi, (unsigned) lpBlockFunc);
+  TRACE(winsock, "(%08x): hook %08x\n",
+	       (unsigned)pwsi, (unsigned) lpBlockFunc);
   if( pwsi ) {
       prev = (FARPROC32)pwsi->blocking_hook;
       pwsi->blocking_hook = (DWORD)lpBlockFunc;
@@ -2311,7 +2314,7 @@
 {
     LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_UnhookBlockingHook16(%08x)\n", (unsigned)pwsi);
+    TRACE(winsock, "(%08x)\n", (unsigned)pwsi);
     if( pwsi ) return (INT16)(pwsi->blocking_hook = 0);
     return SOCKET_ERROR;
 }
@@ -2324,7 +2327,7 @@
 {
     LPWSINFO              pwsi = wsi_find(GetCurrentTask());
 
-    dprintf_info(winsock, "WS_UnhookBlockingHook32(%08x)\n", (unsigned)pwsi);
+    TRACE(winsock, "(%08x)\n", (unsigned)pwsi);
     if( pwsi )
     {
 	pwsi->blocking_hook = 0;
@@ -2571,10 +2574,10 @@
 {
     int	loc_errno = errno; 
 #if defined(__FreeBSD__)
-       dprintf_err(winsock, "winsock: errno %d, (%s).\n", 
+       ERR(winsock, "errno %d, (%s).\n", 
                 			 errno, strerror(errno));
 #else
-       dprintf_err(winsock, "winsock: errno %d\n", errno);
+       ERR(winsock, "errno %d\n", errno);
 #endif
 
     switch(loc_errno)
@@ -2646,10 +2649,10 @@
     int		loc_errno = h_errno;
 
 #if defined(__FreeBSD__)
-    dprintf_err(winsock, "winsock: h_errno %d, (%s).\n", 
+    ERR(winsock, "h_errno %d, (%s).\n", 
                	    h_errno, strerror(h_errno));
 #else
-    dprintf_err(winsock, "winsock: h_errno %d.\n", h_errno);
+    ERR(winsock, "h_errno %d.\n", h_errno);
 #endif
 
     switch(loc_errno)
diff --git a/misc/winsock_dns.c b/misc/winsock_dns.c
index 029d973..b00b4ef 100644
--- a/misc/winsock_dns.c
+++ b/misc/winsock_dns.c
@@ -34,7 +34,9 @@
 #include "heap.h"
 #include "ldt.h"
 #include "message.h"
+#include "selectors.h"
 #include "miscemu.h"
+#include "sig_context.h"
 #include "debug.h"
 
 #ifndef FASYNC
@@ -136,7 +138,7 @@
     int num = 0;
     ws_async_op*   p, *next;
 
-    dprintf_info(winsock," cancelling async DNS requests... \n");
+    TRACE(winsock," cancelling async DNS requests... \n");
 
     SIGNAL_MaskAsyncEvents( TRUE );
     next = __async_op_list;
@@ -153,7 +155,7 @@
 	}
     }
     SIGNAL_MaskAsyncEvents( FALSE );
-    dprintf_info(winsock," -> %i total\n", num );
+    TRACE(winsock," -> %i total\n", num );
 }
 
 void WINSOCK_link_async_op(ws_async_op* p_aop)
@@ -176,7 +178,7 @@
 	  {
 	      ws_async_op* dead = p;
 
-	      dprintf_info(winsock,"\treaping dead aop [%08x]\n", (unsigned)p );
+	      TRACE(winsock,"\treaping dead aop [%08x]\n", (unsigned)p );
 
 	      p = p->next;
 	      WINSOCK_unlink_async_op( dead );
@@ -218,12 +220,14 @@
  * Note: pipe-based handlers must raise explicit SIGIO with kill(2).
  */
 
-void WINSOCK_sigio(int signal)
+HANDLER_DEF(WINSOCK_sigio)
 {
  struct timeval         timeout;
  fd_set                 check_set;
  ws_async_op*		p_aop;
 
+ HANDLER_INIT();
+
  check_set = __async_io_fdset;
  memset(&timeout, 0, sizeof(timeout));
 
@@ -343,7 +347,7 @@
 	    async_ctl.ws_aop->pid = fork();
 	    if( async_ctl.ws_aop->pid )
 	    {
-		dprintf_info(winsock, "\tasync_op = %04x (child %i)\n", 
+		TRACE(winsock, "\tasync_op = %04x (child %i)\n", 
 				handle, async_ctl.ws_aop->pid);
 
 		close(async_ctl.ws_aop->fd[1]);  /* write endpoint */
@@ -452,7 +456,7 @@
 	 : gethostbyaddr(async_ctl.rq.name,
 		 	 async_ctl.ilength, async_ctl.type);
 
-  dprintf_info(winsock,"DNS: got hostent for [%s]\n", async_ctl.rq.name );
+  TRACE(winsock,"DNS: got hostent for [%s]\n", async_ctl.rq.name );
 
   if( p_he ) /* convert to the Winsock format with internal pointers as offsets */
       size = WS_dup_he(pwsi, p_he, WS_DUP_OFFSET | 
@@ -476,7 +480,7 @@
 	 ? getprotobyname(async_ctl.rq.name)
 	 : getprotobynumber(async_ctl.type);
 
-  dprintf_info(winsock,"DNS: got protoent for [%s]\n", async_ctl.rq.name );
+  TRACE(winsock,"DNS: got protoent for [%s]\n", async_ctl.rq.name );
 
   if( p_pe ) /* convert to the Winsock format with internal pointers as offsets */
       size = WS_dup_pe(pwsi, p_pe, WS_DUP_OFFSET |
diff --git a/misc/wsprintf.c b/misc/wsprintf.c
index 043f5e9..fffa2e6 100644
--- a/misc/wsprintf.c
+++ b/misc/wsprintf.c
@@ -396,7 +396,7 @@
         maxlen -= len;
     }
     *p = 0;
-    dprintf_info(string,"%s\n",buffer);
+    TRACE(string,"%s\n",buffer);
     return (maxlen > 1) ? (INT32)(p - buffer) : -1;
 }
 
@@ -477,7 +477,7 @@
  */
 INT16 WINAPI wvsprintf16( LPSTR buffer, LPCSTR spec, LPCVOID args )
 {
-    dprintf_info(string,"wvsprintf16 for %p got:\n",buffer);
+    TRACE(string,"for %p got:\n",buffer);
     return wvsnprintf16( buffer, 0xffff, spec, args );
 }
 
@@ -487,7 +487,7 @@
  */
 INT32 WINAPI wvsprintf32A( LPSTR buffer, LPCSTR spec, va_list args )
 {
-    dprintf_info(string,"wvsprintf32A for %p got:\n",buffer);
+    TRACE(string,"for %p got:\n",buffer);
     return wvsnprintf32A( buffer, 0xffffffff, spec, args );
 }
 
@@ -497,7 +497,7 @@
  */
 INT32 WINAPI wvsprintf32W( LPWSTR buffer, LPCWSTR spec, va_list args )
 {
-    dprintf_info(string,"wvsprintf32W for %p got:\n",buffer);
+    TRACE(string,"for %p got:\n",buffer);
     return wvsnprintf32W( buffer, 0xffffffff, spec, args );
 }
 
@@ -511,7 +511,7 @@
     va_list valist;
     INT16 res;
 
-    dprintf_info(string,"wsprintf16 for %p got:\n",buffer);
+    TRACE(string,"for %p got:\n",buffer);
     va_start( valist, spec );
     /* Note: we call the 32-bit version, because the args are 32-bit */
     res = (INT16)wvsnprintf32A( buffer, 0xffffffff, spec, valist );
@@ -529,7 +529,7 @@
     VA_START16( valist );
     buffer = VA_ARG16( valist, SEGPTR );
     spec   = VA_ARG16( valist, SEGPTR );
-    dprintf_info(string,"WIN16_wsprintf16 got:\n");
+    TRACE(string,"got:\n");
     res = wvsnprintf16( (LPSTR)PTR_SEG_TO_LIN(buffer), 0xffff,
                         (LPCSTR)PTR_SEG_TO_LIN(spec), valist );
     VA_END16( valist );
@@ -545,7 +545,7 @@
     va_list valist;
     INT32 res;
 
-    dprintf_info(string,"wsprintf32A for %p got:\n",buffer);
+    TRACE(string,"for %p got:\n",buffer);
     va_start( valist, spec );
     res = wvsnprintf32A( buffer, 0xffffffff, spec, valist );
     va_end( valist );
@@ -561,7 +561,7 @@
     va_list valist;
     INT32 res;
 
-    dprintf_info(string,"wsprintf32W for %p\n",buffer);
+    TRACE(string,"wsprintf32W for %p\n",buffer);
     va_start( valist, spec );
     res = wvsnprintf32W( buffer, 0xffffffff, spec, valist );
     va_end( valist );