Alexandre Julliard 8664b890b0 Release 960405
Fri Apr  5 15:22:55 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [controls/button.c] [controls/static.c]
	Changes to use WND * wherever possible.

	* [debugger/dbg.y] [debugger/debug.l]
	Added 'info module' and 'walk module' commands.

	* [if1632/Makefile.in] [if1632/relay.c] [tools/build.c]
	Added assembly code generation to call from Wine into 32-bit code.
	Changed all 'call32' references in 'callfrom16' to avoid confusion
	with Win32 routines.

	* [include/callback.h]
	Added prototypes for 32-bit callbacks.

	* [loader/module.c] [if1632/relay32.c] [tools/build.c]
	Unified 16- and 32-bit modules. The fake module for 32-bit DLLs is
	now generated by the build program.

	* [include/module.h]
	Added extra info to NE_MODULE for Win32 modules to point to the PE
	module data.

	* [include/pe_image.h] [loader/pe_image.c] [win32/resource.c]
	Removed the wine_files list. The PE data for a module can now be
	accessed with the NE_WIN32_MODULE macro.

	* [loader/signal.c] [miscemu/instr.c]
	Don't start the BIOS timer at startup, but only after an access to
	the 0x40 segment.

	* [memory/local.c]
	Changed LOCAL_Lock() to return a 32-bit pointer.

	* [misc/main.c] [include/dlls.h]
	Some built-in DLLs (like KERNEL) can no longer be disabled from
 	the command-line.
	
Thu Apr  4 19:54:39 1996  Keith Reynolds <keithr@sco.COM>

	* [*/*]
	A lot of small changes to support SCO OpenServer 5.

Thu Apr  4 15:38:13 1996  Frans van Dorsselaer <dorssel@rulhm1.leidenuniv.nl>

	* [controls/edit.c]
	Fixed GetKeyState() call to use 0x8000 convention.

	* [include/windows.h]
	Added undocumented messages EM_SCROLL and EM_GETTHUMB.

Thu Apr  4 09:52:52 1996  John Harvey <john@division.co.uk>

	* [if1632/except.S]
	Modified code to assemble on unixware.

Wed Apr  3 09:38:26 1996  Juergen Marquardt <marqu@lunar.advantest.de>

	* [objects/font.c]
	Implementation of a second font cache which will be updated
	dynamically.

Mon Apr  1 16:47:40 1996  Robert Pouliot <krynos@qbc.clic.net>

	* [resources/sysres_Cz.rc] [resources/sysres_Da.rc]
	  [resources/sysres_De.rc] [resources/sysres_Eo.rc]
	  [resources/sysres_Es.rc] [resources/sysres_Fi.rc]
	  [resources/sysres_No.rc] [resources/TODO]
	Updated FIND_TEXT and REPLACE_TEXT to work like the English version.
1996-04-05 14:58:24 +00:00

169 lines
3.8 KiB
C

/*
static char RCSId[] = "$Id: wine.c,v 1.2 1993/07/04 04:04:21 root Exp root $";
static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include "windows.h"
#include "alias.h"
#include "module.h"
#include "task.h"
#include "selectors.h"
#include "comm.h"
#include "user.h"
#include "win.h"
#include "menu.h"
#include "kernel32.h"
#include "atom.h"
#include "dialog.h"
#include "directory.h"
#include "drive.h"
#include "queue.h"
#include "syscolor.h"
#include "sysmetrics.h"
#include "gdi.h"
#include "debugger.h"
#include "dlls.h"
#include "miscemu.h"
#include "neexe.h"
#include "options.h"
#include "spy.h"
#include "task.h"
#include "dce.h"
#include "pe_image.h"
#include "stddebug.h"
#include "debug.h"
void init_wine_signals(void);
/***********************************************************************
* Main initialisation routine
*/
int MAIN_Init(void)
{
extern BOOL RELAY_Init(void);
int queueSize;
/* Load the configuration file */
if (!PROFILE_LoadWineIni()) return 0;
/* Initialize message spying */
if (!SPY_Init()) return 0;
#ifndef WINELIB
/* Initialize relay code */
if (!RELAY_Init()) return 0;
#endif
/* Create built-in modules */
if (!MODULE_Init()) return 0;
/* Initialise DOS drives */
if (!DRIVE_Init()) return 0;
/* Initialise DOS directories */
if (!DIR_Init()) return 0;
/* Initialize tasks */
if (!TASK_Init()) return 0;
/* Initialize communications */
COMM_Init();
#ifndef WINELIB
/* Initialize interrupt vectors */
if (!INT_Init()) return 0;
/* Initialize DOS memory */
if (!DOSMEM_Init()) return 0;
/* Initialize signal handling */
init_wine_signals();
/* Initialize the DOS memory */
if (!INT21_Init()) return 0;
/* Create USER heap */
if (!USER_HeapInit()) return 0;
#endif
/* Global atom table initialisation */
if (!ATOM_Init()) return 0;
/* GDI initialisation */
if (!GDI_Init()) return 0;
/* Initialise window procedures aliases */
if (!ALIAS_Init()) return 0;
/* Initialize system colors and metrics*/
SYSMETRICS_Init();
SYSCOLOR_Init();
/* Create the DCEs */
DCE_Init();
/* Initialize dialog manager */
if (!DIALOG_Init()) return 0;
/* Initialize menus */
if (!MENU_Init()) return 0;
/* Initialize Win32 data structures */
if (!KERN32_Init()) return 0;
/* Create system message queue */
queueSize = GetProfileInt( "windows", "TypeAhead", 120 );
if (!QUEUE_CreateSysMsgQueue( queueSize )) return 0;
/* Set double click time */
SetDoubleClickTime( GetProfileInt( "windows", "DoubleClickSpeed", 452 ) );
return 1;
}
#ifndef WINELIB
/**********************************************************************
* main
*/
int _WinMain(int argc, char **argv)
{
int i;
HANDLE handle;
if (!MAIN_Init()) return 0;
for (i = 1; i < argc; i++)
{
if ((handle = WinExec( argv[i], SW_SHOWNORMAL )) < 32)
{
fprintf(stderr, "wine: can't exec '%s': ", argv[i]);
switch (handle)
{
case 2: fprintf( stderr, "file not found\n" ); break;
case 11: fprintf( stderr, "invalid exe file\n" ); break;
case 21: fprintf( stderr, "win32 executable\n" ); break;
default: fprintf( stderr, "error=%d\n", handle ); break;
}
exit(1);
}
}
if (Options.debug) DEBUG_SetBreakpoints( TRUE ); /* Setup breakpoints */
Yield(); /* Start the first task */
fprintf( stderr, "WinMain: Should never happen: returned from Yield()\n" );
return 0;
}
#endif /* #ifndef WINELIB */