Handle empty strings in Tramp's expand-file-name implementations
* lisp/net/tramp.el (tramp-handle-expand-file-name): * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-expand-file-name): * lisp/net/tramp-sh.el (tramp-sh-handle-expand-file-name): * lisp/net/tramp-smb.el (tramp-smb-handle-expand-file-name): * lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-expand-file-name): Handle empty NAME. * test/lisp/net/tramp-tests.el (tramp-test01-file-name-syntax) (tramp-test01-file-name-syntax-simplified) (tramp-test01-file-name-syntax-separate): Use neutral IPv4 address. (tramp-test05-expand-file-name): Check also "." and "".
This commit is contained in:
parent
a3be45ddf4
commit
be147d2419
6 changed files with 29 additions and 7 deletions
|
@ -883,6 +883,8 @@ file names."
|
|||
"Like `expand-file-name' for Tramp files."
|
||||
;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
|
||||
(setq dir (or dir default-directory "/"))
|
||||
;; Handle empty NAME.
|
||||
(when (zerop (length name)) (setq name "."))
|
||||
;; Unless NAME is absolute, concat DIR and NAME.
|
||||
(unless (file-name-absolute-p name)
|
||||
(setq name (concat (file-name-as-directory dir) name)))
|
||||
|
|
|
@ -2716,6 +2716,8 @@ If the localname part of the given file name starts with \"/../\" then
|
|||
the result will be a local, non-Tramp, file name."
|
||||
;; If DIR is not given, use `default-directory' or "/".
|
||||
(setq dir (or dir default-directory "/"))
|
||||
;; Handle empty NAME.
|
||||
(when (zerop (length name)) (setq name "."))
|
||||
;; Unless NAME is absolute, concat DIR and NAME.
|
||||
(unless (file-name-absolute-p name)
|
||||
(setq name (concat (file-name-as-directory dir) name)))
|
||||
|
|
|
@ -692,6 +692,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
|
|||
"Like `expand-file-name' for Tramp files."
|
||||
;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
|
||||
(setq dir (or dir default-directory "/"))
|
||||
;; Handle empty NAME.
|
||||
(when (zerop (length name)) (setq name "."))
|
||||
;; Unless NAME is absolute, concat DIR and NAME.
|
||||
(unless (file-name-absolute-p name)
|
||||
(setq name (concat (file-name-as-directory dir) name)))
|
||||
|
|
|
@ -353,6 +353,8 @@ If the localname part of the given file name starts with \"/../\" then
|
|||
the result will be a local, non-Tramp, file name."
|
||||
;; If DIR is not given, use `default-directory' or "/".
|
||||
(setq dir (or dir default-directory "/"))
|
||||
;; Handle empty NAME.
|
||||
(when (zerop (length name)) (setq name "."))
|
||||
;; Unless NAME is absolute, concat DIR and NAME.
|
||||
(unless (file-name-absolute-p name)
|
||||
(setq name (concat (file-name-as-directory dir) name)))
|
||||
|
|
|
@ -3069,6 +3069,8 @@ User is always nil."
|
|||
"Like `expand-file-name' for Tramp files."
|
||||
;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
|
||||
(setq dir (or dir default-directory "/"))
|
||||
;; Handle empty NAME.
|
||||
(when (zerop (length name)) (setq name "."))
|
||||
;; Unless NAME is absolute, concat DIR and NAME.
|
||||
(unless (file-name-absolute-p name)
|
||||
(setq name (concat (file-name-as-directory dir) name)))
|
||||
|
|
|
@ -238,8 +238,8 @@ properly. BODY shall not contain a timeout."
|
|||
(should (tramp-tramp-file-p "/method:user@[::1]:"))
|
||||
|
||||
;; Using an IPv4 mapped IPv6 address.
|
||||
(should (tramp-tramp-file-p "/method:[::ffff:192.168.0.1]:"))
|
||||
(should (tramp-tramp-file-p "/method:user@[::ffff:192.168.0.1]:"))
|
||||
(should (tramp-tramp-file-p "/method:[::ffff:1.2.3.4]:"))
|
||||
(should (tramp-tramp-file-p "/method:user@[::ffff:1.2.3.4]:"))
|
||||
|
||||
;; Local file name part.
|
||||
(should (tramp-tramp-file-p "/method:::"))
|
||||
|
@ -268,7 +268,7 @@ properly. BODY shall not contain a timeout."
|
|||
(should-not (tramp-tramp-file-p "/1.2.3.4:"))
|
||||
(should-not (tramp-tramp-file-p "/[]:"))
|
||||
(should-not (tramp-tramp-file-p "/[::1]:"))
|
||||
(should-not (tramp-tramp-file-p "/[::ffff:192.168.0.1]:"))
|
||||
(should-not (tramp-tramp-file-p "/[::ffff:1.2.3.4]:"))
|
||||
(should-not (tramp-tramp-file-p "/host:/:"))
|
||||
(should-not (tramp-tramp-file-p "/host1|host2:"))
|
||||
(should-not (tramp-tramp-file-p "/user1@host1|user2@host2:"))
|
||||
|
@ -318,8 +318,8 @@ properly. BODY shall not contain a timeout."
|
|||
(should (tramp-tramp-file-p "/user@[::1]:"))
|
||||
|
||||
;; Using an IPv4 mapped IPv6 address.
|
||||
(should (tramp-tramp-file-p "/[::ffff:192.168.0.1]:"))
|
||||
(should (tramp-tramp-file-p "/user@[::ffff:192.168.0.1]:"))
|
||||
(should (tramp-tramp-file-p "/[::ffff:1.2.3.4]:"))
|
||||
(should (tramp-tramp-file-p "/user@[::ffff:1.2.3.4]:"))
|
||||
|
||||
;; Local file name part.
|
||||
(should (tramp-tramp-file-p "/host::"))
|
||||
|
@ -372,8 +372,8 @@ properly. BODY shall not contain a timeout."
|
|||
(should (tramp-tramp-file-p "/[method/user@::1]"))
|
||||
|
||||
;; Using an IPv4 mapped IPv6 address.
|
||||
(should (tramp-tramp-file-p "/[method/::ffff:192.168.0.1]"))
|
||||
(should (tramp-tramp-file-p "/[method/user@::ffff:192.168.0.1]"))
|
||||
(should (tramp-tramp-file-p "/[method/::ffff:1.2.3.4]"))
|
||||
(should (tramp-tramp-file-p "/[method/user@::ffff:1.2.3.4]"))
|
||||
|
||||
;; Local file name part.
|
||||
(should (tramp-tramp-file-p "/[method/]"))
|
||||
|
@ -1988,6 +1988,18 @@ properly. BODY shall not contain a timeout."
|
|||
(should
|
||||
(string-equal
|
||||
(expand-file-name "/method:host:/path/../file") "/method:host:/file"))
|
||||
(should
|
||||
(string-equal
|
||||
(expand-file-name "/method:host:/path/.") "/method:host:/path"))
|
||||
(should
|
||||
(string-equal
|
||||
(expand-file-name "/method:host:/path/..") "/method:host:/"))
|
||||
(should
|
||||
(string-equal
|
||||
(expand-file-name "." "/method:host:/path/") "/method:host:/path"))
|
||||
(should
|
||||
(string-equal
|
||||
(expand-file-name "" "/method:host:/path/") "/method:host:/path"))
|
||||
;; Quoting local part.
|
||||
(should
|
||||
(string-equal
|
||||
|
|
Loading…
Add table
Reference in a new issue