diff options
Diffstat (limited to 'lisp/net/tramp.el')
-rw-r--r-- | lisp/net/tramp.el | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index b69e143ff14..c0f1cb161ec 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1450,16 +1450,24 @@ If nil, return `tramp-default-port'." (put #'tramp-file-name-port-or-default 'tramp-suppress-trace t) +(defun tramp-file-name-unify (vec) + "Unify VEC by removing localname and hop from `tramp-file-name' structure. +Objects returned by this function compare `equal' if they refer to the +same connection. Make a copy in order to avoid side effects." + (when (tramp-file-name-p vec) + (setq vec (copy-tramp-file-name vec)) + (setf (tramp-file-name-localname vec) nil + (tramp-file-name-hop vec) nil)) + vec) + +(put #'tramp-file-name-unify 'tramp-suppress-trace t) + ;; Comparison of file names is performed by `tramp-equal-remote'. (defun tramp-file-name-equal-p (vec1 vec2) "Check, whether VEC1 and VEC2 denote the same `tramp-file-name'." (and (tramp-file-name-p vec1) (tramp-file-name-p vec2) - (string-equal (tramp-file-name-method vec1) - (tramp-file-name-method vec2)) - (string-equal (tramp-file-name-user-domain vec1) - (tramp-file-name-user-domain vec2)) - (string-equal (tramp-file-name-host-port vec1) - (tramp-file-name-host-port vec2)))) + (equal (tramp-file-name-unify vec1) + (tramp-file-name-unify vec2)))) (defun tramp-get-method-parameter (vec param) "Return the method parameter PARAM. @@ -3846,7 +3854,7 @@ User is always nil." (delete-file (tramp-make-tramp-file-name v remote-copy 'nohop)))) ;; Result. - (cons (expand-file-name filename) (cdr result))))) + (cons filename (cdr result))))) (defun tramp-get-lock-file (file) "Read lockfile info of FILE. |