]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug in tramp-handle-file-truename
authorMichael Albinus <michael.albinus@gmx.de>
Sat, 18 Nov 2017 13:24:03 +0000 (14:24 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Sat, 18 Nov 2017 13:24:03 +0000 (14:24 +0100)
* lisp/net/tramp.el (tramp-handle-file-truename): Expand localname.

* test/lisp/net/tramp-tests.el (tramp-test21-file-links): Check also
relative symbolic links.

lisp/net/tramp.el
test/lisp/net/tramp-tests.el

index 3d5dcbdbb14a2d8fb940e211e3784eec78b95a62..aadfcadebcf6a876b1bf4e9e8cd8c6e6d28a1959 100644 (file)
@@ -3207,7 +3207,8 @@ User is always nil."
                         (if (file-remote-p symlink-target)
                             (let (file-name-handler-alist)
                               (tramp-compat-file-name-quote symlink-target))
-                          symlink-target)
+                          (expand-file-name
+                           symlink-target (file-name-directory v2-localname)))
                       v2-localname)))))
           (when (>= numchase numchase-limit)
             (tramp-error
index cf85b071e19321075305aadf112131d079af0a14..62f72a3f6f665ece23ac6c8314c07cbdb2fbe854 100644 (file)
@@ -2671,7 +2671,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
            (should-error
             (make-symbolic-link tmp-name1 tmp-name2)
             :type 'file-already-exists)
-           ;; number means interactive case.
+           ;; number means interactive case.
            (cl-letf (((symbol-function 'yes-or-no-p) 'ignore))
              (should-error
               (make-symbolic-link tmp-name1 tmp-name2 0)
@@ -2783,6 +2783,15 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
            (should
             (string-equal (file-truename tmp-name1) (file-truename tmp-name2)))
            (should (file-equal-p tmp-name1 tmp-name2))
+           ;; Check relative symlink file name.
+           (delete-file tmp-name2)
+           (let ((default-directory tramp-test-temporary-file-directory))
+             (make-symbolic-link (file-name-nondirectory tmp-name1) tmp-name2))
+           (should (file-symlink-p tmp-name2))
+           (should-not (string-equal tmp-name2 (file-truename tmp-name2)))
+           (should
+            (string-equal (file-truename tmp-name1) (file-truename tmp-name2)))
+           (should (file-equal-p tmp-name1 tmp-name2))
            ;; Symbolic links could look like a remote file name.
            ;; They must be quoted then.
            (delete-file tmp-name2)