Made msacm32 really load ACM drivers.

diff --git a/dlls/msacm32/internal.c b/dlls/msacm32/internal.c
index e1ad05f..8b2c7e5 100644
--- a/dlls/msacm32/internal.c
+++ b/dlls/msacm32/internal.c
@@ -1,7 +1,10 @@
+/* -*- tab-width: 8; c-basic-offset: 4 -*- */
+
 /*
  *      MSACM32 library
  *
  *      Copyright 1998  Patrik Stridvall
+ *		  1999	Eric Pouech
  */
 
 #include <string.h>
@@ -14,8 +17,11 @@
 #include "mmsystem.h"
 #include "msacm.h"
 #include "msacmdrv.h"
+#include "wineacm.h"
 #include "debugtools.h"
 
+DEFAULT_DEBUG_CHANNEL(msacm)	
+
 /**********************************************************************/
 
 HANDLE MSACM_hHeap = (HANDLE) NULL;
@@ -25,89 +31,66 @@
 /***********************************************************************
  *           MSACM_RegisterDriver32() 
  */
-PWINE_ACMDRIVERID MSACM_RegisterDriver(
-  LPSTR pszDriverAlias, LPSTR pszFileName,
-  PWINE_ACMLOCALDRIVER pLocalDriver)
-{
-  PWINE_ACMDRIVERID padid;
-  padid = (PWINE_ACMDRIVERID) HeapAlloc(
-    MSACM_hHeap, 0, sizeof(WINE_ACMDRIVERID)
-  );
-  padid->pszDriverAlias = 
-    HEAP_strdupA(MSACM_hHeap, 0, pszDriverAlias);
-  padid->pszFileName = 
-    HEAP_strdupA(MSACM_hHeap, 0, pszFileName);
-  padid->pACMLocalDriver = pLocalDriver; 
-  padid->bEnabled = TRUE;
-  padid->pACMDriver = NULL;
-  padid->pNextACMDriverID = NULL;
-  padid->pPreviousACMDriverID = 
-    MSACM_pLastACMDriverID;
-  MSACM_pLastACMDriverID = padid;
-  if(!MSACM_pFirstACMDriverID)
-    MSACM_pFirstACMDriverID = padid;
+PWINE_ACMDRIVERID MSACM_RegisterDriver(LPSTR pszDriverAlias, LPSTR pszFileName,
+				       HINSTANCE hinstModule)
+{ 
+    PWINE_ACMDRIVERID padid;
 
-  return padid;
+    TRACE("('%s', '%s', 0x%08x)\n", pszDriverAlias, pszFileName, hinstModule);
+
+    padid = (PWINE_ACMDRIVERID) HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVERID));
+    padid->pszDriverAlias = HEAP_strdupA(MSACM_hHeap, 0, pszDriverAlias);
+    padid->pszFileName = HEAP_strdupA(MSACM_hHeap, 0, pszFileName);
+    padid->hInstModule = hinstModule;
+    padid->bEnabled = TRUE;
+    padid->pACMDriver = NULL;
+    padid->pNextACMDriverID = NULL;
+    padid->pPreviousACMDriverID = MSACM_pLastACMDriverID;
+    if (MSACM_pLastACMDriverID)
+	MSACM_pLastACMDriverID->pNextACMDriverID = padid;
+    MSACM_pLastACMDriverID = padid;
+    if (!MSACM_pFirstACMDriverID)
+	MSACM_pFirstACMDriverID = padid;
+    
+    return padid;
 }
 
 /***********************************************************************
  *           MSACM_RegisterAllDrivers32() 
  */
