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

From: Thierry Volpiatto <[email-masked]>
Date: Fri, 24 Feb 2012 22:54:28 +0100

Michael Albinus <[email-masked]> writes:

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

Now we have an error until you write handlers:

tramp-file-name-for-operation: unknown file I/O primitive:
file-subdir-of-p

This happen when copying with sudo method.

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