This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: B20.1 sh and bash command line parsing question


Rob PLEASE do not cater to this
cygwin BUG!!

Possibly if enough people complain
Someone will fix the command line
quoting in cygwin so it IS microsoft 
compatible.

Currently you cannot quote command lines
to ANY mingw32 or vc++ compiled program
using cygwin. This SUCKS!!

BTW you have probably already fixed this
but I think there is a missing line in sub_proc.c
that causes \" quoted variables to get an extra \
in front. Anyway this fixed my configure problem ;-)

all:;echo \"$(a)\"

diff -urbBPx RCS ../make.org/w32/subproc/sub_proc.c ./w32/subproc/sub_proc.c
--- ../make.org/w32/subproc/sub_proc.c	Mon Mar 02 01:43:50 1998
+++ ./w32/subproc/sub_proc.c	Wed Aug 11 15:12:32 1999
@@ -1055,6 +1064,7 @@
 		}
 
 		while(*p) {
+                      if (enclose_in_quotes)
 			if (*p == '\"') {
 				/*
 				 * We have to insert a backslash for the "


On Wed, 25 Aug 1999 18:59:33 +0200, you wrote:

>Howdy,
>
>I think I have something that shows some promise now. The rule
>for cygwin runtime seems to be:
>
>1. Enclose the entire command line in single quotes before invoking
>   'sh -c' via CreateProcess().
>2. Escape (with a single backslash) all embedded single quotes in
>   the command line.
>3. Escape nothing else
>
>Testing with this hypothesis now and it seems to be working
>so far. Thanks to Earnie Boyd for engaging me in
>some conversation that led me to some hints on what might
>be going on under the covers. Cheers!
>
>Rob
>
>Rob Tulloh wrote:
>> 
>> Proof that cygwin is using GetCommandLine?
>> 
>> i:/apps/work/cygnus/CYGWIN~1/H-I586~1/bin/sh.exe -c 'echo \\\"hi
>> there\\\"'
>> i:/apps/work/cygnus/CYGWIN~1/H-I586~1/bin/bash.exe -c 'echo \\\"hi
>> there\\\"'
>> 
>> i:\>i:/apps/work/cygnus/CYGWIN~1/H-I586~1/bin/sh.exe -c 'echo \\\"hi
>> there\\\"'
>> 
>> \"hi there\"
>> 
>> i:\>i:/apps/work/cygnus/CYGWIN~1/H-I586~1/bin/bash.exe -c 'echo \\\"hi
>> there\\\"
>> '
>> \"hi there\"
>> 
>> There is no reason for the Microsoft runtime to grok a single quote.
>> Yet,
>> it seems to work. If you then use the normal rules for shell escapes,
>> you
>> get the desired results. Odd, but perhaps can be leveraged...
>> 
>> ROb

________________________________________________________
NetZero - We believe in a FREE Internet.  Shouldn't you?
Get your FREE Internet Access and Email at
http://www.netzero.net/download/index.html

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]