diff options
Diffstat (limited to 'libwinmain')
-rw-r--r-- | libwinmain/makefile | 3 | ||||
-rw-r--r-- | libwinmain/winmain.c | 55 |
2 files changed, 58 insertions, 0 deletions
diff --git a/libwinmain/makefile b/libwinmain/makefile new file mode 100644 index 000000000..80292d3d3 --- /dev/null +++ b/libwinmain/makefile @@ -0,0 +1,3 @@ +LIBRARY = libwinmain + +CSRCS = winmain.c diff --git a/libwinmain/winmain.c b/libwinmain/winmain.c new file mode 100644 index 000000000..899a56ba9 --- /dev/null +++ b/libwinmain/winmain.c @@ -0,0 +1,55 @@ +#include <windows.h> + +int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) +{ + int argc=1; + char ProgramName[255]; + #define MAXNRARGS 100 + char *argv[MAXNRARGS]; + char *pTmp; + char *pProgramName; + + GetModuleFileName(NULL,ProgramName,255); + pTmp=strrchr(ProgramName,'\\'); + if (pTmp) + pProgramName=pTmp+1; + else + pProgramName=ProgramName; + pTmp=strrchr(pProgramName,'.'); + if (pTmp) + *pTmp=0; + argv[0]=pProgramName; + + pTmp=lpCmdLine; + while (*pTmp && argc<MAXNRARGS-1) + { + char *pEnd; + if (*pTmp=='"') + { + pTmp++; + pEnd=strchr(pTmp,'"'); + } + else if (*pTmp!=' ') + { + pEnd=strchr(pTmp,' '); + } + else + { + pTmp++; + continue; + } + if (pEnd) + { + *pEnd=0; + argv[argc++]=pTmp; + pTmp=pEnd+1; + } + else + { + argv[argc++]=pTmp; + break; + } + } + + return main(argc,argv); +}
\ No newline at end of file |