Index: multi-glob.scm ================================================================== --- multi-glob.scm +++ multi-glob.scm @@ -19,5 +19,22 @@ ((and (directory? curr)(file-read-access? curr)) (glob new)) ((member part '("." ".." "/")) new) (else '())))) result))))))))) + +;; alternative implementation + +(define (path-glob pattern) + (let ((parts (string-split pattern "/" '()))) + (if (null? parts) + '() + (glob-expand (car parts) (cdr parts)) + ))) + +(define (glob-expand pattern #!optional (rest '())) + (let ((result '()) (expanded (glob pattern))) + (apply append result (cond + ((null? expanded) (list '())) + ((null? rest) (list expanded)) + (else (map (lambda (x) (if (directory? x) (glob-expand (conc x "/" (car rest)) (cdr rest)) '())) expanded)) + ))))