]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix (Bug#32218). Do not merge with master
authorMichael Albinus <michael.albinus@gmx.de>
Fri, 20 Jul 2018 08:56:41 +0000 (10:56 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Fri, 20 Jul 2018 08:56:41 +0000 (10:56 +0200)
* doc/misc/trampver.texi:
* lisp/net/trampver.el: Change version to "2.3.4.26.2".
(customize-package-emacs-version-alist): Add Tramp version
integrated in Emacs 26.2.

* lisp/net/tramp.el (tramp-handle-file-truename):
* lisp/net/tramp-adb.el (tramp-adb-handle-file-truename):
* lisp/net/tramp-sh.el (tramp-sh-handle-file-truename): Fix problem
with trailing slash.  (Bug#32218)

* test/lisp/net/tramp-tests.el (tramp-test21-file-links):
Remove `tramp--test-emacs27-p' check.

doc/misc/trampver.texi
lisp/net/tramp-adb.el
lisp/net/tramp-sh.el
lisp/net/tramp.el
lisp/net/trampver.el
test/lisp/net/tramp-tests.el

index 0970e4e3b3476a2dd35e9ae6a072e3deb4dd4f46..c6473f5b734377d2df6763c6ae1b9504cf711f47 100644 (file)
@@ -8,7 +8,7 @@
 @c In the Tramp GIT, the version number is auto-frobbed from
 @c configure.ac, so you should edit that file and run
 @c "autoconf && ./configure" to change the version number.
-@set trampver 2.3.4
+@set trampver 2.3.4.26.2
 
 @c Other flags from configuration
 @set instprefix /usr/local
index 58f748bd71589d325308859bc23d29fd5b631db0..0576cbe96360ad523fdf5a4c778565113d57f9ec 100644 (file)
@@ -281,13 +281,16 @@ pass to the OPERATION."
 ;; code could be shared?
 (defun tramp-adb-handle-file-truename (filename)
   "Like `file-truename' for Tramp files."
-  (format
-   "%s%s"
+   ;; Preserve trailing "/".
+  (funcall
+   (if (string-equal (file-name-nondirectory filename) "")
+       'file-name-as-directory 'identity)
    (with-parsed-tramp-file-name (expand-file-name filename) nil
      (tramp-make-tramp-file-name
       method user domain host port
       (with-tramp-file-property v localname "file-truename"
-       (let ((result nil))                     ; result steps in reverse order
+       (let ((result nil)                      ; result steps in reverse order
+             (quoted (tramp-compat-file-name-quoted-p localname)))
          (tramp-message v 4 "Finding true name for `%s'" filename)
          (let* ((steps (split-string localname "/" 'omit))
                 (localnamedir (tramp-run-real-handler
@@ -359,11 +362,19 @@ pass to the OPERATION."
                                  (not (string= (substring result -1) "/"))))
              (setq result (concat result "/"))))
 
+         ;; Detect cycle.
+         (when (and (file-symlink-p filename)
+                    (string-equal result localname))
+           (tramp-error
+            v 'file-error
+            "Apparent cycle of symbolic links for %s" filename))
+         ;; If the resulting localname looks remote, we must quote it
+         ;; for security reasons.
+         (when (or quoted (file-remote-p result))
+           (let (file-name-handler-alist)
+             (setq result (tramp-compat-file-name-quote result))))
          (tramp-message v 4 "True name of `%s' is `%s'" localname result)
-         result))))
-
-   ;; Preserve trailing "/".
-   (if (string-equal (file-name-nondirectory filename) "") "/" "")))
+         result))))))
 
 (defun tramp-adb-handle-file-attributes (filename &optional id-format)
   "Like `file-attributes' for Tramp files."
index 212be4f36a00d69e82a721ecaecdb35dde370a3b..3f83697c6bf043166119ded5d794767b5d587a97 100644 (file)
@@ -1118,8 +1118,10 @@ component is used as the target of the symlink."
 
 (defun tramp-sh-handle-file-truename (filename)
   "Like `file-truename' for Tramp files."
-  (format
-   "%s%s"
+   ;; Preserve trailing "/".
+  (funcall
+   (if (string-equal (file-name-nondirectory filename) "")
+       'file-name-as-directory 'identity)
    (with-parsed-tramp-file-name (expand-file-name filename) nil
      (tramp-make-tramp-file-name
       method user domain host port
@@ -1223,10 +1225,7 @@ component is used as the target of the symlink."
            (let (file-name-handler-alist)
              (setq result (tramp-compat-file-name-quote result))))
          (tramp-message v 4 "True name of `%s' is `%s'" localname result)
-         result))))
-
-   ;; Preserve trailing "/".
-   (if (string-equal (file-name-nondirectory filename) "") "/" "")))
+         result))))))
 
 ;; Basic functions.
 
