Made the server listen for new clients on a Unix socket in
$HOME/.wine. Newly started wine processes now attach to an existing
server if one is running.

diff --git a/loader/main.c b/loader/main.c
index 9be7476..9d6b9ad 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -67,24 +67,27 @@
     /* Parse command line arguments */
     MAIN_WineInit( argc, argv );
 
-    /* Set server debug level */
-    CLIENT_SetDebug( TRACE_ON(server) );
-
     /* Load the configuration file */
     if (!PROFILE_LoadWineIni()) return FALSE;
 
-    /* Initialize module loadorder */
-    if (!MODULE_InitLoadOrder()) return FALSE;
-
-      /* Initialize DOS memory */
-    if (!DOSMEM_Init(0)) return FALSE;
-
     /* Initialise DOS drives */
     if (!DRIVE_Init()) return FALSE;
 
     /* Initialise DOS directories */
     if (!DIR_Init()) return FALSE;
 
+    /* Registry initialisation */
+    SHELL_LoadRegistry();
+    
+    /* Global boot finished, the rest is process-local */
+    CLIENT_BootDone( TRACE_ON(server) );
+
+    /* Initialize module loadorder */
+    if (!MODULE_InitLoadOrder()) return FALSE;
+
+    /* Initialize DOS memory */
+    if (!DOSMEM_Init(0)) return FALSE;
+
     /* Initialize event handling */
     if (!EVENT_Init()) return FALSE;
 
@@ -94,9 +97,6 @@
     /* Initialize IO-port permissions */
     IO_port_init();
 
-    /* registry initialisation */
-    SHELL_LoadRegistry();
-    
     /* Read DOS config.sys */
     if (!DOSCONF_ReadConfig()) return FALSE;