On Thu, Dec 09, 2004 at 03:36:52PM -0500, Christopher Faylor wrote: >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.
Apologies. After another 30 seconds of deep thought I realized that the above statement was completely clueless. If we are going to provide a WinMain, it should do the right thing. I'll look at fixing libcmain.c and generating a new snapshot. Unfortunately, this will require relinking your software. 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/