126 lines
2.6 KiB
C
126 lines
2.6 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 "neexe.h"
|
||
#include "segmem.h"
|
||
#include "dos_fs.h"
|
||
#include "dlls.h"
|
||
#include "library.h"
|
||
#include "windows.h"
|
||
#include "wineopts.h"
|
||
#include "dos_fs.h"
|
||
#include "task.h"
|
||
#include "prototypes.h"
|
||
#include "options.h"
|
||
#include "if1632.h"
|
||
#include "ne_image.h"
|
||
#include "pe_image.h"
|
||
#include "stddebug.h"
|
||
#include "debug.h"
|
||
|
||
char **Argv;
|
||
int Argc;
|
||
HINSTANCE hSysRes, hInstMain;
|
||
unsigned short WIN_StackSize;
|
||
unsigned short WIN_HeapSize;
|
||
|
||
/**********************************************************************
|
||
* myerror
|
||
*/
|
||
void
|
||
myerror(const char *s)
|
||
{
|
||
if (s == NULL)
|
||
perror("wine");
|
||
else
|
||
fprintf(stderr, "wine: %s\n", s);
|
||
|
||
exit(1);
|
||
}
|
||
|
||
#ifndef WINELIB
|
||
/**********************************************************************
|
||
* main
|
||
*/
|
||
int _WinMain(int argc, char **argv)
|
||
{
|
||
char *p, filename[256];
|
||
HANDLE hTaskMain;
|
||
|
||
struct w_files *wpnt;
|
||
#ifdef WINESTAT
|
||
char * cp;
|
||
#endif
|
||
|
||
Argc = argc - 1;
|
||
Argv = argv + 1;
|
||
|
||
if (strchr(Argv[0], '\\') || strchr(Argv[0],'/')) {
|
||
for (p = Argv[0] + strlen(Argv[0]); *p != '\\' && *p !='/'; p--)
|
||
/* NOTHING */;
|
||
|
||
strncpy(filename, Argv[0], p - Argv[0]);
|
||
filename[p - Argv[0]] = '\0';
|
||
strcat(WindowsPath, ";");
|
||
if (strchr(filename, '/'))
|
||
strcat(WindowsPath, DOS_GetDosFileName(filename));
|
||
else
|
||
strcat(WindowsPath, filename);
|
||
}
|
||
|
||
if ((hInstMain = LoadImage(Argv[0], EXE, 1)) < 32) {
|
||
fprintf(stderr, "wine: can't load %s!.\n", Argv[0]);
|
||
exit(1);
|
||
}
|
||
hTaskMain = CreateNewTask(hInstMain, 0);
|
||
dprintf_dll(stddeb,"_WinMain // hTaskMain=%04X hInstMain=%04X !\n",
|
||
hTaskMain, hInstMain);
|
||
|
||
GetPrivateProfileString("wine", "SystemResources", "sysres.dll",
|
||
filename, sizeof(filename), WINE_INI);
|
||
|
||
hSysRes = LoadImage(filename, DLL, 0);
|
||
if (hSysRes < 32) {
|
||
fprintf(stderr, "wine: can't load %s!.\n", filename);
|
||
exit(1);
|
||
} else
|
||
dprintf_dll(stddeb,"System Resources Loaded // hSysRes='%04X'\n",
|
||
hSysRes);
|
||
|
||
|
||
#ifdef WINESTAT
|
||
cp = strrchr(argv[0], '/');
|
||
if(!cp) cp = argv[0];
|
||
else cp++;
|
||
if(strcmp(cp,"winestat") == 0) {
|
||
winestat();
|
||
exit(0);
|
||
};
|
||
#endif
|
||
|
||
/*
|
||
* Initialize signal handling.
|
||
*/
|
||
init_wine_signals();
|
||
|
||
wpnt = GetFileInfo(hInstMain);
|
||
if (Options.debug)
|
||
wine_debug(0, NULL);
|
||
|
||
if (wpnt->ne)
|
||
return(NE_StartProgram(wpnt));
|
||
else
|
||
return(PE_StartProgram(wpnt));
|
||
}
|
||
|
||
#endif /* #ifndef WINELIB */
|