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

From: Stefan Monnier <[email-masked]>
Date: Mon, 16 Jan 2012 16:40:34 -0500

>>>> E.g. (equal (file-attributes file1) (file-attributes file2))?
>>> We need at least the `file-truename' call. 
>>> (equal (file-attributes (file-truename (expand-file-name file1)))
>>> (file-attributes (file-truename (expand-file-name file2))))))
>> 
>> Why??!?!

> albinus@slbhn1:[1187] touch 1
> albinus@slbhn1:[1188] ln -s 1 2
> albinus@slbhn1:[1189] ll 1 2
> -rw-r--r-- 1 albinus smc3 197 Jan 16 16:22 1
> lrwxrwxrwx 1 albinus smc3   1 Jan 16 16:22 2 -> 1

> (file-attributes "/home/albinus/1") =>
> (nil 1 441 823 (20244 16570) (20244 16570) (20244 16570) 197 "-rw-r--r--" nil 2708784 19)

> (file-attributes "/home/albinus/2") =>
> ("1" 1 441 823 (20244 16577) (20244 16577) (20244 16577) 1 "lrwxrwxrwx" nil 2727905 19)

Ah, right.  So we don't need the full semantics of file-truename, but we
do need to force "follow the symlink, if any".  `file-truename' is
overkill, but I guess it's OK for now since I don't think we have
a quick replacement for this case.

        Stefan