Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Thu, 9 Dec 2004 10:37:20 -0500 From: Christopher Faylor To: cygwin AT cygwin DOT com Subject: Re: Incorrectly prepared lpCmdLine parameter of WinMain() Message-ID: <20041209153720.GB11158@trixie.casa.cgf.cx> Reply-To: cygwin AT cygwin DOT com References: <41B839E2 DOT 5020803 AT mff DOT cuni DOT cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <41B839E2.5020803@mff.cuni.cz> User-Agent: Mutt/1.4.1i 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 >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. -- 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/