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

From: Andreas Schwab <[email-masked]>
Date: Mon, 16 Jan 2012 15:09:48 +0100

Thierry Volpiatto <[email-masked]> writes:

> Michael Albinus <[email-masked]> writes:
>
>> Thierry Volpiatto <[email-masked]> writes:
>>
>>> IMHO we should fix this bug for most use cases with a compare function
>>> maybe not perfect in many points but ok for most basic usages.
>>> The function shown by Drew and I put in last patch as you said isn't
>>> sufficient and fail in many cases even on local filesystem:
>>>
>>> (defun bmkp-same-file-p (file1 file2)
>>>   "Return non-nil if FILE1 and FILE2 name the same file.
>>> If either name is not absolute, then it is expanded relative to
>>> `default-directory' for the test."
>>>   (and (equal (file-remote-p file1) (file-remote-p file2))
>>>        (string= (file-truename (expand-file-name file1))
>>>                 (file-truename (expand-file-name file2)))))
>>>
>>> (bmkp-same-file-p "~/Test" "/home/thierry/Test/") => nil
>>
>> So it must be 
>>
>>        (string= (directory-file-name (file-truename (expand-file-name file1)))
>>                 (directory-file-name (file-truename (expand-file-name file2))))))
>
> So, any objections to apply my patch to trunk with these changes?

You also need to check whether the target is a subdirectory of the
source.

Andreas.

-- 
Andreas Schwab, [email-masked]
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."