Mercurial > emacs
changeset 73701:1c9765fecfa4
(dired-copy-file-recursive): Catch errors
from recursive copies in the loop, around the recursive call.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 05 Nov 2006 15:00:31 +0000 |
parents | 294b1de9ac5f |
children | 2bd04d2f629a |
files | lisp/dired-aux.el |
diffstat | 1 files changed, 15 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/dired-aux.el Sun Nov 05 13:22:30 2006 +0000 +++ b/lisp/dired-aux.el Sun Nov 05 15:00:31 2006 +0000 @@ -1182,12 +1182,20 @@ 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 @@ (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)