emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Recursive copies in Dired do not preserve directory permissions


From: Sven Joachim
Subject: Re: Recursive copies in Dired do not preserve directory permissions
Date: Sat, 27 Oct 2007 20:21:38 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1.50 (gnu/linux)

I have now looked into this myself and prepared a minimal patch
(against EMACS_22_BASE) which seems to work.  During that I discovered
another small issue: if a source directory is not readable, the
corresponding target directory is not created.  Before I investigate
that, I'd like to get comments on the following patch, though:

Index: dired-aux.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/dired-aux.el,v
retrieving revision 1.151.2.2
diff -u -r1.151.2.2 dired-aux.el
--- dired-aux.el        8 Aug 2007 07:38:48 -0000       1.151.2.2
+++ dired-aux.el        27 Oct 2007 17:59:56 -0000
@@ -1162,7 +1162,8 @@
             (or (eq recursive 'always)
                 (yes-or-no-p (format "Recursive copies of %s? " from))))
        ;; This is a directory.
-       (let ((files
+       (let ((mode (file-modes from))
+             (files
               (condition-case err
                   (directory-files from nil dired-re-no-dot)
                 (file-error
@@ -1176,7 +1177,9 @@
            (if (file-exists-p to)
                (or top (dired-handle-overwrite to))
              (condition-case err
-                 (make-directory to)
+                 (progn
+                   (make-directory to)
+                   (set-file-modes to #o700))
                (file-error
                 (push (dired-make-relative from)
                       dired-create-files-failures)
@@ -1195,7 +1198,9 @@
                (file-error
                 (push (dired-make-relative thisfrom)
                       dired-create-files-failures)
-                (dired-log "Copying error for %s:\n%s\n" thisfrom err))))))
+                (dired-log "Copying error for %s:\n%s\n" thisfrom err)))))
+         (if (file-directory-p to)
+             (set-file-modes to mode)))
       ;; Not a directory.
       (or top (dired-handle-overwrite to))
       (condition-case err


Changelog entry:

2007-10-27  Sven Joachim <address@hidden>

        * dired-aux.el (dired-copy-file-recursive): Preserve directory
        permissions.
        




reply via email to

[Prev in Thread] Current Thread [Next in Thread]