This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Incorrectly prepared lpCmdLine parameter of WinMain()

The caller of WinMain() incorrectly parses the command line if e.g.
the space is present in the path or filename of the executable.
The lpCmdLine then contains part of the filename at the beginning.

/* program.c*/
#include <windows.h>
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
MessageBox(NULL, lpCmdLine, "lpCmdLine:", MB_OK );
return 0;

$ gcc program.c -mwin32
$ mv a.exe "a a.exe"
$ "./a a.exe" "1st parameter" 2nd\ parameter

Then MessageBox shows that lpCmdLine contains:
a.exe" "1st parameter" "2nd parameter"

If program is compiled with -mno-cygwin the bug is not present and lpCmdLine is ok:
"1st parameter" "2nd parameter"

Pavel Kudrna

Cygwin Configuration Diagnostics Current System Time: Thu Dec 09 10:50:59 2004 Windows XP Professional Ver 5.1 Build 2600 Service Pack 2

Cygwin DLL version info:
DLL version: 1.5.12    DLL epoch: 19
Cygwin Package Information
base-files           3.1-4
binutils             20040725-2
cygutils             1.2.5-1
cygwin               1.5.12-1
gcc                  3.3.3-3
gcc-mingw            20040810-1
mingw-runtime        3.5-1
w32api               3.1-1

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]