-e escape rule

Samuel Williams space.ship.traveller at gmail.com
Sat Oct 29 12:36:17 UTC 2016


> The point is that the original escaping DOUBLE escapes an equals sign:
> foo\\\=bar
> It shouldn't, there's no reason to.

If you paste into your command line:

rsync -e ssh\ -l\ backup\ -i\ /etc/synco/id_rsa\ -o\
ConnectTimeout\\\=60\ -o\ BatchMode\\\=yes

The list of arguments would be (i.e. the values in ARGV):

['rsync', '-e', 'ssh -l backup -i /etc/synco/id_rsa -o
ConnectTimeout\=60 -o BatchMode\=yes']

The command

ssh -l backup -i /etc/synco/id_rsa -o ConnectTimeout\=60 -o BatchMode\=yes

Is a correct and valid shell command.

When RSync parses this in do_cmd, it should convert the '\=` sequence
into '=' but it doesn't.. This intuition is derived from the fact that
if you instead passed the string to `system('ssh -l backup -i
/etc/synco/id_rsa -o ConnectTimeout\=60 -o BatchMode\=yes')` that the
ARGV generated would be ['ssh', '-l', 'backup', '-i',
'/etc/synco/id_rsa', '-o', 'ConnectTimeout=60', '-o',
'BatchMode=yes'].

Basically, even if there WAS no reason to do so, doesn't mean it's
invalid or undesirable. In theory, even passing in -e \\s\\s\\h should
be valid.

On 30 October 2016 at 01:13, Paul Slootman <paul+rsync at wurtel.net> wrote:
> On Sat 29 Oct 2016, Samuel Williams wrote:
>
>> I'm not proposing some additional characters to split on, but quite
>> the opposite, to handle the backslash escaped spaces correctly and NOT
>> split. Rest assured, there is no bug with the original escaping. For
>> your edification:
>>
>> $ echo \I\'\m\ \a\ \s\t\r\i\n\g
>> I'm a string
>
> The point is that the original escaping DOUBLE escapes an equals sign:
>  foo\\\=bar
> It shouldn't, there's no reason to.
>
>
> Paul
>
> --
> Please use reply-all for most replies to avoid omitting the mailing list.
> To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
> Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html



More information about the rsync mailing list