File multi-glob.scm artifact 86fb1e2447 part of check-in e22603e687
(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)))))))))