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: Tue, 17 Jan 2012 07:06:47 +0100 Message-ID: <8739be7thk.fsf@gmail.com> References: <87mx9su32g.fsf@web.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> <87fwfjo24c.fsf@gmx.de> <87pqen76p4.fsf@gmail.com> <83fwfik92e.fsf@gnu.org> <87mx9q1sz7.fsf@gmail.com> <87vcodm8ns.fsf@gmx.de> <87pqekopb5.fsf@gmail.com> <87hazwoost.fsf@gmail.com> <87ty3w9639.fsf@gmx.de> <8762gckckt.fsf@gmail.com> <87pqek9269.fsf@gmx.de> <87r4z0yqfx.fsf@gmail.com> <87ehuz793s.fsf@gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1326780496 19708 80.91.229.12 (17 Jan 2012 06:08:16 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 17 Jan 2012 06:08:16 +0000 (UTC) To: 10489@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Jan 17 07:08:12 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 1Rn2DJ-0002aN-Ow for geb-bug-gnu-emacs@m.gmane.org; Tue, 17 Jan 2012 07:08:10 +0100 Original-Received: from localhost ([::1]:56586 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rn2DI-0002jv-Jb for geb-bug-gnu-emacs@m.gmane.org; Tue, 17 Jan 2012 01:08:08 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:50660) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rn2DF-0002jb-MK for bug-gnu-emacs@gnu.org; Tue, 17 Jan 2012 01:08:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rn2DE-0003OD-9G for bug-gnu-emacs@gnu.org; Tue, 17 Jan 2012 01:08:05 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:38089) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rn2DE-0003O8-6K for bug-gnu-emacs@gnu.org; Tue, 17 Jan 2012 01:08:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1Rn2EA-0006iR-43 for bug-gnu-emacs@gnu.org; Tue, 17 Jan 2012 01:09:02 -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: Tue, 17 Jan 2012 06:09:02 +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: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.132678049025750 (code B ref -1); Tue, 17 Jan 2012 06:09:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 17 Jan 2012 06:08:10 +0000 Original-Received: from localhost ([127.0.0.1]:60995 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rn2DK-0006hG-Fe for submit@debbugs.gnu.org; Tue, 17 Jan 2012 01:08:10 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:49976) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rn2DH-0006h9-Ik for submit@debbugs.gnu.org; Tue, 17 Jan 2012 01:08:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rn2CJ-0003EJ-Uh for submit@debbugs.gnu.org; Tue, 17 Jan 2012 01:07:08 -0500 Original-Received: from lists.gnu.org ([140.186.70.17]:41745) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rn2CJ-0003EA-TE for submit@debbugs.gnu.org; Tue, 17 Jan 2012 01:07:07 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:50132) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rn2CI-0002gr-RZ for bug-gnu-emacs@gnu.org; Tue, 17 Jan 2012 01:07:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rn2CG-0003DP-KI for bug-gnu-emacs@gnu.org; Tue, 17 Jan 2012 01:07:06 -0500 Original-Received: from lo.gmane.org ([80.91.229.12]:39112) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rn2CG-0003Cr-AN for bug-gnu-emacs@gnu.org; Tue, 17 Jan 2012 01:07:04 -0500 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Rn2CC-0002H4-8L for bug-gnu-emacs@gnu.org; Tue, 17 Jan 2012 07:07:00 +0100 Original-Received: from 93.211.85.79.rev.sfr.net ([79.85.211.93]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 17 Jan 2012 07:07:00 +0100 Original-Received: from thierry.volpiatto by 93.211.85.79.rev.sfr.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 17 Jan 2012 07:07:00 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 44 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 93.211.85.79.rev.sfr.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux) Cancel-Lock: sha1:MZ/xW8KDszsjKcfS3fm8QzQwM90= 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:55813 Archived-At: Thierry Volpiatto writes: > Andreas Schwab writes: > >> You also need to check whether the target is a subdirectory of the >> source. > Indeed yes, is there already a function to check this? > If not what about something like this: BTW this work also for equality between two directories. (both GNU/Linux and Windows) #+BEGIN_SRC lisp (defun file-subdir-of-p (file1 file2) "Check if FILE1 is a subdirectory of FILE2." (when (and (not (or (file-remote-p file1) (file-remote-p file2))) (not (string= file1 "/")) (file-directory-p file1) (file-directory-p file2)) (or (string= file2 "/") (loop with f1 = (expand-file-name file1) with f2 = (expand-file-name file2) with ls1 = (split-string f1 "/" t) with ls2 = (split-string f2 "/" t) for p = (string-match "^/" f1) for i in ls1 for j in ls2 when (string= i j) concat (if p (concat "/" i) (concat i "/")) into root finally return ;; Use here `file-equal-p' when ready to work. (string= (file-truename (directory-file-name root)) (file-truename(directory-file-name f2))))))) #+END_SRC -- Thierry Get my Gnupg key: gpg --keyserver pgp.mit.edu --recv-keys 59F29997