aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Albinus2012-12-17 15:38:07 +0100
committerMichael Albinus2012-12-17 15:38:07 +0100
commit53b6a8b11383585ae8a175bf53964e35e889d338 (patch)
tree0c97fe76816949f9477b7a9ad45de1120614aab9
parent4cc63c814237feaed9590585f1bbdf2aca214c0b (diff)
downloademacs-53b6a8b11383585ae8a175bf53964e35e889d338.tar.gz
emacs-53b6a8b11383585ae8a175bf53964e35e889d338.zip
Add support for preserving ACL entries of files.
* net/tramp.el (tramp-file-name-for-operation): Add `file-acl' and `set-file-acl' handlers. * net/tramp-adb.el (tramp-adb-handle-copy-file): Handle PRESERVE-EXTENDED-ATTRIBUTES. * net/tramp-compat.el (tramp-compat-copy-file): Handle PRESERVE-EXTENDED-ATTRIBUTES. * net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist): Add `file-acl' and `set-file-acl' handlers. (tramp-gvfs-handle-copy-file): Handle PRESERVE-EXTENDED-ATTRIBUTES. (tramp-gvfs-handle-file-acl, tramp-gvfs-handle-set-file-acl): New defuns. * net/tramp-sh.el (tramp-sh-file-name-handler-alist): Add `file-acl' and `set-file-acl' handlers. (tramp-remote-acl-p, tramp-sh-handle-file-acl) (tramp-sh-handle-set-file-acl): New defuns. (tramp-sh-handle-copy-file, tramp-do-copy-or-rename-file): Handle PRESERVE-EXTENDED-ATTRIBUTES. * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add `file-acl' and `set-file-acl' handlers. (tramp-smb-handle-copy-file): Handle PRESERVE-EXTENDED-ATTRIBUTES.
-rw-r--r--lisp/ChangeLog31
-rw-r--r--lisp/net/tramp-adb.el4
-rw-r--r--lisp/net/tramp-compat.el9
-rw-r--r--lisp/net/tramp-gvfs.el17
-rw-r--r--lisp/net/tramp-sh.el56
-rw-r--r--lisp/net/tramp-smb.el7
-rw-r--r--lisp/net/tramp.el3
7 files changed, 105 insertions, 22 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 21564f5daa5..26570fc7e90 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,34 @@
12012-12-17 Michael Albinus <michael.albinus@gmx.de>
2
3 Add support for preserving ACL entries of files.
4
5 * net/tramp.el (tramp-file-name-for-operation): Add `file-acl' and
6 `set-file-acl' handlers.
7
8 * net/tramp-adb.el (tramp-adb-handle-copy-file): Handle
9 PRESERVE-EXTENDED-ATTRIBUTES.
10
11 * net/tramp-compat.el (tramp-compat-copy-file): Handle
12 PRESERVE-EXTENDED-ATTRIBUTES.
13
14 * net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist): Add
15 `file-acl' and `set-file-acl' handlers.
16 (tramp-gvfs-handle-copy-file): Handle
17 PRESERVE-EXTENDED-ATTRIBUTES.
18 (tramp-gvfs-handle-file-acl, tramp-gvfs-handle-set-file-acl): New
19 defuns.
20
21 * net/tramp-sh.el (tramp-sh-file-name-handler-alist): Add
22 `file-acl' and `set-file-acl' handlers.
23 (tramp-remote-acl-p, tramp-sh-handle-file-acl)
24 (tramp-sh-handle-set-file-acl): New defuns.
25 (tramp-sh-handle-copy-file, tramp-do-copy-or-rename-file): Handle
26 PRESERVE-EXTENDED-ATTRIBUTES.
27
28 * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add
29 `file-acl' and `set-file-acl' handlers.
30 (tramp-smb-handle-copy-file): Handle PRESERVE-EXTENDED-ATTRIBUTES.
31
12012-12-17 Kelly Dean <kellydeanch@yahoo.com> (tiny change) 322012-12-17 Kelly Dean <kellydeanch@yahoo.com> (tiny change)
2 33
3 * help-macro.el (make-help-screen): Instead of switch-to-buffer 34 * help-macro.el (make-help-screen): Instead of switch-to-buffer
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index d34980fe22e..261c65ffdae 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -526,9 +526,9 @@ But handle the case, if the \"test\" command is not available."
526 526
527(defun tramp-adb-handle-copy-file 527(defun tramp-adb-handle-copy-file
528 (filename newname &optional ok-if-already-exists keep-date 528 (filename newname &optional ok-if-already-exists keep-date
529 preserve-uid-gid preserve-selinux-context) 529 preserve-uid-gid preserve-extended-attributes)
530 "Like `copy-file' for Tramp files. 530 "Like `copy-file' for Tramp files.
531PRESERVE-UID-GID and PRESERVE-SELINUX-CONTEXT are completely ignored." 531PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
532 (setq filename (expand-file-name filename) 532 (setq filename (expand-file-name filename)
533 newname (expand-file-name newname)) 533 newname (expand-file-name newname))
534 534
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index 3d37a0cfc39..5a322866693 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -304,16 +304,17 @@ Not actually used. Use `(format \"%o\" i)' instead?"
304 (wrong-number-of-arguments (file-attributes filename)))))) 304 (wrong-number-of-arguments (file-attributes filename))))))
305 305
306;; PRESERVE-UID-GID does not exist in XEmacs. 306;; PRESERVE-UID-GID does not exist in XEmacs.
307;; PRESERVE-SELINUX-CONTEXT has been introduced with Emacs 24.1. 307;; PRESERVE-EXTENDED-ATTRIBUTES has been introduced with Emacs 24.1
308;; (as PRESERVE-SELINUX-CONTEXT), and renamed in Emacs 24.3.
308(defun tramp-compat-copy-file 309(defun tramp-compat-copy-file
309 (filename newname &optional ok-if-already-exists keep-date 310 (filename newname &optional ok-if-already-exists keep-date
310 preserve-uid-gid preserve-selinux-context) 311 preserve-uid-gid preserve-extended-attributes)
311 "Like `copy-file' for Tramp files (compat function)." 312 "Like `copy-file' for Tramp files (compat function)."
312 (cond 313 (cond
313 (preserve-selinux-context 314 (preserve-extended-attributes
314 (tramp-compat-funcall 315 (tramp-compat-funcall
315 'copy-file filename newname ok-if-already-exists keep-date 316 'copy-file filename newname ok-if-already-exists keep-date
316 preserve-uid-gid preserve-selinux-context)) 317 preserve-uid-gid preserve-extended-attributes))
317 (preserve-uid-gid 318 (preserve-uid-gid
318 (tramp-compat-funcall 319 (tramp-compat-funcall
319 'copy-file filename newname ok-if-already-exists keep-date 320 'copy-file filename newname ok-if-already-exists keep-date
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 1467aede2c3..be83e56d699 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -385,6 +385,7 @@ Every entry is a list (NAME ADDRESS).")
385 ;; `executable-find' is not official yet. performed by default handler. 385 ;; `executable-find' is not official yet. performed by default handler.
386 (expand-file-name . tramp-gvfs-handle-expand-file-name) 386 (expand-file-name . tramp-gvfs-handle-expand-file-name)
387 ;; `file-accessible-directory-p' performed by default handler. 387 ;; `file-accessible-directory-p' performed by default handler.
388 (file-acl . tramp-gvfs-handle-file-acl)
388 (file-attributes . tramp-gvfs-handle-file-attributes) 389 (file-attributes . tramp-gvfs-handle-file-attributes)
389 (file-directory-p . tramp-gvfs-handle-file-directory-p) 390 (file-directory-p . tramp-gvfs-handle-file-directory-p)
390 (file-executable-p . tramp-gvfs-handle-file-executable-p) 391 (file-executable-p . tramp-gvfs-handle-file-executable-p)
@@ -417,6 +418,7 @@ Every entry is a list (NAME ADDRESS).")
417 (make-symbolic-link . ignore) 418 (make-symbolic-link . ignore)
418 (process-file . tramp-gvfs-handle-process-file) 419 (process-file . tramp-gvfs-handle-process-file)
419 (rename-file . tramp-gvfs-handle-rename-file) 420 (rename-file . tramp-gvfs-handle-rename-file)
421 (set-file-acl . tramp-gvfs-handle-set-file-acl)
420 (set-file-modes . tramp-gvfs-handle-set-file-modes) 422 (set-file-modes . tramp-gvfs-handle-set-file-modes)
421 (set-file-selinux-context . tramp-gvfs-handle-set-file-selinux-context) 423 (set-file-selinux-context . tramp-gvfs-handle-set-file-selinux-context)
422 (set-visited-file-modtime . tramp-gvfs-handle-set-visited-file-modtime) 424 (set-visited-file-modtime . tramp-gvfs-handle-set-visited-file-modtime)
@@ -539,7 +541,7 @@ is no information where to trace the message.")
539 541
540(defun tramp-gvfs-handle-copy-file 542(defun tramp-gvfs-handle-copy-file
541 (filename newname &optional ok-if-already-exists keep-date 543 (filename newname &optional ok-if-already-exists keep-date
542 preserve-uid-gid preserve-selinux-context) 544 preserve-uid-gid preserve-extended-attributes)
543 "Like `copy-file' for Tramp files." 545 "Like `copy-file' for Tramp files."
544 (with-parsed-tramp-file-name 546 (with-parsed-tramp-file-name
545 (if (tramp-tramp-file-p filename) filename newname) nil 547 (if (tramp-tramp-file-p filename) filename newname) nil
@@ -555,8 +557,8 @@ is no information where to trace the message.")
555 (tramp-gvfs-fuse-file-name newname) 557 (tramp-gvfs-fuse-file-name newname)
556 newname) 558 newname)
557 ok-if-already-exists keep-date preserve-uid-gid))) 559 ok-if-already-exists keep-date preserve-uid-gid)))
558 (when preserve-selinux-context 560 (when preserve-extended-attributes
559 (setq args (append args (list preserve-selinux-context)))) 561 (setq args (append args (list preserve-extended-attributes))))
560 (apply 'copy-file args)) 562 (apply 'copy-file args))
561 563
562 ;; Error case. Let's try it with the GVFS utilities. 564 ;; Error case. Let's try it with the GVFS utilities.
@@ -655,6 +657,10 @@ is no information where to trace the message.")
655 (tramp-run-real-handler 657 (tramp-run-real-handler
656 'expand-file-name (list localname)))))) 658 'expand-file-name (list localname))))))
657 659
660(defun tramp-gvfs-handle-file-acl (filename)
661 "Like `file-acl' for Tramp files."
662 (tramp-compat-funcall 'file-acl (tramp-gvfs-fuse-file-name filename)))
663
658(defun tramp-gvfs-handle-file-attributes (filename &optional id-format) 664(defun tramp-gvfs-handle-file-attributes (filename &optional id-format)
659 "Like `file-attributes' for Tramp files." 665 "Like `file-attributes' for Tramp files."
660 (file-attributes (tramp-gvfs-fuse-file-name filename) id-format)) 666 (file-attributes (tramp-gvfs-fuse-file-name filename) id-format))
@@ -781,6 +787,11 @@ is no information where to trace the message.")
781 (tramp-flush-file-property v (file-name-directory localname)) 787 (tramp-flush-file-property v (file-name-directory localname))
782 (tramp-flush-file-property v localname)))) 788 (tramp-flush-file-property v localname))))
783 789
790(defun tramp-gvfs-handle-set-file-acl (filename acl-string)
791 "Like `set-file-acl' for Tramp files."
792 (with-tramp-gvfs-error-message filename 'set-file-acl
793 (tramp-gvfs-fuse-file-name filename) acl-string))
794
784(defun tramp-gvfs-handle-set-file-modes (filename mode) 795(defun tramp-gvfs-handle-set-file-modes (filename mode)
785 "Like `set-file-modes' for Tramp files." 796 "Like `set-file-modes' for Tramp files."
786 (with-tramp-gvfs-error-message filename 'set-file-modes 797 (with-tramp-gvfs-error-message filename 'set-file-modes
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 3008601d9ca..788246bffd5 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -985,6 +985,8 @@ This is used to map a mode number to a permission string.")
985 (verify-visited-file-modtime . tramp-sh-handle-verify-visited-file-modtime) 985 (verify-visited-file-modtime . tramp-sh-handle-verify-visited-file-modtime)
986 (file-selinux-context . tramp-sh-handle-file-selinux-context) 986 (file-selinux-context . tramp-sh-handle-file-selinux-context)
987 (set-file-selinux-context . tramp-sh-handle-set-file-selinux-context) 987 (set-file-selinux-context . tramp-sh-handle-set-file-selinux-context)
988 (file-acl . tramp-sh-handle-file-acl)
989 (set-file-acl . tramp-sh-handle-set-file-acl)
988 (vc-registered . tramp-sh-handle-vc-registered)) 990 (vc-registered . tramp-sh-handle-vc-registered))
989 "Alist of handler functions. 991 "Alist of handler functions.
990Operations not mentioned here will be handled by the normal Emacs functions.") 992Operations not mentioned here will be handled by the normal Emacs functions.")
@@ -1532,6 +1534,39 @@ and gid of the corresponding user is taken. Both parameters must be integers."
1532 ;; We always return nil. 1534 ;; We always return nil.
1533 nil) 1535 nil)
1534 1536
1537(defun tramp-remote-acl-p (vec)
1538 "Check, whether ACL is enabled on the remote host."
1539 (with-tramp-connection-property (tramp-get-connection-process vec) "acl-p"
1540 (tramp-send-command-and-check vec "getfacl /")))
1541
1542(defun tramp-sh-handle-file-acl (filename)
1543 "Like `file-acl' for Tramp files."
1544 (with-parsed-tramp-file-name filename nil
1545 (with-tramp-file-property v localname "file-acl"
1546 (when (and (tramp-remote-acl-p v)
1547 (tramp-send-command-and-check
1548 v (format
1549 "getfacl -ac %s 2>/dev/null"
1550 (tramp-shell-quote-argument localname))))
1551 (with-current-buffer (tramp-get-connection-buffer v)
1552 (buffer-string))))))
1553
1554(defun tramp-sh-handle-set-file-acl (filename acl-string)
1555 "Like `set-file-acl' for Tramp files."
1556 (with-parsed-tramp-file-name filename nil
1557 (if (and (stringp acl-string)
1558 (tramp-remote-acl-p v)
1559 (tramp-send-command-and-check
1560 v
1561 (format "setfacl --set-file=- %s <<'EOF'\n%s\nEOF\n"
1562 (tramp-shell-quote-argument localname)
1563 acl-string)
1564 t))
1565 (tramp-set-file-property v localname "file-acl" acl-string)
1566 (tramp-set-file-property v localname "file-acl-string" 'undef)))
1567 ;; We always return nil.
1568 nil)
1569
1535;; Simple functions using the `test' command. 1570;; Simple functions using the `test' command.
1536 1571
1537(defun tramp-sh-handle-file-executable-p (filename) 1572(defun tramp-sh-handle-file-executable-p (filename)
@@ -1883,7 +1918,7 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'"
1883 1918
1884(defun tramp-sh-handle-copy-file 1919(defun tramp-sh-handle-copy-file
1885 (filename newname &optional ok-if-already-exists keep-date 1920 (filename newname &optional ok-if-already-exists keep-date
1886 preserve-uid-gid preserve-selinux-context) 1921 preserve-uid-gid preserve-extended-attributes)
1887 "Like `copy-file' for Tramp files." 1922 "Like `copy-file' for Tramp files."
1888 (setq filename (expand-file-name filename)) 1923 (setq filename (expand-file-name filename))
1889 (setq newname (expand-file-name newname)) 1924 (setq newname (expand-file-name newname))
@@ -1893,13 +1928,13 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'"
1893 (tramp-tramp-file-p newname)) 1928 (tramp-tramp-file-p newname))
1894 (tramp-do-copy-or-rename-file 1929 (tramp-do-copy-or-rename-file
1895 'copy filename newname ok-if-already-exists keep-date 1930 'copy filename newname ok-if-already-exists keep-date
1896 preserve-uid-gid preserve-selinux-context)) 1931 preserve-uid-gid preserve-extended-attributes))
1897 ;; Compat section. 1932 ;; Compat section.
1898 (preserve-selinux-context 1933 (preserve-extended-attributes
1899 (tramp-run-real-handler 1934 (tramp-run-real-handler
1900 'copy-file 1935 'copy-file
1901 (list filename newname ok-if-already-exists keep-date 1936 (list filename newname ok-if-already-exists keep-date
1902 preserve-uid-gid preserve-selinux-context))) 1937 preserve-uid-gid preserve-extended-attributes)))
1903 (preserve-uid-gid 1938 (preserve-uid-gid
1904 (tramp-run-real-handler 1939 (tramp-run-real-handler
1905 'copy-file 1940 'copy-file
@@ -1962,7 +1997,7 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'"
1962 1997
1963(defun tramp-do-copy-or-rename-file 1998(defun tramp-do-copy-or-rename-file
1964 (op filename newname &optional ok-if-already-exists keep-date 1999 (op filename newname &optional ok-if-already-exists keep-date
1965 preserve-uid-gid preserve-selinux-context) 2000 preserve-uid-gid preserve-extended-attributes)
1966 "Copy or rename a remote file. 2001 "Copy or rename a remote file.
1967OP must be `copy' or `rename' and indicates the operation to perform. 2002OP must be `copy' or `rename' and indicates the operation to perform.
1968FILENAME specifies the file to copy or rename, NEWNAME is the name of 2003FILENAME specifies the file to copy or rename, NEWNAME is the name of
@@ -1971,7 +2006,7 @@ OK-IF-ALREADY-EXISTS means don't barf if NEWNAME exists already.
1971KEEP-DATE means to make sure that NEWNAME has the same timestamp 2006KEEP-DATE means to make sure that NEWNAME has the same timestamp
1972as FILENAME. PRESERVE-UID-GID, when non-nil, instructs to keep 2007as FILENAME. PRESERVE-UID-GID, when non-nil, instructs to keep
1973the uid and gid if both files are on the same host. 2008the uid and gid if both files are on the same host.
1974PRESERVE-SELINUX-CONTEXT activates selinux commands. 2009PRESERVE-EXTENDED-ATTRIBUTES activates selinux and acl commands.
1975 2010
1976This function is invoked by `tramp-sh-handle-copy-file' and 2011This function is invoked by `tramp-sh-handle-copy-file' and
1977`tramp-sh-handle-rename-file'. It is an error if OP is neither 2012`tramp-sh-handle-rename-file'. It is an error if OP is neither
@@ -1982,8 +2017,8 @@ file names."
1982 (let ((t1 (tramp-tramp-file-p filename)) 2017 (let ((t1 (tramp-tramp-file-p filename))
1983 (t2 (tramp-tramp-file-p newname)) 2018 (t2 (tramp-tramp-file-p newname))
1984 (length (nth 7 (file-attributes (file-truename filename)))) 2019 (length (nth 7 (file-attributes (file-truename filename))))
1985 (context (and preserve-selinux-context 2020 (attributes (and preserve-extended-attributes
1986 (apply 'file-selinux-context (list filename)))) 2021 (apply 'file-extended-attributes (list filename))))
1987 pr tm) 2022 pr tm)
1988 2023
1989 (with-parsed-tramp-file-name (if t1 filename newname) nil 2024 (with-parsed-tramp-file-name (if t1 filename newname) nil
@@ -2053,8 +2088,9 @@ file names."
2053 ;; One of them must be a Tramp file. 2088 ;; One of them must be a Tramp file.
2054 (error "Tramp implementation says this cannot happen"))) 2089 (error "Tramp implementation says this cannot happen")))
2055 2090
2056 ;; Handle `preserve-selinux-context'. 2091 ;; Handle `preserve-extended-attributes'.
2057 (when context (apply 'set-file-selinux-context (list newname context))) 2092 (when attributes
2093 (apply 'set-file-extended-attributes (list newname attributes)))
2058 2094
2059 ;; In case of `rename', we must flush the cache of the source file. 2095 ;; In case of `rename', we must flush the cache of the source file.
2060 (when (and t1 (eq op 'rename)) 2096 (when (and t1 (eq op 'rename))
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index d4386a5374c..f97d4620b97 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -195,6 +195,7 @@ See `tramp-actions-before-shell' for more info.")
195 (dired-uncache . tramp-handle-dired-uncache) 195 (dired-uncache . tramp-handle-dired-uncache)
196 (expand-file-name . tramp-smb-handle-expand-file-name) 196 (expand-file-name . tramp-smb-handle-expand-file-name)
197 (file-accessible-directory-p . tramp-smb-handle-file-directory-p) 197 (file-accessible-directory-p . tramp-smb-handle-file-directory-p)
198 (file-acl . ignore)
198 (file-attributes . tramp-smb-handle-file-attributes) 199 (file-attributes . tramp-smb-handle-file-attributes)
199 (file-directory-p . tramp-smb-handle-file-directory-p) 200 (file-directory-p . tramp-smb-handle-file-directory-p)
200 (file-executable-p . tramp-handle-file-exists-p) 201 (file-executable-p . tramp-handle-file-exists-p)
@@ -227,6 +228,7 @@ See `tramp-actions-before-shell' for more info.")
227 (make-symbolic-link . tramp-smb-handle-make-symbolic-link) 228 (make-symbolic-link . tramp-smb-handle-make-symbolic-link)
228 (process-file . tramp-smb-handle-process-file) 229 (process-file . tramp-smb-handle-process-file)
229 (rename-file . tramp-smb-handle-rename-file) 230 (rename-file . tramp-smb-handle-rename-file)
231 (set-file-acl . ignore)
230 (set-file-modes . tramp-smb-handle-set-file-modes) 232 (set-file-modes . tramp-smb-handle-set-file-modes)
231 ;; `set-file-selinux-context' performed by default handler. 233 ;; `set-file-selinux-context' performed by default handler.
232 (set-file-times . ignore) 234 (set-file-times . ignore)
@@ -487,10 +489,10 @@ pass to the OPERATION."
487 489
488(defun tramp-smb-handle-copy-file 490(defun tramp-smb-handle-copy-file
489 (filename newname &optional ok-if-already-exists keep-date 491 (filename newname &optional ok-if-already-exists keep-date
490 preserve-uid-gid preserve-selinux-context) 492 preserve-uid-gid preserve-extended-attributes)
491 "Like `copy-file' for Tramp files. 493 "Like `copy-file' for Tramp files.
492KEEP-DATE has no effect in case NEWNAME resides on an SMB server. 494KEEP-DATE has no effect in case NEWNAME resides on an SMB server.
493PRESERVE-UID-GID and PRESERVE-SELINUX-CONTEXT are completely ignored." 495PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
494 (setq filename (expand-file-name filename) 496 (setq filename (expand-file-name filename)
495 newname (expand-file-name newname)) 497 newname (expand-file-name newname))
496 (with-tramp-progress-reporter 498 (with-tramp-progress-reporter
@@ -1813,5 +1815,6 @@ Returns nil if an error message has appeared."
1813;; * Try to remove the inclusion of dummy "" directory. Seems to be at 1815;; * Try to remove the inclusion of dummy "" directory. Seems to be at
1814;; several places, especially in `tramp-smb-handle-insert-directory'. 1816;; several places, especially in `tramp-smb-handle-insert-directory'.
1815;; * Ignore case in file names. 1817;; * Ignore case in file names.
1818;; * Implement `tramp-smb-handle-file-acl' for proper Samba versions.
1816 1819
1817;;; tramp-smb.el ends here 1820;;; tramp-smb.el ends here
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index a4d36cbe72c..a4be6eab41f 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1879,7 +1879,8 @@ ARGS are the arguments OPERATION has been called with."
1879 ;; Emacs 22+ only. 1879 ;; Emacs 22+ only.
1880 'set-file-times 1880 'set-file-times
1881 ;; Emacs 24+ only. 1881 ;; Emacs 24+ only.
1882 'file-selinux-context 'set-file-selinux-context 1882 'file-acl 'file-selinux-context
1883 'set-file-acl 'set-file-selinux-context
1883 ;; XEmacs only. 1884 ;; XEmacs only.
1884 'abbreviate-file-name 'create-file-buffer 1885 'abbreviate-file-name 'create-file-buffer
1885 'dired-file-modtime 'dired-make-compressed-filename 1886 'dired-file-modtime 'dired-make-compressed-filename