48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
/* Sample winestub.c file for compiling programs with libwine.so. */
|
|
|
|
#include <string.h>
|
|
#include "winbase.h"
|
|
#include "winuser.h"
|
|
#include "xmalloc.h"
|
|
|
|
extern int PASCAL WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
|
|
|
|
/* external declaration here because we don't want to depend on Wine headers */
|
|
#ifdef __cplusplus
|
|
extern "C" HINSTANCE MAIN_WinelibInit( int *argc, char *argv[] );
|
|
#else
|
|
extern HINSTANCE MAIN_WinelibInit( int *argc, char *argv[] );
|
|
#endif
|
|
|
|
/* Most Windows C/C++ compilers use something like this to */
|
|
/* access argc and argv globally: */
|
|
int _ARGC;
|
|
char **_ARGV;
|
|
|
|
int main( int argc, char *argv [] )
|
|
{
|
|
HINSTANCE hInstance;
|
|
LPSTR lpszCmdParam;
|
|
int i, len = 0, retv;
|
|
_ARGC = argc;
|
|
_ARGV = (char **)argv;
|
|
|
|
if (!(hInstance = MAIN_WinelibInit( &argc, argv ))) return 0;
|
|
|
|
/* Alloc szCmdParam */
|
|
for (i = 1; i < argc; i++) len += strlen(argv[i]) + 1;
|
|
lpszCmdParam = (LPSTR) xmalloc(len + 1);
|
|
/* Concatenate arguments */
|
|
if (argc > 1) strcpy(lpszCmdParam, argv[1]);
|
|
else lpszCmdParam[0] = '\0';
|
|
for (i = 2; i < argc; i++) strcat(strcat(lpszCmdParam, " "), argv[i]);
|
|
|
|
retv = WinMain (hInstance, /* hInstance */
|
|
0, /* hPrevInstance */
|
|
lpszCmdParam, /* lpszCmdParam */
|
|
SW_NORMAL); /* nCmdShow */
|
|
|
|
ExitProcess( retv );
|
|
return retv;
|
|
}
|