Mail Archives: cygwin/2010/02/18/22:22:40
--0-379910768-1266549746=:26686
Content-Type: text/plain; charset=us-ascii
> As you can see dumpargs_gcc receives "\127.0.0.127\foo.cxx" and dumpargs_cl receives "\\127.0.0.127\foo.cxx".
Interesting. I am confused, too.
(1) Native-only parameter passing:
execv(PROG, ARGV) -> MSVCRT -> line = M(ARGV) -> CreateProcess( PROG, line, .. ) ->
MSVCRT -> CommandLineToArgvW( line ) -> argv, argc = M'( line ) -> int main( int argc, char *argv[] )
http://msdn.microsoft.com/en-us/library/17w5ykft.aspx
(2) POSIX compatibility wrapper (Cygwin):
execv(PROG, ARGV) -> Cygwin DLL -> prog = W(PROG), line = C(ARGV) -> CreateProcess( prog, line, .. )
(a) PROG is a native program:
-> MSVCRT -> CommandLineToArgvW( line ) -> argc, argv = M'( line ) -> int main( int argc, char *argv[] )
(b) PROG is another Cygwin-linked program:
-> Cygwin stub (crt0?) -> argc, argv = C'( line ) -> int main( int argc, char *argv[] )
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.
Here is my understanding of expansion features of Win32 (M), Bash (B) and Cygwin (C) shown as a diagram, where "special character" means a dollar sign [$], a double quote ["], another backslash [\], backquote [`] or a newline, as explained in section 2.2.3 Double-Quotes of the Open Group's XCU document.
http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
Bare backslashes Bare backslashes Quoted backslashes Quoted backslashes
not followed by a followed by a not followed by a followed by a
double quote double quote special character special character
MSVC regular protecting regular regular
Bash protecting protecting regular protecting
Cygwin regular protecting regular protecting
So I guess the confusion remains as to why (a) C != M and (b) C != B.
--0-379910768-1266549746=:26686
Content-Type: text/plain; name="createprocess.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="createprocess.c"
I2luY2x1ZGUgPHdpbmRvd3MuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lk
IHJ1bkNvbW1hbmQoY2hhciAqIGNvbW1hbmQpIHsKICAgIFNUQVJUVVBJTkZP
IHNpOwogICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsKCiAgICBaZXJvTWVt
b3J5KCZwaSwgc2l6ZW9mKHBpKSk7CiAgICBaZXJvTWVtb3J5KCZzaSwgc2l6
ZW9mKHNpKSk7CiAgICBzaS5jYiA9IHNpemVvZihzaSk7CgogICAgcHJpbnRm
KCJcbkNvbW1hbmQ6ICVzXG4iLCBjb21tYW5kKTsKCiAgICBDcmVhdGVQcm9j
ZXNzQShOVUxMLCBjb21tYW5kLCBOVUxMLCBOVUxMLCBUUlVFLCAwLCBOVUxM
LCBOVUxMLCAmc2ksICZwaSk7CiAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KHBp
LmhQcm9jZXNzLCBJTkZJTklURSk7CgogICAgQ2xvc2VIYW5kbGUoIHBpLmhQ
cm9jZXNzICk7CiAgICBDbG9zZUhhbmRsZSggcGkuaFRocmVhZCApOwogICAg
ZmZsdXNoKCBzdGRvdXQgKTsgICAgICAgICAgIC8vIGluc3VmZmljaWVudCB3
aGVuIG1haW4oKSBpcyBjYWxsZWQgZnJvbSBDeWd3aW4gYmFzaDsgYWRkZWQg
c2V0YnVmKCkKICAgIGZmbHVzaCggc3RkZXJyICk7ICAgICAgICAgICAvLwp9
CgoKLy8gWyAiXFxhXGIiICAiY1xcZCIgIlxlXGYiICJcXFxcZ1xcaCIgICJR
VU9URUQgV09SRFMiIFdPXCJSRCBcXGFcYiBcXCJhXGIiIFxcYVwiYiBcXFxc
ImEgXFxcXFwiIGIiIF0KLy8gWyAiXFxhXGIiICAiY1xcZCIgIlxlXGYiICJc
XFxcZ1xcaCIgICJRVU9URUQgV09SRFMiIFdPXCJSRCB4IiBcXGFcYiBcXCJh
XGIiIFxcYVwiYiB4IiBcXFxcImEgXFxcXFwiIGIiIF0KLy8gVGhlIHNlY29u
ZCBsaW5lIGNvbXBlbnNhdGVzIEN5Z3dpbidzIGludGVycHJldGF0aW9uIG9m
IGEgYmFyZSAodW5xdW90ZWQpCi8vIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBh
IGRvdWJsZSBxdW90ZSBhcyB0d28gc2VwYXJhdGUgY2hhcmFjdGVycy4KCiNk
ZWZpbmUgQ09NTUFORF9BUkdTICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiIFwiXFxcXGFcXGJcIiAgXCJjXFxcXGRcIiBcIlxcZVxcZlwiIFwiXFxc
XFxcXFxnXFxcXGhcIiAgXCJRVU9URUQgV09SRFNcIiBXT1xcXCJSRCIgXAog
ICAgIiBcXFxcYVxcYiBcXFxcXCJhXFxiXCIgXFxcXGFcXFwiYiIgXAogICAg
IiBcXFxcXFxcXFwiYSBcXFxcXFxcXFxcXCIgYlwiICIKI2RlZmluZSBDT01N
QU5EX0FSR1NfQ1lHV0lOX0JBUkVfQkFDS1NMQVNIX1FVT1RFICIgXCJcXFxc
YVxcYlwiICBcImNcXFxcZFwiIFwiXFxlXFxmXCIgXCJcXFxcXFxcXGdcXFxc
aFwiICBcIlFVT1RFRCBXT1JEU1wiIFdPXFxcIlJEIHhcIiIgXAogICAgIiBc
XFxcYVxcYiBcXFxcXCJhXFxiXCIgXFxcXGFcXFwiYiB4XCIiIFwKICAgICIg
XFxcXFxcXFxcImEgXFxcXFxcXFxcXFwiIGJcIiAiCgppbnQgbWFpbigpIHsK
ICAgIHNldGJ1Ziggc3Rkb3V0LCBOVUxMICk7ICAgICAvLyBqdXN0IGZsdXNo
aW5nIHRoZXNlIGZpbGVzIGFwcGVhcnMgdG8gYmUgaW5zdWZmaWNpZW50CiAg
ICBzZXRidWYoIHN0ZGVyciwgTlVMTCApOyAgICAgLy8KCiAgICBydW5Db21t
YW5kKCIuXFxkdW1wYXJnc19nY2MuZXhlICIgQ09NTUFORF9BUkdTX0NZR1dJ
Tl9CQVJFX0JBQ0tTTEFTSF9RVU9URSk7CiAgICBydW5Db21tYW5kKCIuXFxk
dW1wYXJnc19jbC5leGUgIiBDT01NQU5EX0FSR1MpOwogICAgcmV0dXJuIDA7
Cn0KCg==
--0-379910768-1266549746=:26686
Content-Type: text/plain; name="createprocess_cl.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="createprocess_cl.txt"
JCAuL2NyZWF0ZXByb2Nlc3NfY2wuZXhlIAoKQ29tbWFuZDogLlxkdW1wYXJn
c19nY2MuZXhlICAiXFxhXGIiICAiY1xcZCIgIlxlXGYiICJcXFxcZ1xcaCIg
ICJRVU9URUQgV09SRFMiIFdPXCJSRCB4IiBcXGFcYiBcXCJhXGIiIFxcYVwi
YiB4IiBcXFxcImEgXFxcXFwiIGIiIAouL2R1bXBhcmdzX2djYwpcYVxiCmNc
ZApcZVxmClxcZ1xoClFVT1RFRCBXT1JEUwpXT1xSRCB4ClxcYVxiClxhXGIK
XGFcYiB4ClxcYSBcXCIgYgoKQ29tbWFuZDogLlxkdW1wYXJnc19jbC5leGUg
ICJcXGFcYiIgICJjXFxkIiAiXGVcZiIgIlxcXFxnXFxoIiAgIlFVT1RFRCBX
T1JEUyIgV09cIlJEIFxcYVxiIFxcImFcYiIgXFxhXCJiIFxcXFwiYSBcXFxc
XCIgYiIgCi5cZHVtcGFyZ3NfY2wuZXhlClxcYVxiCmNcXGQKXGVcZgpcXFxc
Z1xcaApRVU9URUQgV09SRFMKV08iUkQKXFxhXGIKXGFcYgpcXGEiYgpcXGEg
XFwiIGIKCgoKJCBmb3IgdyBpbiAiXFxhXGIiICAiY1xcZCIgIlxlXGYiICJc
XFxcZ1xcaCIgICJRVU9URUQgV09SRFMiIFdPXCJSRCBcXGFcYiBcXCJhXGIi
IFxcYVwiYiBcXFxcImEgXFxcXFwiIGIiIDsgZG8gZWNobyAiJHciIDsgZG9u
ZQpcYVxiCmNcZApcZVxmClxcZ1xoClFVT1RFRCBXT1JEUwpXTyJSRApcYWIK
XGFcYgpcYSJiClxcYSBcXCIgYgoK
--0-379910768-1266549746=:26686
Content-Type: text/plain; charset=us-ascii
--
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
--0-379910768-1266549746=:26686--
- Raw text -