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

From: Michael Albinus <[email-masked]>
Date: Fri, 13 Jan 2012 20:04:35 +0100

Thierry Volpiatto <[email-masked]> writes:

> What about this?
>
> (defun file-name-equal-p (name1 name2 &optional dir)
>   (let* ((n1     (file-truename (expand-file-name name1 dir)))
>          (n2     (file-truename (expand-file-name name2 dir)))
>          (rhost1 (file-remote-p n1 'host))
>          (rhost2 (file-remote-p n2 'host))
>          (lname1 (file-remote-p n1 'localname))
>          (lname2 (file-remote-p n2 'localname))
>          (rem-n1 (if rhost1
>                      (list (cons rhost1 lname1))
>                      (list (cons (system-name) n1))))
>          (rem-n2 (if rhost2
>                      (list (cons rhost2 lname2))
>                      (list (cons (system-name) n2)))))
>     (loop for (x1 . y1) in rem-n1
>           for (x2 . y2) in rem-n2
>           thereis (and (equal x1 x2)
>                        (equal y1 y2)))))

Nope. User name and method also matter.

"/ftp:host:/file" <> "/ssh:@host:/file"

"/ftp:user1@host:/file" <> "/ftp:user1@host:/file"

You shouldn't mess with remote files, really :-)

That's what file name handlers are good for.

Best regards, Michael.