aboutsummaryrefslogtreecommitdiff
path: root/libwinmain
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2009-11-05 17:54:55 +0000
committermarha <marha@users.sourceforge.net>2009-11-05 17:54:55 +0000
commit17cd2280a71d7ae609961734b0aa750919147529 (patch)
treecffbeeecaafa816fefab27d75b85d88bcd255c93 /libwinmain
parentf5e3ac8167abd20db9f19c8f8794d9c68596e284 (diff)
downloadvcxsrv-17cd2280a71d7ae609961734b0aa750919147529.tar.gz
vcxsrv-17cd2280a71d7ae609961734b0aa750919147529.tar.bz2
vcxsrv-17cd2280a71d7ae609961734b0aa750919147529.zip
Move WinMain to seperate library.
Diffstat (limited to 'libwinmain')
-rw-r--r--libwinmain/makefile3
-rw-r--r--libwinmain/winmain.c43
2 files changed, 46 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..c4a8bf815
--- /dev/null
+++ b/libwinmain/winmain.c
@@ -0,0 +1,43 @@
+#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]={"plink"};
+ char *pTmp=lpCmdLine;
+
+ GetModuleFileName(NULL,ProgramName,255);
+ argv[0]=ProgramName;
+ while (*pTmp && argc<MAXNRARGS-1)
+ {
+ char *pEnd;
+ if (*pTmp=='"')
+ {
+ pEnd=strchr(pTmp+1,'"');
+ }
+ 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