Subject: Re: CreateProcess() - executed program gets different argument depending if it's compiled with gcc (cygwin) or cl (VS)?
From: Ilguiz Latypov <[email-masked]>
To: [email-masked]
Cc: Piotr Krukowiecki <[email-masked]>
Date: Thu, 18 Feb 2010 19:58:35 -0800 (PST)
List-Id: <cygwin.cygwin.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