Mercurial > emacs
comparison lisp/dired-aux.el @ 79294:038b3e2f763f
(dired-copy-file-recursive): Preserve directory permissions.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Wed, 31 Oct 2007 18:12:32 +0000 |
parents | 7c8949dbfa0d |
children | ee10d972ec0f d3e87ee5aa0e |
comparison
equal
deleted
inserted
replaced
79293:7b9d5ff05014 | 79294:038b3e2f763f |
---|---|
1160 (if (and recursive | 1160 (if (and recursive |
1161 (eq t (car attrs)) | 1161 (eq t (car attrs)) |
1162 (or (eq recursive 'always) | 1162 (or (eq recursive 'always) |
1163 (yes-or-no-p (format "Recursive copies of %s? " from)))) | 1163 (yes-or-no-p (format "Recursive copies of %s? " from)))) |
1164 ;; This is a directory. | 1164 ;; This is a directory. |
1165 (let ((files | 1165 (let ((mode (file-modes from)) |
1166 (files | |
1166 (condition-case err | 1167 (condition-case err |
1167 (directory-files from nil dired-re-no-dot) | 1168 (directory-files from nil dired-re-no-dot) |
1168 (file-error | 1169 (file-error |
1169 (push (dired-make-relative from) | 1170 (push (dired-make-relative from) |
1170 dired-create-files-failures) | 1171 dired-create-files-failures) |
1174 (if (eq recursive 'top) (setq recursive 'always)) ; Don't ask any more. | 1175 (if (eq recursive 'top) (setq recursive 'always)) ; Don't ask any more. |
1175 (unless dirfailed | 1176 (unless dirfailed |
1176 (if (file-exists-p to) | 1177 (if (file-exists-p to) |
1177 (or top (dired-handle-overwrite to)) | 1178 (or top (dired-handle-overwrite to)) |
1178 (condition-case err | 1179 (condition-case err |
1179 (make-directory to) | 1180 (progn |
1181 (make-directory to) | |
1182 (set-file-modes to #o700)) | |
1180 (file-error | 1183 (file-error |
1181 (push (dired-make-relative from) | 1184 (push (dired-make-relative from) |
1182 dired-create-files-failures) | 1185 dired-create-files-failures) |
1183 (setq files nil) | 1186 (setq files nil) |
1184 (dired-log "Copying error for %s:\n%s\n" from err))))) | 1187 (dired-log "Copying error for %s:\n%s\n" from err))))) |
1193 thisfrom thisto | 1196 thisfrom thisto |
1194 ok-flag preserve-time nil recursive) | 1197 ok-flag preserve-time nil recursive) |
1195 (file-error | 1198 (file-error |
1196 (push (dired-make-relative thisfrom) | 1199 (push (dired-make-relative thisfrom) |
1197 dired-create-files-failures) | 1200 dired-create-files-failures) |
1198 (dired-log "Copying error for %s:\n%s\n" thisfrom err)))))) | 1201 (dired-log "Copying error for %s:\n%s\n" thisfrom err))))) |
1202 (when (file-directory-p to) | |
1203 (set-file-modes to mode))) | |
1199 ;; Not a directory. | 1204 ;; Not a directory. |
1200 (or top (dired-handle-overwrite to)) | 1205 (or top (dired-handle-overwrite to)) |
1201 (condition-case err | 1206 (condition-case err |
1202 (if (stringp (car attrs)) | 1207 (if (stringp (car attrs)) |
1203 ;; It is a symlink | 1208 ;; It is a symlink |
1204 (make-symbolic-link (car attrs) to ok-flag) | 1209 (make-symbolic-link (car attrs) to ok-flag) |
1205 (copy-file from to ok-flag dired-copy-preserve-time)) | 1210 (copy-file from to ok-flag dired-copy-preserve-time)) |
1206 (file-date-error | 1211 (file-date-error |
1207 (push (dired-make-relative from) | 1212 (push (dired-make-relative from) |
1208 dired-create-files-failures) | 1213 dired-create-files-failures) |
1209 (dired-log "Can't set date on %s:\n%s\n" from err)))))) | 1214 (dired-log "Can't set date on %s:\n%s\n" from err)))))) |
1210 | 1215 |
1211 ;;;###autoload | 1216 ;;;###autoload |