From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thierry Volpiatto Newsgroups: gmane.emacs.bugs Subject: bug#10489: 24.0.92; dired-do-copy may create infinite directory hierarchy Date: Fri, 13 Jan 2012 19:59:51 +0100 Message-ID: <87y5tb77iw.fsf@gmail.com> References: <87mx9su32g.fsf@web.de> <87sjjkfvwt.fsf@gmail.com> <8362ggkquq.fsf@gnu.org> <87lipcrlga.fsf@gmail.com> <87fwfkc4pn.fsf@gmx.de> <87fwfjsw8t.fsf@gmail.com> <87aa5rdazl.fsf@gmx.de> <87d3anogf5.fsf@gmail.com> <011AEED9E81C4DEFA6B1E03B0F57F28F@us.oracle.com> <878vlbljnc.fsf@gmx.de> <8739bj8mu1.fsf@gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: dough.gmane.org 1326481312 14655 80.91.229.12 (13 Jan 2012 19:01:52 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 13 Jan 2012 19:01:52 +0000 (UTC) To: 10489@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jan 13 20:01:45 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RlmNj-0004kv-23 for geb-bug-gnu-emacs@m.gmane.org; Fri, 13 Jan 2012 20:01:43 +0100 Original-Received: from localhost ([::1]:43476 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlmNi-0002Ua-NO for geb-bug-gnu-emacs@m.gmane.org; Fri, 13 Jan 2012 14:01:42 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:46337) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlmNT-0001wK-A0 for bug-gnu-emacs@gnu.org; Fri, 13 Jan 2012 14:01:39 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RlmNS-0005o7-Bm for bug-gnu-emacs@gnu.org; Fri, 13 Jan 2012 14:01:27 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:33798) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlmNS-0005o2-A0 for bug-gnu-emacs@gnu.org; Fri, 13 Jan 2012 14:01:26 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1RlmO1-00023a-Mr for bug-gnu-emacs@gnu.org; Fri, 13 Jan 2012 14:02:03 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <87mx9su32g.fsf@web.de> Resent-From: Thierry Volpiatto Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 13 Jan 2012 19:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10489 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.13264812647837 (code B ref -1); Fri, 13 Jan 2012 19:02:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 13 Jan 2012 19:01:04 +0000 Original-Received: from localhost ([127.0.0.1]:56704 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1RlmN5-00022L-Hp for submit@debbugs.gnu.org; Fri, 13 Jan 2012 14:01:03 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:49919) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1RlmN1-00021w-L9 for submit@debbugs.gnu.org; Fri, 13 Jan 2012 14:01:01 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RlmMJ-0005ix-KZ for submit@debbugs.gnu.org; Fri, 13 Jan 2012 14:00:21 -0500 Original-Received: from lists.gnu.org ([140.186.70.17]:53160) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlmMJ-0005in-GP for submit@debbugs.gnu.org; Fri, 13 Jan 2012 14:00:15 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:46176) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlmMF-0001h9-Da for bug-gnu-emacs@gnu.org; Fri, 13 Jan 2012 14:00:15 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RlmMA-0005hR-BZ for bug-gnu-emacs@gnu.org; Fri, 13 Jan 2012 14:00:11 -0500 Original-Received: from lo.gmane.org ([80.91.229.12]:51360) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlmMA-0005gP-0I for bug-gnu-emacs@gnu.org; Fri, 13 Jan 2012 14:00:06 -0500 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1RlmM7-0003yn-99 for bug-gnu-emacs@gnu.org; Fri, 13 Jan 2012 20:00:03 +0100 Original-Received: from 121.77.197.77.rev.sfr.net ([77.197.77.121]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 13 Jan 2012 20:00:03 +0100 Original-Received: from thierry.volpiatto by 121.77.197.77.rev.sfr.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 13 Jan 2012 20:00:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 82 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 121.77.197.77.rev.sfr.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux) Cancel-Lock: sha1:+/FlM4Im5Xmh+lJS+ftKeQFHF+o= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:55708 Archived-At: Thierry Volpiatto writes: > Michael Albinus writes: > >> Juanma Barranquero writes: >> >>> On Fri, Jan 13, 2012 at 15:14, Drew Adams wrote: >>> >>>>  (and (equal (file-remote-p file1) (file-remote-p file2)) >>> >>> Why is the file-remote-p needed? >> >> For some simple cases, `file-remote-p' does the correct expansion. >> >> (file-remote-p "/sudo::") => "/sudo:root@host:" >> >> With this expansion, "/sudo::/path/file" and "/sudo:host:/path/file" >> would be equal. > > 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))))) > > (file-name-equal-p "/home/thierry/Test" "~/Test") > ;=>t > (file-name-equal-p "/home/thierry/Test" "/home/thierry/tmp/Test") > ;=>nil > (file-name-equal-p "/ssh:thievol:/home/thierry/Test" "/scpc:thievol:/home/thierry/Test") > ;=>t > (file-name-equal-p "/sudo::/home/thierry/Test" "/sudo::~/Test") > ;=>nil > (file-name-equal-p "/sudo::/home/thierry/Test" "~/Test") > ;=>t > (file-name-equal-p "/home/thierry/tmp" "/tmp") > ;=>nil We need also to use file-name-as-directory for this use case: (file-name-equal-p "/home/thierry/Test" "~/Test/") ;=>t --8<---------------cut here---------------start------------->8--- (defun file-name-equal-p (name1 name2 &optional dir) (let* ((n1 (file-name-as-directory (file-truename (expand-file-name name1 dir)))) (n2 (file-name-as-directory (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))))) --8<---------------cut here---------------end--------------->8--- -- Thierry Get my Gnupg key: gpg --keyserver pgp.mit.edu --recv-keys 59F29997