Ignore directory symlinks in directory-files-recursively

* files.el (directory-files-recursively): Don't follow symlinks to
other directories.
This commit is contained in:
Lars Magne Ingebrigtsen 2014-12-12 11:52:58 +01:00
parent 14efb83188
commit 3431e82d16
2 changed files with 11 additions and 6 deletions

View file

@ -1,3 +1,8 @@
2014-12-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
* files.el (directory-files-recursively): Don't follow symlinks to
other directories.
2014-12-12 Eric S. Raymond <esr@snark.thyrsus.com>
* vc/vc-dav.el, vc/vc-git.el, vc/vc-hg.el, vc/vc-src.el,

View file

@ -772,15 +772,15 @@ If INCLUDE-DIRECTORIES, also include directories that have matching names."
'string<))
(unless (member file '("./" "../"))
(if (= (aref file (1- (length file))) ?/)
(progn
(setq result (nconc result (directory-files-recursively
(expand-file-name file dir)
match include-directories)))
(let ((path (expand-file-name file dir)))
;; Don't follow symlinks to other directories.
(unless (file-symlink-p path)
(setq result (nconc result (directory-files-recursively
path match include-directories))))
(when (and include-directories
(string-match match
(substring file 0 (1- (length file)))))
(setq result (nconc result (list
(expand-file-name file dir))))))
(setq result (nconc result (list path)))))
(when (string-match match file)
(push (expand-file-name file dir) files)))))
(nconc result (nreverse files))))