Show
Ignore:
Timestamp:
09/18/06 20:48:14 (2 years ago)
Author:
miyoshi
Message:

Sync up with Emacs CVS HEAD.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lisp/dired-aux.el

    r4131 r4166  
    3939;; We need macros in dired.el to compile properly. 
    4040(eval-when-compile (require 'dired)) 
     41 
     42(defvar dired-create-files-failures nil 
     43  "Variable where `dired-create-files' records failing file names. 
     44Functions that operate recursively can store additional names 
     45into this list; they also should call `dired-log' to log the errors.") 
    4146 
    4247;;; 15K 
     
    11461151(defun dired-copy-file (from to ok-flag) 
    11471152  (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)) 
    11531155 
    11541156(defun dired-copy-file-recursive (from to ok-flag &optional 
    11551157                                       preserve-time top recursive) 
    1156   (let ((attrs (file-attributes from))) 
     1158  (let ((attrs (file-attributes from)) 
     1159        dirfailed) 
    11571160    (if (and recursive 
    11581161             (eq t (car attrs)) 
     
    11601163                 (yes-or-no-p (format "Recursive copies of %s? " from)))) 
    11611164        ;; 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)))) 
    11631174          (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))))) 
    11671185          (while files 
    11681186            (dired-copy-file-recursive 
     
    11701188             (expand-file-name (car files) to) 
    11711189             ok-flag preserve-time nil recursive) 
    1172             (setq files (cdr files)))) 
     1190            (pop files))) 
    11731191      ;; Not a directory. 
    11741192      (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)))))) 
    11791206 
    11801207;;;###autoload 
     
    12981325;; oldfile was marked. 
    12991326 
    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))) 
    13011329    (let (to overwrite-query 
    13021330             overwrite-backup-query)    ; for dired-handle-overwrite 
     
    13411369                (file-error             ; FILE-CREATOR aborted 
    13421370                 (progn 
    1343                    (setq failures (cons (dired-make-relative from) failures)) 
     1371                   (push (dired-make-relative from) 
     1372                         failures) 
    13441373                   (dired-log "%s `%s' to `%s' failed:\n%s\n" 
    13451374                              operation from to err)))))))) 
    13461375       fn-list)) 
    13471376    (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)) 
    13481385     (failures 
    13491386      (dired-log-summary 
    13501387       (format "%s failed for %d of %d file%s" 
    1351                 operation (length failures) total 
    1352                 (dired-plural-s total)) 
     1388                operation (length failures) 
     1389                total (dired-plural-s total)) 
    13531390       failures)) 
    13541391     (skipped