Release 940804

Thu Aug  4 07:18:02 1994  Michael Patra  <micky@marie.physik.tu-berlin.de>

        * [windows/message.c]
	Implemented WaitMessage() (USER.112).

        * [if1632/user.spec]
	Added WaitMessage.

	* [windows/defwnd.c]
	WM_ERASEBKGND: Added support for hbrBackground=COLOR_xxx.

   	* [miscemu/int{13,21,2a}.c]
        * [miscemu/Imakefile]
	* [signal/loader.c]
	Added a few basic disk information and diagnostic functions to
	prevent programs using this function from crashing. All drives
	are claimed to be remote ones, so direct I/O isn't allowed.

	* [controls/edit.c]
	EDIT_WriteText(): Added code to correctly erase the remaining space
	of the edit-control if the size of the control has changed sinced it's
	creation.

Tue Jul 26 22:05:54 MET DST 1994 Erik Bos <erik@hacktic.nl>

	* [if1632/mouse.spec]
	Added mouse.dll entry, no functions.

	* [loader/resource.c]
	Bug fix in AccessResource(). 

	* [misc/keyboard.c], added [include/keyboard.h]
	Changed functions to return more useful values.

	* [windows/dialog.c]
	Hacked DIALOG_GetControl() to support resources which
	have 0xff00 - 0xffff as id. ** Needs to be done properly by
	someone who knows the NE fileformat **

Jul 29, 94 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)

	* [windows/event.c]
	Add new stub for EnableHGardwareInput() function.

	* [windows/message.c]
	Add coding for HWND_BROADCAST in PostMessage().

	* [misc/file.c]
	Add coding for OpenFile() also search in WindowPaths.

	* [misc/mmsystem.c]
	* [misc/audio.c]
	* [misc/mmaux.c]
	* [misc/mcicda.c]
	Change #include "linux/soundcard.h" by #include "sys/soundcard.h"
	Add coding in MMIO functions. Now, mmioDescend() can find WAV chunks.
	SndPlaySound & MCI_ELEMENT now use MMIO and adjust to proper formats.
diff --git a/misc/driver.c b/misc/driver.c
index 28888b5..436daf7 100644
--- a/misc/driver.c
+++ b/misc/driver.c
@@ -15,6 +15,26 @@
 
 LPDRIVERITEM lpDrvItemList = NULL;
 
+void LoadStartupDrivers()
+{
+	HDRVR	hDrv;
+	char	str[256];
+	LPSTR	ptr	= str;
+	LPSTR	file = "SYSTEM.INI";
+	if (GetPrivateProfileString("drivers", NULL, 
+		"", str, sizeof(str), file) < 2) {
+		printf("LoadStartupDrivers // can't find drivers section in '%s'\n", file);
+		return;
+		}
+	while(strlen(ptr) != 0) {
+		printf("LoadStartupDrivers // str='%s'\n", ptr);
+		hDrv = OpenDriver(ptr, "drivers", 0L);
+		printf("LoadStartupDrivers // hDrv=%04X\n", hDrv);
+		ptr += strlen(ptr) + 1;
+		}
+	printf("LoadStartupDrivers // end of list !\n");
+}
+
 /**************************************************************************
  *				SendDriverMessage		[USER.251]
  */
@@ -48,12 +68,13 @@
 	lpnewdrv = (LPDRIVERITEM) GlobalLock(hDrvr);
 	if (lpnewdrv == NULL) return 0;
 	lpnewdrv->dis.length = sizeof(DRIVERINFOSTRUCT);
-	lpnewdrv->dis.hModule = LoadImage("DrvName", DLL, 0);
+	lpnewdrv->dis.hModule = 0;
+/*	lpnewdrv->dis.hModule = LoadImage(DrvName, DLL, 0);
 	if (lpnewdrv->dis.hModule == 0) {
 		GlobalUnlock(hDrvr);
 		GlobalFree(hDrvr);
 		return 0;
-		}
+		} */
 	lpnewdrv->dis.hDriver = hDrvr;
 	strcpy(lpnewdrv->dis.szAliasName, lpDriverName);
 	lpnewdrv->count = 0;
@@ -165,18 +186,30 @@
 	LPDRIVERITEM	lpdrv;
 	HDRVR			hRetDrv = 0;
 	printf("GetNextDriver(%04X, %08X);\n", hDrvr, dwFlags);
+	if (hDrvr == 0) {
+		if (lpDrvItemList == NULL) {
+			printf("GetNextDriver // drivers list empty !\n");
+			LoadStartupDrivers();
+			if (lpDrvItemList == NULL) return 0;
+			}
+		printf("GetNextDriver // return first %04X !\n", 
+							lpDrvItemList->dis.hDriver);
+		return lpDrvItemList->dis.hDriver;
+		}
 	lpdrv = (LPDRIVERITEM) GlobalLock(hDrvr);
 	if (lpdrv != NULL) {
-		if (dwFlags & GND_REVERSE) 
+		if (dwFlags & GND_REVERSE) {
 			if (lpdrv->lpPrevItem) 
 				hRetDrv = ((LPDRIVERITEM)lpdrv->lpPrevItem)->dis.hDriver;
-		if (dwFlags & GND_FORWARD) 
+			}
+		else {
 			if (lpdrv->lpNextItem) 
 				hRetDrv = ((LPDRIVERITEM)lpdrv->lpNextItem)->dis.hDriver;
+			}
 		GlobalUnlock(hDrvr);
 		}
+	printf("GetNextDriver // return %04X !\n", hRetDrv);
 	return hRetDrv;
-	
 }