]> code.delx.au - gnu-emacs/commitdiff
* net/tramp-sh.el (tramp-sh-handle-set-file-acl): Add argument to
authorMichael Albinus <michael.albinus@gmx.de>
Wed, 2 Jan 2013 10:15:31 +0000 (11:15 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Wed, 2 Jan 2013 10:15:31 +0000 (11:15 +0100)
`error' call.
(tramp-do-copy-or-rename-file): Ignore errors when calling
`set-file-extended-attributes'.

* net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add
handler for `file-acl'.
(tramp-smb-handle-file-acl): New defun.

lisp/ChangeLog
lisp/net/tramp-sh.el
lisp/net/tramp-smb.el

index f3a84967aaf3ea638fcebb1139d0c403be32a5b4..72e8959d8ef10cf84453c3a36fbbe5e3350c7949 100644 (file)
@@ -1,3 +1,14 @@
+2013-01-02  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-sh.el (tramp-sh-handle-set-file-acl): Add argument to
+       `error' call.
+       (tramp-do-copy-or-rename-file): Ignore errors when calling
+       `set-file-extended-attributes'.
+
+       * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add
+       handler for `file-acl'.
+       (tramp-smb-handle-file-acl): New defun.
+
 2013-01-02  Jay Belanger  <jay.p.belanger@gmail.com>
 
        * calc/README: Mention ISO 8601 week-numbering dates.
index e46b32c85a5fb3cd854599752a7840f2fa829c71..c359bab08301858aee54f362153f3799abf7cf3f 100644 (file)
@@ -1570,7 +1570,7 @@ and gid of the corresponding user is taken.  Both parameters must be integers."
                       v (format
                          "setfacl -m %s %s"
                          line (tramp-shell-quote-argument localname)))
-               (error))))
+               (error nil))))
        ;; In case of errors, we return `nil'.
        (error
         (tramp-set-file-property v localname "file-acl" 'undef)
@@ -2097,9 +2097,11 @@ file names."
          ;; One of them must be a Tramp file.
          (error "Tramp implementation says this cannot happen")))
 
-       ;; Handle `preserve-extended-attributes'.
+       ;; Handle `preserve-extended-attributes'.  We ignore possible
+       ;; errors, because ACL strings could be incompatible.
        (when attributes
-         (apply 'set-file-extended-attributes (list newname attributes)))
+         (ignore-errors
+           (apply 'set-file-extended-attributes (list newname attributes))))
 
        ;; In case of `rename', we must flush the cache of the source file.
        (when (and t1 (eq op 'rename))
index af1e36350f506ea6fa3a174c4b35151b48de3358..dbb711e95957eae2a9751d02306671e23b6909eb 100644 (file)
@@ -195,7 +195,7 @@ See `tramp-actions-before-shell' for more info.")
     (dired-uncache . tramp-handle-dired-uncache)
     (expand-file-name . tramp-smb-handle-expand-file-name)
     (file-accessible-directory-p . tramp-smb-handle-file-directory-p)
-    (file-acl . ignore)
+    (file-acl . tramp-smb-handle-file-acl)
     (file-attributes . tramp-smb-handle-file-attributes)
     (file-directory-p .  tramp-smb-handle-file-directory-p)
     (file-executable-p . tramp-handle-file-exists-p)
@@ -641,6 +641,22 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
        method user host
        (tramp-run-real-handler 'expand-file-name (list localname))))))
 
+(defun tramp-smb-handle-file-acl (filename)
+  "Like `file-acl' for Tramp files."
+  (with-parsed-tramp-file-name filename nil
+    (with-tramp-file-property v localname "file-acl"
+      (when (tramp-smb-send-command
+            v (format "getfacl \"%s\"" (tramp-smb-get-localname v)))
+       (with-current-buffer (tramp-get-connection-buffer v)
+         (goto-char (point-min))
+         (while (looking-at-p "^#")
+           (forward-line)
+           (delete-region (point-min) (point)))
+         (goto-char (point-max))
+         (delete-blank-lines)
+         (when (> (point-max) (point-min))
+           (substring-no-properties (buffer-string))))))))
+
 (defun tramp-smb-handle-file-attributes (filename &optional id-format)
   "Like `file-attributes' for Tramp files."
   (unless id-format (setq id-format 'integer))
@@ -1815,6 +1831,5 @@ Returns nil if an error message has appeared."
 ;; * Try to remove the inclusion of dummy "" directory.  Seems to be at
 ;;   several places, especially in `tramp-smb-handle-insert-directory'.
 ;; * Ignore case in file names.
-;; * Implement `tramp-smb-handle-file-acl' for proper Samba versions.
 
 ;;; tramp-smb.el ends here