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)