GNU bug report logs - #10489
24.0.92; dired-do-copy may create infinite directory hierarchy

Previous Next

Package: emacs;

Reported by: michael_heerdegen <at> web.de

Date: Thu, 12 Jan 2012 19:36:01 UTC

Severity: important

Tags: patch

Merged with 11130

Found in version 24.0.92

Done: Chong Yidong <cyd <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #160 received at 10489 <at> debbugs.gnu.org (full text, mbox):

From: Michael Albinus <michael.albinus <at> gmx.de>
To: Thierry Volpiatto <thierry.volpiatto <at> gmail.com>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 10489 <at> debbugs.gnu.org
Subject: Re: bug#10489: 24.0.92;
	dired-do-copy may create infinite directory hierarchy
Date: Sun, 15 Jan 2012 13:50:47 +0100
Thierry Volpiatto <thierry.volpiatto <at> gmail.com> writes:

> The last patch use this instead, which avoid duplication of code and is
> more readable.
>
> (defun files-copyable-p (from to)
>   "Verify if file FROM is not the same than TO on this system."
>   (let* ((fromname     (file-name-as-directory (file-truename from)))
>          (destname     (file-name-as-directory (file-truename to)))
>          (rem-fromname (and (equal "sudo" (file-remote-p fromname 'method))
>                             (string-match (system-name)
>                                           (file-remote-p fromname 'host))
>                             (file-remote-p fromname 'localname)))
>          (rem-newname  (and (equal "sudo" (file-remote-p destname 'method))
>                             (string-match (system-name) (file-remote-p destname 'host))
>                             (file-remote-p destname 'localname))))
>     (not (equal (or rem-fromname fromname)
>                 (or rem-newname destname)))))

Again, Thierry: it is the wrong approach, to implement such logic in
files.el (or another package not related to remote files). You do not
know all details of the packages handling it. In this example, you have
handled "/sudo:", but you haven't handled "/su:". And other missing
details.

And you have called `file-truename' before comparing, whether the
"remoteness" of the files are equal. This is a performance issue,
because `file-truename' will always do expansive remote operations, even
if `from' and `to' are located on different hosts, and there is no
reason to find out their respective true names.

You are invited to implement `tramp-handle-file-eual-p', once
`file-equal-p' is added for Emacs 24.2. For the time being (Emacs 24.1),
it is sufficient to compare the result of `file-remote-p' as Drew has
shown in the example.

Best regards, Michael.




This bug report was last modified 13 years and 58 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.