From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stephen Berman Newsgroups: gmane.emacs.bugs Subject: bug#5343: 23.1.91; recursive directory copying is broken Date: Sat, 09 Jan 2010 22:53:58 +0100 Message-ID: <878wc754i1.fsf@escher.home> References: <87fx6gkx3h.fsf@escher.home> Reply-To: Stephen Berman , 5343@debbugs.gnu.org NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1263077372 1128 80.91.229.12 (9 Jan 2010 22:49:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 9 Jan 2010 22:49:32 +0000 (UTC) To: 5343@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jan 09 23:49:24 2010 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1NTk7W-0002qY-Rm for geb-bug-gnu-emacs@m.gmane.org; Sat, 09 Jan 2010 23:49:23 +0100 Original-Received: from localhost ([127.0.0.1]:51339 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NTk7X-0000Yd-HE for geb-bug-gnu-emacs@m.gmane.org; Sat, 09 Jan 2010 17:49:23 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NTk7I-0000TV-Il for bug-gnu-emacs@gnu.org; Sat, 09 Jan 2010 17:49:08 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NTk7D-0000QY-Ch for bug-gnu-emacs@gnu.org; Sat, 09 Jan 2010 17:49:07 -0500 Original-Received: from [199.232.76.173] (port=41708 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NTk7D-0000QU-6F for bug-gnu-emacs@gnu.org; Sat, 09 Jan 2010 17:49:03 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:58425) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NTk7C-00033U-Ol for bug-gnu-emacs@gnu.org; Sat, 09 Jan 2010 17:49:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1NTjjy-0006EC-34; Sat, 09 Jan 2010 17:25:02 -0500 X-Loop: bug-gnu-emacs@gnu.org Mail-Followup-To: Stephen Berman , 5343@debbugs.gnu.org Resent-From: Stephen Berman Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 09 Jan 2010 22:25:02 +0000 Resent-Message-ID: Resent-Sender: bug-gnu-emacs@gnu.org X-Emacs-PR-Message: followup 5343 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by 5343-submit@debbugs.gnu.org id=B5343.126307588123932 (code B ref 5343); Sat, 09 Jan 2010 22:25:02 +0000 Original-Received: (at 5343) by debbugs.gnu.org; 9 Jan 2010 22:24:41 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NTjjd-0006Dx-1u for submit@debbugs.gnu.org; Sat, 09 Jan 2010 17:24:41 -0500 Original-Received: from mail.gmx.net ([213.165.64.20]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1NTjG0-0005zM-4X for 5343@debbugs.gnu.org; Sat, 09 Jan 2010 16:54:04 -0500 Original-Received: (qmail invoked by alias); 09 Jan 2010 21:53:59 -0000 Original-Received: from i59F5503A.versanet.de (EHLO escher.home) [89.245.80.58] by mail.gmx.net (mp044) with SMTP; 09 Jan 2010 22:53:59 +0100 X-Authenticated: #20778731 X-Provags-ID: V01U2FsdGVkX1+FREhJgvyFhFM86myJoPR8ORfq0WBrsooZ2UGEl3 V3/82UudWaT/Ps Original-Received: by escher.home (Postfix, from userid 1000) id 3CFA710316; Sat, 9 Jan 2010 22:53:58 +0100 (CET) In-Reply-To: <87fx6gkx3h.fsf@escher.home> (Stephen Berman's message of "Sat, 09 Jan 2010 00:14:58 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.91 (gnu/linux) X-Y-GMX-Trusted: 0 X-FuHaFi: 0.52 X-Spam-Score: -4.3 (----) X-Mailman-Approved-At: Sat, 09 Jan 2010 17:24:39 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list X-Spam-Score: -3.7 (---) Resent-Date: Sat, 09 Jan 2010 17:25:02 -0500 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) 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: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:34139 Archived-At: On Sat, 09 Jan 2010 00:14:58 +0100 Stephen Berman wrote: > 1. emacs -Q > 2. Make a directory /tmp/test, add to it a file named "a" and a > directory named "test", and add to /tmp/test/test a file named "b". > 3. Type `M-x copy-directory RET /tmp/test RET ~ RET' to copy /tmp/test > recursively to ~. > 4. Type `C-x d' and at the prompt `~' to visit ~ in Dired, put the > cursor on the directory "test" and type `i' to open "test" as a > subdirectory. This is the result: > > /home/steve/test: > total used in directory 16 available 7794948 > -rw-r--r-- 1 steve users 4 2010-01-08 23:57 a > -rw-r--r-- 1 steve users 7 2010-01-08 23:57 b This is due to the following code in copy-directory: (if (and (file-directory-p newname) (not (string-equal (file-name-nondirectory directory) (file-name-nondirectory newname)))) (setq newname (expand-file-name (file-name-nondirectory directory) newname))) Specifically, the equality check prevents newname from being changed from "home/steve/test" to "home/steve/test/test". Removing this check, as in the below patch, fixes the above breakage. I don't see any real problem this check prevents, but maybe I'm overlooking something. Steve Berman 2010-01-09 Stephen Berman * files.el (copy-directory): Don't check equality of source and target nondirectory names (bug#5343). *** /tmp/ediff7644I7H 2010-01-09 22:23:07.000000000 +0100 --- /home/steve/bzr/emacs/quickfixes/lisp/files.el 2010-01-09 21:41:52.000000000 +0100 *************** *** 4714,4722 **** ;; Compute target name. (setq directory (directory-file-name (expand-file-name directory)) newname (directory-file-name (expand-file-name newname))) ! (if (and (file-directory-p newname) ! (not (string-equal (file-name-nondirectory directory) ! (file-name-nondirectory newname)))) (setq newname (expand-file-name (file-name-nondirectory directory) newname))) (if (not (file-directory-p newname)) (make-directory newname parents)) --- 4714,4720 ---- ;; Compute target name. (setq directory (directory-file-name (expand-file-name directory)) newname (directory-file-name (expand-file-name newname))) ! (if (file-directory-p newname) (setq newname (expand-file-name (file-name-nondirectory directory) newname))) (if (not (file-directory-p newname)) (make-directory newname parents))