This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Incorrectly prepared lpCmdLine parameter of WinMain()
- From: Christopher Faylor <cgf-no-personal-reply-please at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Thu, 9 Dec 2004 15:36:52 -0500
- Subject: Re: Incorrectly prepared lpCmdLine parameter of WinMain()
- References: <41B8ACF0.4080208@mff.cuni.cz>
- Reply-to: cygwin at cygwin dot com
On Thu, Dec 09, 2004 at 08:52:16PM +0100, Pavel Kudrna wrote:
> 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.
>>>
>>>/* 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"
>>
>>Sounds like you should be using argv[] rather than lpCmdLine.
>
>Yes, but that means to create main() function.
Right. We're talking about *UNIX* here. That's what Cygwin is all about.
main is rather implied.
cgf
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/