diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-04-06 23:09:54 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-04-06 23:09:54 +0200 |
commit | 347f54ed33a0b9a4e234d18dadf950f055e16554 (patch) | |
tree | 3478fc0053e0b8ac1d48edde3e80daf29e0c44a0 /guix | |
parent | e081385af289da4c330511aa5adac8078fbd5074 (diff) | |
download | gnu-guix-347f54ed33a0b9a4e234d18dadf950f055e16554.tar gnu-guix-347f54ed33a0b9a4e234d18dadf950f055e16554.tar.gz |
utils: 'find-files' does not follow symlinks by default.
Fixes <http://bugs.gnu.org/20081>.
Reported by Tomáš Čech <sleep_walker@suse.cz>.
* guix/build/utils.scm (find-files): Add #:stat parameter. Pass it as
last argument to 'file-system-fold'.
Diffstat (limited to 'guix')
-rw-r--r-- | guix/build/utils.scm | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/guix/build/utils.scm b/guix/build/utils.scm index fbd5d54da5..676a0120e3 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -278,12 +278,14 @@ name matches REGEXP." (lambda (file stat) (regexp-exec file-rx (basename file))))) -(define* (find-files dir #:optional (pred (const #t))) +(define* (find-files dir #:optional (pred (const #t)) + #:key (stat lstat)) "Return the lexicographically sorted list of files under DIR for which PRED returns true. PRED is passed two arguments: the absolute file name, and its stat buffer; the default predicate always returns true. PRED can also be a regular expression, in which case it is equivalent to (file-name-predicate -PRED)." +PRED). STAT is used to obtain file information; using 'lstat' means that +symlinks are not followed." (let ((pred (if (procedure? pred) pred (file-name-predicate pred)))) @@ -304,7 +306,8 @@ PRED)." file (strerror errno)) result) '() - dir) + dir + stat) string<?))) |