index 59f4ceaa542a5983241acf645a8752ffcb46806e..134475755993d313a61c908e68e8c3cadf17029a 100644 (file)
@@ -3153,17 +3153,18 @@ User is always nil."
 
 (defun tramp-handle-file-truename (filename)
   "Like `file-truename' for Tramp files."
-  (let ((result (expand-file-name filename))
-       (numchase 0)
-       ;; Don't make the following value larger than
-       ;; necessary.  People expect an error message in a
-       ;; timely fashion when something is wrong;
-       ;; otherwise they might think that Emacs is hung.
-       ;; Of course, correctness has to come first.
-       (numchase-limit 20)
-       symlink-target)
-    (format
-     "%s%s"
+  ;; Preserve trailing "/".
+  (funcall
+   (if (string-equal (file-name-nondirectory filename) "")
+       'file-name-as-directory 'identity)
+   (let ((result (expand-file-name filename))
+        (numchase 0)
+        ;; Don't make the following value larger than necessary.
+        ;; People expect an error message in a timely fashion when
+        ;; something is wrong; otherwise they might think that Emacs
+        ;; is hung.  Of course, correctness has to come first.
+        (numchase-limit 20)
+        symlink-target)
      (with-parsed-tramp-file-name result v1
        (with-tramp-file-property v1 v1-localname "file-truename"
         (while (and (setq symlink-target (file-symlink-p result))
@@ -3188,10 +3189,7 @@ User is always nil."
             (tramp-error
              v1 'file-error
              "Maximum number (%d) of symlinks exceeded" numchase-limit)))
-        (directory-file-name result)))
-
-     ;; Preserve trailing "/".
-     (if (string-equal (file-name-nondirectory filename) "") "/" ""))))
+        (directory-file-name result))))))
 
 (defun tramp-handle-find-backup-file-name (filename)
   "Like `find-backup-file-name' for Tramp files."
index d02e6bcc2bd079ed9c9f4ca1549925a870796e77..6454b5b8f8b6e66ac356c01ba450b639f29a6f55 100644 (file)
@@ -7,7 +7,7 @@
 ;; Maintainer: Michael Albinus <michael.albinus@gmx.de>
 ;; Keywords: comm, processes
 ;; Package: tramp
-;; Version: 2.3.4
+;; Version: 2.3.4.26.2
 
 ;; This file is part of GNU Emacs.
 
@@ -33,7 +33,7 @@
 ;; should be changed only there.
 
 ;;;###tramp-autoload
-(defconst tramp-version "2.3.4"
+(defconst tramp-version "2.3.4.26.2"
   "This version of Tramp.")
 
 ;;;###tramp-autoload
@@ -55,7 +55,7 @@
 ;; Check for Emacs version.
 (let ((x (if (>= emacs-major-version 24)
     "ok"
-  (format "Tramp 2.3.4 is not fit for %s"
+  (format "Tramp 2.3.4.26.2 is not fit for %s"
          (when (string-match "^.*$" (emacs-version))
            (match-string 0 (emacs-version)))))))
   (unless (string-match "\\`ok\\'" x) (error "%s" x)))
@@ -70,7 +70,7 @@
         ("2.2.9-24.4" . "24.4") ("2.2.11-24.5" . "24.5")
         ("2.2.13.25.1" . "25.1") ("2.2.13.25.2" . "25.2")
         ("2.2.13.25.2" . "25.3")
-        ("2.3.3.26.1" . "26.1")))
+        ("2.3.3.26.1" . "26.1") ("2.3.4.26.2" . "26.2")))
 
 (add-hook 'tramp-unload-hook
          (lambda ()
index e70f00eb2cfc93c3da9561fd1939287939010cc8..8f810818af1d92f5d3c895b88cbec6f3c4459214 100644 (file)
@@ -2855,10 +2855,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
              ;; We must unquote it.
              (should
               (string-equal
-               (funcall
-                (if (tramp--test-emacs27-p)
-                    'tramp-compat-file-name-unquote 'identity)
-                (file-truename tmp-name1))
+               (file-truename tmp-name1)
                (tramp-compat-file-name-unquote (file-truename tmp-name3))))))
 
        ;; Cleanup.