~ruther/guix-local

347f54ed33a0b9a4e234d18dadf950f055e16554 — Ludovic Courtès 11 years ago e081385
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'.
1 files changed, 6 insertions(+), 3 deletions(-)

M guix/build/utils.scm
M guix/build/utils.scm => guix/build/utils.scm +6 -3
@@ 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<?)))