Changeset 4166 for trunk/lisp/dired-aux.el
- Timestamp:
- 09/18/06 20:48:14 (2 years ago)
- Files:
-
- trunk/lisp/dired-aux.el (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lisp/dired-aux.el
r4131 r4166 39 39 ;; We need macros in dired.el to compile properly. 40 40 (eval-when-compile (require 'dired)) 41 42 (defvar dired-create-files-failures nil 43 "Variable where `dired-create-files' records failing file names. 44 Functions that operate recursively can store additional names 45 into this list; they also should call `dired-log' to log the errors.") 41 46 42 47 ;;; 15K … … 1146 1151 (defun dired-copy-file (from to ok-flag) 1147 1152 (dired-handle-overwrite to) 1148 (condition-case () 1149 (dired-copy-file-recursive from to ok-flag dired-copy-preserve-time t 1150 dired-recursive-copies) 1151 (file-date-error (message "Can't set date") 1152 (sit-for 1)))) 1153 (dired-copy-file-recursive from to ok-flag dired-copy-preserve-time t 1154 dired-recursive-copies)) 1153 1155 1154 1156 (defun dired-copy-file-recursive (from to ok-flag &optional 1155 1157 preserve-time top recursive) 1156 (let ((attrs (file-attributes from))) 1158 (let ((attrs (file-attributes from)) 1159 dirfailed) 1157 1160 (if (and recursive 1158 1161 (eq t (car attrs)) … … 1160 1163 (yes-or-no-p (format "Recursive copies of %s? " from)))) 1161 1164 ;; This is a directory. 1162 (let ((files (directory-files from nil dired-re-no-dot))) 1165 (let ((files 1166 (condition-case err 1167 (directory-files from nil dired-re-no-dot) 1168 (file-error 1169 (push (dired-make-relative from) 1170 dired-create-files-failures) 1171 (dired-log "Copying error for %s:\n%s\n" from err) 1172 (setq dirfailed t) 1173 nil)))) 1163 1174 (if (eq recursive 'top) (setq recursive 'always)) ; Don't ask any more. 1164 (if (file-exists-p to) 1165 (or top (dired-handle-overwrite to)) 1166 (make-directory to)) 1175 (unless dirfailed 1176 (if (file-exists-p to) 1177 (or top (dired-handle-overwrite to)) 1178 (condition-case err 1179 (make-directory to) 1180 (file-error 1181 (push (dired-make-relative from) 1182 dired-create-files-failures) 1183 (setq files nil) 1184 (dired-log "Copying error for %s:\n%s\n" from err))))) 1167 1185 (while files 1168 1186 (dired-copy-file-recursive … … 1170 1188 (expand-file-name (car files) to) 1171 1189 ok-flag preserve-time nil recursive) 1172 ( setq files (cdr files))))1190 (pop files))) 1173 1191 ;; Not a directory. 1174 1192 (or top (dired-handle-overwrite to)) 1175 (if (stringp (car attrs)) 1176 ;; It is a symlink 1177 (make-symbolic-link (car attrs) to ok-flag) 1178 (copy-file from to ok-flag dired-copy-preserve-time))))) 1193 (condition-case err 1194 (if (stringp (car attrs)) 1195 ;; It is a symlink 1196 (make-symbolic-link (car attrs) to ok-flag) 1197 (copy-file from to ok-flag dired-copy-preserve-time)) 1198 (file-date-error 1199 (push (dired-make-relative from) 1200 dired-create-files-failures) 1201 (dired-log "Can't set date on %s:\n%s\n" from err)) 1202 (file-error 1203 (push (dired-make-relative from) 1204 dired-create-files-failures) 1205 (dired-log "Copying error for %s:\n%s\n" from err)))))) 1179 1206 1180 1207 ;;;###autoload … … 1298 1325 ;; oldfile was marked. 1299 1326 1300 (let (failures skipped (success-count 0) (total (length fn-list))) 1327 (let (dired-create-files-failures failures 1328 skipped (success-count 0) (total (length fn-list))) 1301 1329 (let (to overwrite-query 1302 1330 overwrite-backup-query) ; for dired-handle-overwrite … … 1341 1369 (file-error ; FILE-CREATOR aborted 1342 1370 (progn 1343 (setq failures (cons (dired-make-relative from) failures)) 1371 (push (dired-make-relative from) 1372 failures) 1344 1373 (dired-log "%s `%s' to `%s' failed:\n%s\n" 1345 1374 operation from to err)))))))) 1346 1375 fn-list)) 1347 1376 (cond 1377 (dired-create-files-failures 1378 (setq failures (nconc failures dired-create-files-failures)) 1379 (dired-log-summary 1380 (format "%s failed for %d file%s in %d requests" 1381 operation (length failures) 1382 (dired-plural-s (length failures)) 1383 total) 1384 failures)) 1348 1385 (failures 1349 1386 (dired-log-summary 1350 1387 (format "%s failed for %d of %d file%s" 1351 operation (length failures) total1352 (dired-plural-s total))1388 operation (length failures) 1389 total (dired-plural-s total)) 1353 1390 failures)) 1354 1391 (skipped