-void MSACM_RegisterAllDrivers()
+void MSACM_RegisterAllDrivers(void)
 {
-  PWINE_ACMBUILTINDRIVER pbd;
-  LPSTR pszBuffer;
-  DWORD dwBufferLength;
-
-  /* FIXME 
-   *  What if the user edits system.ini while the program is running?
-   *  Does Windows handle that?
-   */
-  if(!MSACM_pFirstACMDriverID)
-    return;
-
-  /* FIXME: Do not work! How do I determine the section length? */
-  dwBufferLength = 
-    GetPrivateProfileSectionA("drivers32", NULL, 0, "system.ini");
-
-  pszBuffer = (LPSTR) HeapAlloc(
-    MSACM_hHeap, 0, dwBufferLength
-  );
-  if(GetPrivateProfileSectionA(
-    "drivers32", pszBuffer, dwBufferLength, "system.ini"))
-    {
-      char *s = pszBuffer;
-      while(*s)
-	{
-	  if(!lstrncmpiA("MSACM.", s, 6))
-	    {
-	      char *s2 = s;
-	      while(*s2 != '\0' && *s2 != '=') s2++;
-	      if(*s2)
-		{
-		  *s2++='\0';
-		  MSACM_RegisterDriver(s, s2, NULL);
+    LPSTR pszBuffer;
+    DWORD dwBufferLength;
+    
+    /* FIXME 
+     *  What if the user edits system.ini while the program is running?
+     *  Does Windows handle that?
+     */
+    if (MSACM_pFirstACMDriverID)
+	return;
+    
+    /* FIXME: Do not work! How do I determine the section length? */
+    dwBufferLength = 1024;
+/* EPP 	GetPrivateProfileSectionA("drivers32", NULL, 0, "system.ini"); */
+    
+    pszBuffer = (LPSTR) HeapAlloc(MSACM_hHeap, 0, dwBufferLength);
+    if (GetPrivateProfileSectionA("drivers32", pszBuffer, dwBufferLength, "system.ini")) {
+	char* s = pszBuffer;
+	while (*s) {
+	    if (!lstrncmpiA("MSACM.", s, 6)) {
+		char *s2 = s;
+		while (*s2 != '\0' && *s2 != '=') s2++;
+		if (*s2) {
+		    *s2++ = '\0';
+		    MSACM_RegisterDriver(s, s2, 0);
 		}
 	    }  
-	  s += lstrlenA(s) + 1; /* Either next char or \0 */
+	    s += lstrlenA(s) + 1; /* Either next char or \0 */
 	}
     }
-
-  /* FIXME
-   *   Check if any of the builtin driver was added
-   *   when the external drivers was. 
-   */
-
-  pbd = MSACM_BuiltinDrivers;
-  while(pbd->pszDriverAlias)
-    {
-      PWINE_ACMLOCALDRIVER pld;
-      pld = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMLOCALDRIVER));
-      pld->pfnDriverProc = pbd->pfnDriverProc;
-      MSACM_RegisterDriver(pbd->pszDriverAlias, NULL, pld);
-      pbd++;
-    }
-   HeapFree(MSACM_hHeap, 0, pszBuffer);
+    
+    HeapFree(MSACM_hHeap, 0, pszBuffer);
 }
 
 /***********************************************************************
@@ -115,28 +98,31 @@
  */
 PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p)
 {
-  PWINE_ACMDRIVERID pNextACMDriverID;
+    PWINE_ACMDRIVERID pNextACMDriverID;
+    
+    if (p->pACMDriver)
+	acmDriverClose((HACMDRIVER) p->pACMDriver, 0);
+    
+    if (p->pszDriverAlias)
+	HeapFree(MSACM_hHeap, 0, p->pszDriverAlias);
+    if (p->pszFileName)
+	HeapFree(MSACM_hHeap, 0, p->pszFileName);
+    
+    if (p == MSACM_pFirstACMDriverID)
+	MSACM_pFirstACMDriverID = p->pNextACMDriverID;
+    if (p == MSACM_pLastACMDriverID)
+	MSACM_pLastACMDriverID = p->pPreviousACMDriverID;
 
-  if(p->pACMDriver)
-    acmDriverClose((HACMDRIVER) p->pACMDriver, 0);
-
-  if(p->pszDriverAlias)
-    HeapFree(MSACM_hHeap, 0, p->pszDriverAlias);
-  if(p->pszFileName)
-    HeapFree(MSACM_hHeap, 0, p->pszFileName);
-  if(p->pACMLocalDriver)
-    HeapFree(MSACM_hHeap, 0, p->pACMLocalDriver);
-
-  if(p->pPreviousACMDriverID)
-    p->pPreviousACMDriverID->pNextACMDriverID = p->pNextACMDriverID;
-  if(p->pNextACMDriverID)
-    p->pNextACMDriverID->pPreviousACMDriverID = p->pPreviousACMDriverID;
-
-  pNextACMDriverID = p->pNextACMDriverID;
-
-  HeapFree(MSACM_hHeap, 0, p);
-
-  return pNextACMDriverID;
+    if (p->pPreviousACMDriverID)
+	p->pPreviousACMDriverID->pNextACMDriverID = p->pNextACMDriverID;
+    if (p->pNextACMDriverID)
+	p->pNextACMDriverID->pPreviousACMDriverID = p->pPreviousACMDriverID;
+    
+    pNextACMDriverID = p->pNextACMDriverID;
+    
+    HeapFree(MSACM_hHeap, 0, p);
+    
+    return pNextACMDriverID;
 }
 
 /***********************************************************************
@@ -144,10 +130,11 @@
  * FIXME
  *   Where should this function be called?
  */
-void MSACM_UnregisterAllDrivers()
+void MSACM_UnregisterAllDrivers(void)
 {
-  PWINE_ACMDRIVERID p = MSACM_pFirstACMDriverID;
-  while(p) p = MSACM_UnregisterDriver(p);
+    PWINE_ACMDRIVERID p;
+
+    for (p = MSACM_pFirstACMDriverID; p; p = MSACM_UnregisterDriver(p));
 }
 
 /***********************************************************************
@@ -155,7 +142,7 @@
  */
 PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID)
 {
-  return (PWINE_ACMDRIVERID) hDriverID;
+    return (PWINE_ACMDRIVERID)hDriverID;
 }
 
 /***********************************************************************
@@ -163,7 +150,7 @@
  */
 PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver)
 {
-  return (PWINE_ACMDRIVER) hDriver;
+    return (PWINE_ACMDRIVER)hDriver;
 }
 
 /***********************************************************************
@@ -171,32 +158,7 @@
  */
 PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj)
 {
-  return (PWINE_ACMOBJ) hObj;
+    return (PWINE_ACMOBJ)hObj;
 }
 
-/***********************************************************************
- *           MSACM_OpenDriverProc32
- * FIXME
- *  This function should be integrated with OpenDriver,
- *  renamed and moved there.
- */
-HDRVR MSACM_OpenDriverProc(DRIVERPROC pfnDriverProc)
-{
-#if 0
-  LPDRIVERITEMA pDrvr;
-
-  /* FIXME: This is a very bad solution */
-  pDrvr = (LPDRIVERITEMA) HeapAlloc(MSACM_hHeap, HEAP_ZERO_MEMORY, sizeof(DRIVERITEMA));
-  pDrvr->count = 1;
-  pDrvr->driverproc = pfnDriverProc;
-  
-  /* FIXME: Send DRV_OPEN among others to DriverProc */
-
-  return (HDRVR) pDrvr;
-#else
-  return (HDRVR) 0;
-#endif
-}
-
-