Commit 7553e0f4 authored by Paul Eggert's avatar Paul Eggert

Quote file-truename symlink to "../foo:bar:"

Problem reported by Michael Albinus (Bug#28264#19).
* lisp/files.el (files--splice-dirname-file): Fix bug where
a relative symlink to "../foo:bar:" did not quote the result.
parent 98f01a13
......@@ -1155,19 +1155,19 @@ names beginning with `~'."
(defun files--splice-dirname-file (dirname file)
"Splice DIRNAME to FILE like the operating system would.
If FILENAME is relative, return DIRNAME concatenated to FILE.
If FILE is relative, return DIRNAME concatenated to FILE.
Otherwise return FILE, quoted as needed if DIRNAME and FILE have
different handlers; although this quoting is dubious if DIRNAME
is magic, it is not clear what would be better. This function
differs from `expand-file-name' in that DIRNAME must be a
directory name and leading `~' and `/:' are not special in FILE."
(if (files--name-absolute-system-p file)
(if (eq (find-file-name-handler dirname 'file-symlink-p)
(find-file-name-handler file 'file-symlink-p))
;; If `file' is remote, we want to quote it at the beginning.
(let (file-name-handler-alist) (file-name-quote file)))
(concat dirname file)))
(let ((unquoted (if (files--name-absolute-system-p file)
(concat dirname file))))
(if (eq (find-file-name-handler dirname 'file-symlink-p)
(find-file-name-handler unquoted 'file-symlink-p))
(let (file-name-handler-alist) (file-name-quote unquoted)))))
(defun file-truename (filename &optional counter prev-dirs)
"Return the truename of FILENAME.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment