aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Albinus2010-01-12 22:59:05 +0100
committerMichael Albinus2010-01-12 22:59:05 +0100
commitb8b45afc521d5a652554f007d4c8d41cd0972636 (patch)
tree7a8f19613bcee12ed793e77084d0cfb4dc9e6aea
parent832fdcab246884b180469309f8850337b4b3618c (diff)
downloademacs-b8b45afc521d5a652554f007d4c8d41cd0972636.tar.gz
emacs-b8b45afc521d5a652554f007d4c8d41cd0972636.zip
* files.el (copy-directory): Compute target for recursive
directories with identical names. (Bug#5343)
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/files.el15
2 files changed, 11 insertions, 9 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 33b498f34d6..3c95811a8fc 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
12010-01-12 Michael Albinus <michael.albinus@gmx.de>
2
3 * files.el (copy-directory): Compute target for recursive
4 directories with identical names. (Bug#5343)
5
12010-01-12 Glenn Morris <rgm@gnu.org> 62010-01-12 Glenn Morris <rgm@gnu.org>
2 7
3 * mail/emacsbug.el (report-emacs-bug-pretest-address): Set 8 * mail/emacsbug.el (report-emacs-bug-pretest-address): Set
diff --git a/lisp/files.el b/lisp/files.el
index 22f5936a1f6..302f114befe 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4714,20 +4714,17 @@ this happens by default."
4714 ;; Compute target name. 4714 ;; Compute target name.
4715 (setq directory (directory-file-name (expand-file-name directory)) 4715 (setq directory (directory-file-name (expand-file-name directory))
4716 newname (directory-file-name (expand-file-name newname))) 4716 newname (directory-file-name (expand-file-name newname)))
4717 (if (and (file-directory-p newname)
4718 (not (string-equal (file-name-nondirectory directory)
4719 (file-name-nondirectory newname))))
4720 (setq newname
4721 (expand-file-name (file-name-nondirectory directory) newname)))
4722 (if (not (file-directory-p newname)) (make-directory newname parents)) 4717 (if (not (file-directory-p newname)) (make-directory newname parents))
4723 4718
4724 ;; Copy recursively. 4719 ;; Copy recursively.
4725 (mapc 4720 (mapc
4726 (lambda (file) 4721 (lambda (file)
4727 (if (file-directory-p file) 4722 (let ((target (expand-file-name
4728 (copy-directory file newname keep-time parents) 4723 (file-name-nondirectory file) newname)))
4729 (copy-file file newname t keep-time))) 4724 (if (file-directory-p file)
4730 ;; We do not want to delete "." and "..". 4725 (copy-directory file target keep-time parents)
4726 (copy-file file target t keep-time))))
4727 ;; We do not want to copy "." and "..".
4731 (directory-files directory 'full directory-files-no-dot-files-regexp)) 4728 (directory-files directory 'full directory-files-no-dot-files-regexp))
4732 4729
4733 ;; Set directory attributes. 4730 ;; Set directory attributes.