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 21:33:26 +0100

Eli Zaretskii <[email-masked]> writes:

>> From: Thierry Volpiatto <[email-masked]>
>> Cc: Eli Zaretskii <[email-masked]>,  [email-masked]
>> Date: Fri, 24 Feb 2012 17:02:16 +0100
>> 
>> (defun files-equal-p (file1 file2)
>>   "Return non-nil if FILE1 and FILE2 name the same file."
>>   (let ((handler (or (find-file-name-handler file1 'files-equal-p)
>>                      (find-file-name-handler file2 'files-equal-p))))
>>     (if handler
>>         (funcall handler 'files-equal-p file1 file2)
>
> If FILE1 and FILE2 have different 'files-equal-p handlers, which one
> of them, if any, should be invoked here?

The one for FILE1.

> IOW, shouldn't we invoke a file handler only if it can handle _both_
> files?  Also, if each file has a different handler, doesn't that in
> itself already mean the files are not equal?

We shouldn't add too much to file name handler optimization here. The
handler will know what to do.

Likely, there won't be different handlers. It's always
`tramp-file-name-handler', which calls the respective sub-handlers.

Best regards, Michael.