From: Michael Albinus Date: Wed, 9 Nov 2016 14:34:40 +0000 (+0100) Subject: Refine multi-hop specs in Tramp X-Git-Tag: emacs-26.0.90~1350 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=dba9bc9752f62c782853c7a652e84e33f0649c3b;p=emacs.git Refine multi-hop specs in Tramp * lisp/net/tramp.el (tramp-tramp-file-p): Suppress "/:" and "/c:". * test/lisp/net/tramp-tests.el (tramp-test01-file-name-syntax): Multi-hop specs don't need a method. "/h:" is allowed on non MS Windows. --- diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 8a81311508f..00ecb375c59 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1146,6 +1146,11 @@ entry does not exist, return nil." "Return t if NAME is a string with Tramp file name syntax." (save-match-data (and (stringp name) + ;; No "/:" and "/c:". This is not covered by `tramp-file-name-regexp'. + (not (string-match + (if (memq system-type '(cygwin windows-nt)) + "^/[[:alpha:]]?:" "^/:") + name)) (string-match tramp-file-name-regexp name)))) (defun tramp-find-method (method user host) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 5d9d3a039b6..4c3b83cdcd1 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -185,6 +185,8 @@ handled properly. BODY shall not contain a timeout." (should (tramp-tramp-file-p "/method1:user1@host1|method2:user2@host2:")) (should (tramp-tramp-file-p "/method1:user1@host1|method2:user2@host2|method3:user3@host3:")) + (should (tramp-tramp-file-p "/host1|host2:")) + (should (tramp-tramp-file-p "/user1@host1|user2@host2:")) ;; No strings. (should-not (tramp-tramp-file-p nil)) @@ -193,12 +195,13 @@ handled properly. BODY shall not contain a timeout." (should-not (tramp-tramp-file-p "/::")) (should-not (tramp-tramp-file-p "/:@:")) (should-not (tramp-tramp-file-p "/:[]:")) - ;; Multihops require a method. - (should-not (tramp-tramp-file-p "/host1|host2:")) ;; Methods or hostnames shall be at least two characters on MS Windows. - (when (memq system-type '(cygwin windows-nt)) - (should-not (tramp-tramp-file-p "/c:/path/to/file")) - (should-not (tramp-tramp-file-p "/c::/path/to/file")))) + (let ((system-type 'windows-nt)) + (should-not (tramp-tramp-file-p "/c:/path/to/file")) + (should-not (tramp-tramp-file-p "/c::/path/to/file"))) + (let ((system-type 'gnu/linux)) + (should (tramp-tramp-file-p "/h:/path/to/file")) + (should (tramp-tramp-file-p "/m::/path/to/file")))) (ert-deftest tramp-test02-file-name-dissect () "Check remote file name components."