utils: Add `find-files'.

* guix/build/utils.scm (find-files): New procedure.
This commit is contained in:
Ludovic Courtès 2012-10-17 23:17:15 +02:00
parent c0746cc9db
commit 4c261f4169
1 changed files with 27 additions and 0 deletions

View File

@ -29,6 +29,8 @@
with-directory-excursion with-directory-excursion
mkdir-p mkdir-p
copy-recursively copy-recursively
find-files
set-path-environment-variable set-path-environment-variable
search-path-as-string->list search-path-as-string->list
list->search-path-as-string list->search-path-as-string
@ -117,6 +119,31 @@
#t #t
source)) source))
(define (find-files dir regexp)
"Return the list of files under DIR whose basename matches REGEXP."
(define file-rx
(if (regexp? regexp)
regexp
(make-regexp regexp)))
(file-system-fold (const #t)
(lambda (file stat result) ; leaf
(if (regexp-exec file-rx (basename file))
(cons file result)
result))
(lambda (dir stat result) ; down
result)
(lambda (dir stat result) ; up
result)
(lambda (file stat result) ; skip
result)
(lambda (file stat errno result)
(format (current-error-port) "find-files: ~a: ~a~%"
file (strerror errno))
#f)
'()
dir))
;;; ;;;
;;; Search paths. ;;; Search paths.