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