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


View this message in rfc822 format

From: Thierry Volpiatto <thierry.volpiatto <at> gmail.com>
To: Michael Albinus <michael.albinus <at> gmx.de>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 10489 <at> debbugs.gnu.org
Subject: bug#10489: 24.0.92; dired-do-copy may create infinite directory hierarchy
Date: Fri, 24 Feb 2012 14:36:11 +0100
Hi Michael,

Michael Albinus <michael.albinus <at> gmx.de> writes:

> For both functions, please check for a file name handler, and call it if
> available. It doesn't matter that they are not implemented yet; there is
> the fallback to the native implementation in that case.
>
> With this check, I could start to implement the file name handlers in
> Tramp's upstream repository.
Do you mean something like in copy-directory:

--8<---------------cut here---------------start------------->8---
  (let ((handler (or (find-file-name-handler directory 'copy-directory)
		     (find-file-name-handler newname 'copy-directory))))
    (if handler
	(funcall handler 'copy-directory directory newname keep-time parents)
--8<---------------cut here---------------end--------------->8---


>> +(defun files-equal-p (file1 file2)
>> +  "Return non-nil if FILE1 and FILE2 name the same file."
>> +  (and (equal (file-remote-p file1) (file-remote-p file2))
>> +       (equal (file-attributes (file-truename file1))
>> +              (file-attributes (file-truename file2)))))
>
> This implementation requires, that inode number and filesystem device
> number are always unique. This is true for local files, if you run a
> Unix-like system. It is not guaranteed for remote files. And it is even
> not guaranted, if the local system is Windows: on mounted drives, the
> returned inode number is 0:
That annoying because the solution proposed by Stephane (stopping the
loop before being infinite) is based on Inode comparison, at least as I
have implemented it.

> (file-attributes "y:/.emacs")
> => (nil 1 101567 513 (20295 15877) (20234 46272) (20234 46272) 33083 "-rw-rw-rw-" nil 0 (47631 . 5881))

So what do you propose for such a case?

-- 
  Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 




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.