unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Stephen Berman <stephen.berman@gmx.net>
To: 5343@debbugs.gnu.org
Subject: bug#5343: 23.1.91; recursive directory copying is broken
Date: Sat, 09 Jan 2010 22:53:58 +0100	[thread overview]
Message-ID: <878wc754i1.fsf@escher.home> (raw)
In-Reply-To: <87fx6gkx3h.fsf@escher.home> (Stephen Berman's message of "Sat, 09 Jan 2010 00:14:58 +0100")

On Sat, 09 Jan 2010 00:14:58 +0100 Stephen Berman <stephen.berman@gmx.net> 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  <stephen.berman@gmx.net>

	* 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))






  reply	other threads:[~2010-01-09 21:53 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <nqljg2tgsl.fsf@alcatel-lucent.com>
2010-01-08 23:14 ` bug#5343: 23.1.91; recursive directory copying is broken Stephen Berman
2010-01-09 21:53   ` Stephen Berman [this message]
2010-01-10  2:14     ` Lennart Borgman
2010-01-12 22:07     ` Michael Albinus
2010-01-13 10:52       ` Stephen Berman
2010-01-13 10:56   ` bug#5343: marked as done (23.1.91; recursive directory copying is broken) Emacs bug Tracking System

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=878wc754i1.fsf@escher.home \
    --to=stephen.berman@gmx.net \
    --cc=5343@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).