]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix problem with files like "~" in `directory-files-recursively'
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 10 Jul 2019 12:03:55 +0000 (14:03 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 10 Jul 2019 12:03:55 +0000 (14:03 +0200)
* lisp/files.el (directory-files-recursively): Don't bug out on
files like "~" that have special meaning to `expand-file-name'
(bug#36490).

lisp/files.el

index e8a44af8ea56fcc769b60894d96887b224c2531a..b2249bfcb48ede75915765e6f866d21b8e9d8228 100644 (file)
@@ -819,17 +819,18 @@ order, and files from each directory are sorted in alphabetical order.
 Each file name appears in the returned list in its absolute form.
 Optional argument INCLUDE-DIRECTORIES non-nil means also include in the
 output directories whose names match REGEXP."
-  (let ((result nil)
-       (files nil)
-       ;; When DIR is "/", remote file names like "/method:" could
-       ;; also be offered.  We shall suppress them.
-       (tramp-mode (and tramp-mode (file-remote-p (expand-file-name dir)))))
+  (let* ((result nil)
+        (files nil)
+         (dir (directory-file-name dir))
+        ;; When DIR is "/", remote file names like "/method:" could
+        ;; also be offered.  We shall suppress them.
+        (tramp-mode (and tramp-mode (file-remote-p (expand-file-name dir)))))
     (dolist (file (sort (file-name-all-completions "" dir)
                        'string<))
       (unless (member file '("./" "../"))
        (if (directory-name-p file)
            (let* ((leaf (substring file 0 (1- (length file))))
-                  (full-file (expand-file-name leaf dir)))
+                  (full-file (concat dir "/" leaf)))
              ;; Don't follow symlinks to other directories.
              (unless (file-symlink-p full-file)
                (setq result
@@ -839,7 +840,7 @@ output directories whose names match REGEXP."
                         (string-match regexp leaf))
                (setq result (nconc result (list full-file)))))
          (when (string-match regexp file)
-           (push (expand-file-name file dir) files)))))
+           (push (concat dir "/" file) files)))))
     (nconc result (nreverse files))))
 
 (defvar module-file-suffix)