]> git.eshelyaron.com Git - emacs.git/commitdiff
* dired-aux.el (dired-copy-file-recursive): Use it.
authorMichael Albinus <michael.albinus@gmx.de>
Sun, 4 Oct 2009 12:16:36 +0000 (12:16 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Sun, 4 Oct 2009 12:16:36 +0000 (12:16 +0000)
lisp/ChangeLog
lisp/dired-aux.el

index 97962595a99becc70addad31dcdc8b15f6e15d30..78a7c638f41932f621b574749451e231abff56e9 100644 (file)
@@ -1,3 +1,9 @@
+2009-10-04  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.el (copy-directory): New defun.
+
+       * dired-aux.el (dired-copy-file-recursive): Use it.
+
 2009-10-04  Juanma Barranquero  <lekktu@gmail.com>
 
        * cedet/ede/makefile-edit.el (makefile-beginning-of-command)
index e179a484ac360ae516270b3060a94e67d4cfeb5c..ce93f01d6caf6fc7ccd73dcbf49576f1896b4597 100644 (file)
@@ -1209,51 +1209,7 @@ Special value `always' suppresses confirmation."
             (or (eq recursive 'always)
                 (yes-or-no-p (format "Recursive copies of %s? " from))))
        ;; This is a directory.
-       (let ((mode (or (file-modes from) #o700))
-             (files
-              (condition-case err
-                  (directory-files from nil dired-re-no-dot)
-                (file-error
-                 (push (dired-make-relative from)
-                       dired-create-files-failures)
-                 (dired-log "Copying error for %s:\n%s\n" from err)
-                 (setq dirfailed t)
-                 nil))))
-         (if (eq recursive 'top) (setq recursive 'always)) ; Don't ask any more.
-         (unless dirfailed
-           (if (file-exists-p to)
-               (or top (dired-handle-overwrite to))
-             (condition-case err
-                 ;; We used to call set-file-modes here, but on some
-                 ;; Linux kernels, that returns an error on vfat
-                 ;; filesystems
-                 (let ((default-mode (default-file-modes)))
-                   (unwind-protect
-                       (progn
-                         (set-default-file-modes #o700)
-                         (make-directory to))
-                     (set-default-file-modes default-mode)))
-               (file-error
-                (push (dired-make-relative from)
-                      dired-create-files-failures)
-                (setq files nil)
-                (dired-log "Copying error for %s:\n%s\n" from err)))))
-         (dolist (file files)
-           (let ((thisfrom (expand-file-name file from))
-                 (thisto (expand-file-name file to)))
-             ;; Catch errors copying within a directory,
-             ;; and report them through the dired log mechanism
-             ;; just as our caller will do for the top level files.
-             (condition-case err
-                 (dired-copy-file-recursive
-                  thisfrom thisto
-                  ok-flag preserve-time nil recursive)
-               (file-error
-                (push (dired-make-relative thisfrom)
-                      dired-create-files-failures)
-                (dired-log "Copying error for %s:\n%s\n" thisfrom err)))))
-         (when (file-directory-p to)
-           (set-file-modes to mode)))
+       (copy-directory from to dired-copy-preserve-time)
       ;; Not a directory.
       (or top (dired-handle-overwrite to))
       (condition-case err