#!/usr/bin/guile --no-auto-compile !# (use-modules (ice-9 ftw) (ice-9 i18n) (ice-9 match) (srfi srfi-1) (srfi srfi-11) (srfi srfi-26)) (define (recursive-scandir dir) "Return a list of all the file names in DIR, recursively." (define (components file) (string-split file #\/)) (define suffix (let ((prefix-length (length (components dir)))) (lambda (file) (string-join (drop (components file) prefix-length) "/")))) (define enter? (const #t)) (define (leaf name stat result) (cons (suffix name) result)) ;; No-op (define (down name stat result) result) (define (up name stat result) result) (define (skip name stat result) result) (define (error name stat errno result) result) (let-values (((files discard) (file-system-fold enter? leaf down up skip error '() dir))) (sort files string-locale