summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-08-07 12:50:56 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2021-08-07 12:50:56 +0200
commit9a6fc638433c19021278616019ef5064740f86fe (patch)
tree3e8499ab6b65e459733fc384333539386824b940
parentc62e805d80fc5d47325ed0ee84a7f3879e85cbd9 (diff)
Fix problem with relative directories in CDPATH
* lisp/files.el (parse-colon-path): Allow relative directories (like ".") in CDPATH (bug#49918).
-rw-r--r--lisp/files.el5
-rw-r--r--test/lisp/files-tests.el5
2 files changed, 8 insertions, 2 deletions
diff --git a/lisp/files.el b/lisp/files.el
index c2607956915..b58f90db48c 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -782,7 +782,10 @@ nil (meaning `default-directory') as the associated list element."
(let ((spath (substitute-env-vars search-path)))
(mapcar (lambda (f)
(if (equal "" f) nil
- (let ((dir (expand-file-name (file-name-as-directory f))))
+ (let ((dir (file-name-as-directory f)))
+ (when (file-name-absolute-p dir)
+ ;; Expand "~".
+ (setq dir (expand-file-name dir)))
;; Previous implementation used `substitute-in-file-name'
;; which collapse multiple "/" in front. Do the same for
;; backward compatibility.
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index 640f7d8420e..523f51e0194 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -1461,7 +1461,10 @@ See <https://debbugs.gnu.org/36401>."
(should (equal (parse-colon-path "x:/foo//bar/baz")
'("x:/foo/bar/baz/")))
(should (equal (parse-colon-path "/foo//bar/baz")
- '("/foo/bar/baz/")))))
+ '("/foo/bar/baz/"))))
+
+ (should (equal (parse-colon-path ".:/tmp")
+ '("./" "/tmp/"))))
(ert-deftest files-test-magic-mode-alist-doctype ()
"Test that DOCTYPE and variants put files in mhtml-mode."