Subject: Re: bug#10489: 24.0.92; dired-do-copy may create infinite directory hierarchy

From: Michael Albinus <[email-masked]>
Date: Fri, 24 Feb 2012 16:00:34 +0100

Thierry Volpiatto <[email-masked]> writes:

> Hi Michael,

Hi Thierry,

>> 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---

Yes. And in the example you have shown, please add COPY-CONTENTS to the
call of the handler, this is another error in `copy-directory'.

> So what do you propose for such a case?

Check, whether inode number and device number are trustworthy. A value
of 0 or '(0 0) isn't. Fall back to the hard way (compare file names via
string-equal).

Best regards, Michael.