emacs-diffs
[Top][All Lists]
Advanced

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

master 41e62df: Fix extended attributes for Tramp's sudoedit method (bug


From: Michael Albinus
Subject: master 41e62df: Fix extended attributes for Tramp's sudoedit method (bug#49724)
Date: Sun, 25 Jul 2021 08:14:56 -0400 (EDT)

branch: master
commit 41e62df73af373f30a89281b25be0344b14cf98b
Author: Michael Albinus <michael.albinus@gmx.de>
Commit: Michael Albinus <michael.albinus@gmx.de>

    Fix extended attributes for Tramp's sudoedit method (bug#49724)
    
    * lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file):
    * lisp/net/tramp-sudoedit.el (tramp-sudoedit-do-copy-or-rename-file):
    Remove compat code for `{set-}file-extended-attributes'.
    (tramp-sudoedit-handle-write-region): Handle extended attributes.
    (Bug#49724)
    
    * test/lisp/net/tramp-tests.el (tramp-test25-file-selinux):
    Fix test for sudoedit method.
---
 lisp/net/tramp-sh.el         |  4 ++--
 lisp/net/tramp-sudoedit.el   | 18 ++++++++++++------
 test/lisp/net/tramp-tests.el |  2 +-
 3 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index a6569e0..7cf90b9 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -1946,7 +1946,7 @@ file names."
          (length (tramp-compat-file-attribute-size
                   (file-attributes (file-truename filename))))
          (attributes (and preserve-extended-attributes
-                          (apply #'file-extended-attributes (list filename))))
+                          (file-extended-attributes filename)))
          (msg-operation (if (eq op 'copy) "Copying" "Renaming")))
 
       (with-parsed-tramp-file-name (if t1 filename newname) nil
@@ -2022,7 +2022,7 @@ file names."
          ;; errors, because ACL strings could be incompatible.
          (when attributes
            (ignore-errors
-             (apply #'set-file-extended-attributes (list newname attributes))))
+             (set-file-extended-attributes newname attributes)))
 
          ;; In case of `rename', we must flush the cache of the source file.
          (when (and t1 (eq op 'rename))
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el
index 177dde6..e4d90dd 100644
--- a/lisp/net/tramp-sudoedit.el
+++ b/lisp/net/tramp-sudoedit.el
@@ -237,7 +237,7 @@ absolute file names."
                       (file-attributes filename)))
          (file-modes (tramp-default-file-modes filename))
          (attributes (and preserve-extended-attributes
-                          (apply #'file-extended-attributes (list filename))))
+                          (file-extended-attributes filename)))
          (sudoedit-operation
           (cond
            ((and (eq op 'copy) preserve-uid-gid) '("cp" "-f" "-p"))
@@ -293,7 +293,7 @@ absolute file names."
        ;; errors, because ACL strings could be incompatible.
        (when attributes
          (ignore-errors
-           (apply #'set-file-extended-attributes (list newname attributes))))
+           (set-file-extended-attributes newname attributes)))
 
        (when (and t1 (eq op 'rename))
          (with-parsed-tramp-file-name filename v1
@@ -726,13 +726,14 @@ ID-FORMAT valid values are `string' and `integer'."
                     (file-attributes filename 'integer))
                    (tramp-get-remote-gid v 'integer)))
           (flag (and (eq mustbenew 'excl) 'nofollow))
-          (modes (tramp-default-file-modes filename flag)))
+          (modes (tramp-default-file-modes filename flag))
+          (attributes (file-extended-attributes filename)))
       (prog1
          (tramp-handle-write-region
           start end filename append visit lockname mustbenew)
 
-       ;; Set the ownership and modes.  This is not performed in
-       ;; `tramp-handle-write-region'.
+       ;; Set the ownership, modes and extended attributes.  This is
+       ;; not performed in `tramp-handle-write-region'.
        (unless (and (= (tramp-compat-file-attribute-user-id
                         (file-attributes filename 'integer))
                        uid)
@@ -740,7 +741,12 @@ ID-FORMAT valid values are `string' and `integer'."
                         (file-attributes filename 'integer))
                        gid))
           (tramp-set-file-uid-gid filename uid gid))
-       (tramp-compat-set-file-modes filename modes flag)))))
+       (tramp-compat-set-file-modes filename modes flag)
+       ;; We ignore possible errors, because ACL strings could be
+       ;; incompatible.
+       (when attributes
+         (ignore-errors
+           (set-file-extended-attributes filename attributes)))))))
 
 
 ;; Internal functions.
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index b3a0021..052c030 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -4096,7 +4096,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
            (write-region "foo" nil tmp-name1)
            (should (file-exists-p tmp-name1))
            (should (file-selinux-context tmp-name1))
-           (copy-file tmp-name1 tmp-name2)
+           (copy-file tmp-name1 tmp-name2 nil nil nil 'preserve-permissions)
            (should (file-selinux-context tmp-name2))
            (should
             (equal



reply via email to

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