X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Message-ID: <644936.8008.qm@web88301.mail.re4.yahoo.com> X-RocketYMMF: ilatypov Date: Thu, 18 Feb 2010 19:58:35 -0800 (PST) From: Ilguiz Latypov Subject: Re: CreateProcess() - executed program gets different argument depending if it's compiled with gcc (cygwin) or cl (VS)? To: cygwin AT cygwin DOT com Cc: Piotr Krukowiecki MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: 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 > Thanks to your createprocess.c/dumpargs.c pair, I could figure the existing > Cygwin's parsing without looking into its source code. It turned to ignore the > escaping power of a bare (unquoted) backslash when it was followed by a double > quote, which is against both MSVC and Bash rules. Forgot to mention that in the comparison chart. Bare backslashes Bare backslashes A quoted backslash A quoted backslash not followed by a followed by a not followed by a followed by a double quote double quote: special character special character pairs with next backslash pairs with the double quote MSVC regular yes yes regular regular Bash protecting yes yes regular protecting Cygwin regular yes no regular protecting > So I guess the confusion remains as to why (a) C != M and (b) C != B. Due to the possibility of receiving the command line by both Windows native and Cygwin application, the only question is why C != M. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple