blob: 5e46c46fd0fc513d6ece6b322f996f29a6f7b233 [file] [log] [blame]
Alexandre Julliard234bc241994-12-10 13:02:28 +00001/*
Alexandre Julliarda0b2b1d1997-11-16 17:38:29 +00002 * Main initialization code
3 */
4
Alexandre Julliard751625e2000-12-12 00:50:19 +00005#include <locale.h>
Alexandre Julliard490a27e1994-06-08 13:57:50 +00006#include <stdlib.h>
7#include <sys/types.h>
8#include <sys/stat.h>
9#include <fcntl.h>
10#include <unistd.h>
Alexandre Julliard751625e2000-12-12 00:50:19 +000011#include <stdio.h>
Alexandre Julliard490a27e1994-06-08 13:57:50 +000012#include <string.h>
Alexandre Julliard751625e2000-12-12 00:50:19 +000013#ifdef MALLOC_DEBUGGING
14# include <malloc.h>
15#endif
Jeremy Whited3e22d92000-02-10 19:03:02 +000016#include "windef.h"
Marcus Meissner317af321999-02-17 13:51:06 +000017#include "wine/winbase16.h"
Alexandre Julliard4f8c37b1996-01-14 18:12:01 +000018#include "drive.h"
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000019#include "file.h"
Alexandre Julliard490a27e1994-06-08 13:57:50 +000020#include "options.h"
Alexandre Julliardf899ef02001-07-23 00:04:00 +000021#include "module.h"
Alexandre Julliarda099a551999-06-12 15:45:58 +000022#include "debugtools.h"
Alexandre Julliard37e95032001-07-19 00:39:09 +000023#include "wine/server.h"
Alexandre Julliardaf0bae51995-10-03 17:06:08 +000024
Alexandre Julliardb4459522000-04-15 21:00:55 +000025DEFAULT_DEBUG_CHANNEL(server);
Patrik Stridvallb4b9fae1999-04-19 14:56:29 +000026
Alexandre Julliard751625e2000-12-12 00:50:19 +000027extern void SHELL_LoadRegistry(void);
28
Alexandre Julliard594997c1995-04-30 10:05:20 +000029/***********************************************************************
Ulrich Weigandc75d0e11998-11-01 17:59:35 +000030 * Main initialisation routine
Alexandre Julliard594997c1995-04-30 10:05:20 +000031 */
Alexandre Julliarda3e0cfc2000-07-16 18:21:34 +000032BOOL MAIN_MainInit(void)
Alexandre Julliard594997c1995-04-30 10:05:20 +000033{
Alexandre Julliard751625e2000-12-12 00:50:19 +000034#ifdef MALLOC_DEBUGGING
35 char *trace;
36
37 mcheck(NULL);
38 if (!(trace = getenv("MALLOC_TRACE")))
39 MESSAGE( "MALLOC_TRACE not set. No trace generated\n" );
40 else
41 {
42 MESSAGE( "malloc trace goes to %s\n", trace );
43 mtrace();
44 }
45#endif
46 setbuf(stdout,NULL);
47 setbuf(stderr,NULL);
48 setlocale(LC_CTYPE,"");
Ulrich Weigand8a64b831999-10-23 14:15:33 +000049
Alexandre Julliard7e56f681996-01-31 19:02:28 +000050 /* Load the configuration file */
Alexandre Julliarda0b2b1d1997-11-16 17:38:29 +000051 if (!PROFILE_LoadWineIni()) return FALSE;
Alexandre Julliard7e56f681996-01-31 19:02:28 +000052
Alexandre Julliard4f8c37b1996-01-14 18:12:01 +000053 /* Initialise DOS drives */
Alexandre Julliarda0b2b1d1997-11-16 17:38:29 +000054 if (!DRIVE_Init()) return FALSE;
Alexandre Julliard4f8c37b1996-01-14 18:12:01 +000055
56 /* Initialise DOS directories */
Alexandre Julliarda0b2b1d1997-11-16 17:38:29 +000057 if (!DIR_Init()) return FALSE;
Alexandre Julliard808cb041995-08-17 17:11:36 +000058
Alexandre Julliard2fe57772000-01-25 01:40:27 +000059 /* Registry initialisation */
60 SHELL_LoadRegistry();
Alexandre Julliard2fe57772000-01-25 01:40:27 +000061
62 /* Initialize module loadorder */
Alexandre Julliardb9c9cdc2001-03-20 02:11:08 +000063 if (CLIENT_IsBootThread()) MODULE_InitLoadOrder();
64
65 /* Global boot finished, the rest is process-local */
66 CLIENT_BootDone( TRACE_ON(server) );
Alexandre Julliard2fe57772000-01-25 01:40:27 +000067
Ulrich Weigandc75d0e11998-11-01 17:59:35 +000068 return TRUE;
69}
Alexandre Julliarda0b2b1d1997-11-16 17:38:29 +000070
Alexandre Julliarda0b2b1d1997-11-16 17:38:29 +000071
72/***********************************************************************
Patrik Stridvall01d5e5b2001-07-02 19:59:40 +000073 * ExitKernel (KERNEL.2)
Ulrich Weigandc319c661999-05-22 16:18:36 +000074 *
75 * Clean-up everything and exit the Wine process.
76 *
77 */
78void WINAPI ExitKernel16( void )
79{
80 /* Do the clean-up stuff */
81
82 WriteOutProfiles16();
Ulrich Weigandad6657e1999-06-06 14:43:34 +000083 TerminateProcess( GetCurrentProcess(), 0 );
Ulrich Weigandc319c661999-05-22 16:18:36 +000084}
85