~ruther/guix-local

e65df6a63a49666edb4e57a68369b8e2ef02f1a0 — Ludovic Courtès 13 years ago 7f614e4
utils: Add `delete-file-recursively'.

* guix/build/utils.scm (delete-file-recursively): New procedure.
1 files changed, 21 insertions(+), 0 deletions(-)

M guix/build/utils.scm
M guix/build/utils.scm => guix/build/utils.scm +21 -0
@@ 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