ADDED multi-glob.scm Index: multi-glob.scm ================================================================== --- /dev/null +++ multi-glob.scm @@ -0,0 +1,22 @@ +(define (multi-glob pathspec) + (let* ((path-parts (string-split pathspec "/" #t))) + (if (null? path-parts) + '() + (let loop ((parts (cdr path-parts)) + (result (let ((p (car path-parts))) + (if (string=? p "") + '("/") + (glob (car path-parts)))))) + (if (null? parts) + result + (let* ((part (car parts)) + (rem (cdr parts))) + (loop rem + (apply append + (map (lambda (curr) + (let ((new (string-append curr "/" part))) + (if (and (directory? curr) + (file-read-access? curr)) + (glob new) + '()))) + result)))))))))