This is the mail archive of the
mailing list for the Cygwin project.
Re: Incorrectly prepared lpCmdLine parameter of WinMain()
- From: Pavel Kudrna <Pavel dot Kudrna at mff dot cuni dot cz>
- To: cygwin at cygwin dot com
- Date: Thu, 09 Dec 2004 20:52:16 +0100
- Subject: Re: Incorrectly prepared lpCmdLine parameter of WinMain()
- Organization: Charles University in Prague, Faculty of Mathematics and Physics
Christopher Faylor wrote://
On Thu, Dec 09, 2004 at 12:41:22PM +0100, Pavel Kudrna wrote:
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.
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
MessageBox(NULL, lpCmdLine, "lpCmdLine:", MB_OK );
$ 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"
Sounds like you should be using argv rather than lpCmdLine.
Yes, but that means to create main() function. As temporary solution it
is ok, but I think
that more correct solution would be to replace the content of the file
with the content of
Can you do it?
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html