2006-06-07 00:07:39 +00:00
|
|
|
// this is a wrapper to launch EDuke32 properly from Dukester X 1.5
|
2006-05-01 05:03:44 +00:00
|
|
|
// gcc -o duke3d_w32.exe wrapper.c
|
|
|
|
|
|
|
|
#include <windows.h>
|
2006-05-01 06:30:33 +00:00
|
|
|
#include <string.h>
|
2006-05-01 05:03:44 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
#define ISWS(x) ((x == ' ') || (x == '\t') || (x == '\r') || (x == '\n'))
|
|
|
|
|
|
|
|
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
|
|
|
|
{
|
2006-05-01 22:49:09 +00:00
|
|
|
int i=0,j=0;
|
2006-05-01 07:38:13 +00:00
|
|
|
char CmdLine[1024], sCmdLine[1024], szFileName[255];
|
2006-05-01 05:03:44 +00:00
|
|
|
LPTSTR szCmdLine;
|
|
|
|
|
|
|
|
FILE * fp=fopen("wrapper.log","w");
|
|
|
|
STARTUPINFO si;
|
|
|
|
PROCESS_INFORMATION pi;
|
|
|
|
|
2006-05-01 06:52:06 +00:00
|
|
|
strcpy(sCmdLine,lpCmdLine);
|
2006-06-07 00:07:39 +00:00
|
|
|
szFileName[0] = '\0';
|
2006-05-01 07:38:13 +00:00
|
|
|
|
2006-05-01 22:49:09 +00:00
|
|
|
while(sCmdLine[i] == ' ') i++;
|
2006-05-01 07:38:13 +00:00
|
|
|
while(i < (signed)strlen(sCmdLine))
|
2006-05-01 05:03:44 +00:00
|
|
|
{
|
2006-05-01 06:52:06 +00:00
|
|
|
if(sCmdLine[i] == '-' && sCmdLine[i+1] == 'n' && sCmdLine[i+2] == 'e' && sCmdLine[i+3] == 't')
|
2006-05-01 05:03:44 +00:00
|
|
|
{
|
2006-05-01 07:38:13 +00:00
|
|
|
CmdLine[i-1] = '\0';
|
2006-05-01 22:49:09 +00:00
|
|
|
i += 5;
|
2006-05-01 07:38:13 +00:00
|
|
|
while(sCmdLine[i] != ' ' && i < (signed)strlen(sCmdLine))
|
2006-05-01 05:03:44 +00:00
|
|
|
{
|
2006-05-01 06:52:06 +00:00
|
|
|
szFileName[j] = sCmdLine[i];
|
2006-05-01 06:30:33 +00:00
|
|
|
j++,i++;
|
2006-05-01 05:03:44 +00:00
|
|
|
}
|
2006-05-01 07:38:13 +00:00
|
|
|
szFileName[j] = '\0';
|
2006-05-01 05:03:44 +00:00
|
|
|
break;
|
|
|
|
}
|
2006-05-01 06:52:06 +00:00
|
|
|
else CmdLine[i] = sCmdLine[i];
|
2006-05-01 07:38:13 +00:00
|
|
|
i++;
|
2006-06-07 00:07:39 +00:00
|
|
|
CmdLine[i] = '\0';
|
2006-05-01 05:03:44 +00:00
|
|
|
}
|
2006-06-07 01:29:17 +00:00
|
|
|
|
2006-06-07 00:07:39 +00:00
|
|
|
if(szFileName[0] != '\0' && CmdLine[0] != '\0') sprintf(sCmdLine,"eduke32.exe %s -rmnet %s",CmdLine,szFileName);
|
|
|
|
else if(CmdLine[0] != '\0') sprintf(sCmdLine,"eduke32.exe %s",CmdLine);
|
2006-05-01 22:49:09 +00:00
|
|
|
else sprintf(sCmdLine,"eduke32.exe");
|
2006-05-01 06:30:33 +00:00
|
|
|
|
2006-05-01 05:03:44 +00:00
|
|
|
szCmdLine = sCmdLine;
|
2006-05-01 06:30:33 +00:00
|
|
|
|
2006-06-07 00:07:39 +00:00
|
|
|
fprintf(fp,"EDuke32 wrapper for Dukester X v0.02\n");
|
2006-05-01 06:52:06 +00:00
|
|
|
fprintf(fp,"Copyright (c) 2006 EDuke32 team\n\n");
|
|
|
|
fprintf(fp,"Args passed to wrapper: %s\n",lpCmdLine);
|
|
|
|
fprintf(fp,"Final command line: %s",szCmdLine);
|
2006-05-01 06:30:33 +00:00
|
|
|
|
2006-05-01 05:03:44 +00:00
|
|
|
fclose(fp);
|
|
|
|
|
|
|
|
ZeroMemory(&si,sizeof(si));
|
|
|
|
ZeroMemory(&pi,sizeof(pi));
|
|
|
|
si.cb = sizeof(si);
|
|
|
|
|
2006-05-04 03:14:49 +00:00
|
|
|
printf("Launching EDuke32...\n\nPlease leave this window open for the entire duration of your game.");
|
|
|
|
|
2006-05-01 05:03:44 +00:00
|
|
|
if (!CreateProcess(NULL,szCmdLine,NULL,NULL,0,0,NULL,NULL,&si,&pi)) {
|
|
|
|
MessageBox(0,"Failed to start eduke32.exe.", "Failure starting game", MB_OK|MB_ICONSTOP);
|
|
|
|
return 1;
|
2006-05-01 07:38:13 +00:00
|
|
|
} else WaitForSingleObject(pi.hProcess,INFINITE);
|
|
|
|
|
2006-05-01 05:03:44 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|