utils: Add `delete-file-recursively'.

* guix/build/utils.scm (delete-file-recursively): New procedure.
This commit is contained in:
Ludovic Courtès 2013-03-05 18:53:53 +01:00
parent 7f614e49e8
commit e65df6a63a
1 changed files with 21 additions and 0 deletions

View File

@ -32,6 +32,7 @@
with-directory-excursion
mkdir-p
copy-recursively
delete-file-recursively
find-files
set-path-environment-variable
@ -147,6 +148,26 @@ return values of applying PROC to the port."
#t
source))
(define (delete-file-recursively dir)
"Delete DIR recursively, like `rm -rf', without following symlinks. Report
but ignore errors."
(file-system-fold (const #t) ; enter?
(lambda (file stat result) ; leaf
(delete-file file))
(const #t) ; down
(lambda (dir stat result) ; up
(rmdir dir))
(const #t) ; skip
(lambda (file stat errno result)
(format (current-error-port)
"warning: failed to delete ~a: ~a~%"
file (strerror errno)))
#t
dir
;; Don't follow symlinks.
lstat))
(define (find-files dir regexp)
"Return the list of files under DIR whose basename matches REGEXP."
(define file-rx