]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-tramp-file-p): Check, whether NAME is unibyte.
authorMichael Albinus <michael.albinus@gmx.de>
Thu, 24 Jan 2013 09:50:02 +0000 (10:50 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Thu, 24 Jan 2013 09:50:02 +0000 (10:50 +0100)
* net/tramp-sh.el (tramp-sh-handle-set-file-acl): Do not suppress
basic attributes.
(tramp-sh-handle-set-file-acl): Improve error checking.

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

index afab39e6efc61af957df01567bfac11bb9c12fbb..9c4f8f37a9b57a0c1388457232d929fff8abef6f 100644 (file)
@@ -1,3 +1,11 @@
+2013-01-24  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-tramp-file-p): Check, whether NAME is unibyte.
+
+       * net/tramp-sh.el (tramp-sh-handle-set-file-acl): Do not suppress
+       basic attributes.
+       (tramp-sh-handle-set-file-acl): Improve error checking.
+
 2013-01-24  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * doc-view.el (doc-view-display): Force mode line update until all
index 743c8dbe0f9e0170cea4731c660548bc56e87f5d..21c747967af47fa037a4fc4e40d9a562a33f534a 100644 (file)
@@ -1549,7 +1549,7 @@ be non-negative integers."
       (when (and (tramp-remote-acl-p v)
                 (tramp-send-command-and-check
                  v (format
-                    "getfacl -acs %s 2>/dev/null"
+                    "getfacl -ac %s 2>/dev/null"
                     (tramp-shell-quote-argument localname))))
        (with-current-buffer (tramp-get-connection-buffer v)
          (goto-char (point-max))
@@ -1560,21 +1560,20 @@ be non-negative integers."
 
 (defun tramp-sh-handle-set-file-acl (filename acl-string)
   "Like `set-file-acl' for Tramp files."
-  (with-parsed-tramp-file-name filename nil
-    (when (tramp-remote-acl-p v)
-      (condition-case nil
-         (when (stringp acl-string)
-           (tramp-set-file-property v localname "file-acl" acl-string)
-           (dolist (line (split-string acl-string nil t) t)
-             (unless (tramp-send-command-and-check
-                      v (format
-                         "setfacl -m %s %s"
-                         line (tramp-shell-quote-argument localname)))
-               (error nil))))
-       ;; In case of errors, we return `nil'.
-       (error
-        (tramp-set-file-property v localname "file-acl" 'undef)
-        nil)))))
+  (with-parsed-tramp-file-name (expand-file-name filename) nil
+    (if (and (stringp acl-string) (tramp-remote-acl-p v)
+            (progn
+              (tramp-send-command
+               v (format "setfacl --set-file=- %s <<'EOF'\n%s\nEOF\n"
+                         (tramp-shell-quote-argument localname) acl-string))
+              (tramp-send-command-and-check v nil)))
+       ;; Success.
+       (progn
+         (tramp-set-file-property v localname "file-acl" acl-string)
+         t)
+      ;; In case of errors, we return `nil'.
+      (tramp-set-file-property v localname "file-acl-string" 'undef)
+      nil)))
 
 ;; Simple functions using the `test' command.
 
index 69e82de3f7f5aefdc5f4757965235b7117997827..045304cbc4f05b760577dbb20b90f36ae0f83c1a 100644 (file)
@@ -1140,9 +1140,12 @@ If the `tramp-methods' entry does not exist, return nil."
 
 ;;;###tramp-autoload
 (defun tramp-tramp-file-p (name)
-  "Return t if NAME is a string with Tramp file name syntax."
+  "Return t if NAME is a string with Tramp file name syntax.
+It checks also, whether NAME is unibyte encoded."
   (save-match-data
-    (and (stringp name) (string-match tramp-file-name-regexp name))))
+    (and (stringp name)
+        (string-equal name (string-as-unibyte name))
+        (string-match tramp-file-name-regexp name))))
 
 (defun tramp-find-method (method user host)
   "Return the right method string to use.