From: Richard M. Stallman Date: Sun, 5 Nov 2006 15:00:31 +0000 (+0000) Subject: (dired-copy-file-recursive): Catch errors X-Git-Tag: emacs-pretest-22.0.91~329 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7a547817ccc5d36c0275f3e9533979f5145f0a80;p=emacs.git (dired-copy-file-recursive): Catch errors from recursive copies in the loop, around the recursive call. --- diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 769d98c9530..257332f4495 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1182,12 +1182,20 @@ Special value `always' suppresses confirmation." dired-create-files-failures) (setq files nil) (dired-log "Copying error for %s:\n%s\n" from err))))) - (while files - (dired-copy-file-recursive - (expand-file-name (car files) from) - (expand-file-name (car files) to) - ok-flag preserve-time nil recursive) - (pop files))) + (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)))))) ;; Not a directory. (or top (dired-handle-overwrite to)) (condition-case err @@ -1198,11 +1206,7 @@ Special value `always' suppresses confirmation." (file-date-error (push (dired-make-relative from) dired-create-files-failures) - (dired-log "Can't set date on %s:\n%s\n" from err)) - (file-error - (push (dired-make-relative from) - dired-create-files-failures) - (dired-log "Copying error for %s:\n%s\n" from err)))))) + (dired-log "Can't set date on %s:\n%s\n" from err)))))) ;;;###autoload (defun dired-rename-file (file newname ok-if-already-exists)