Index: multi-glob.scm ================================================================== --- multi-glob.scm +++ multi-glob.scm @@ -1,7 +1,7 @@ (define (multi-glob pathspec) - (let* ((path-parts (string-split pathspec "/" #t))) + (let* ((path-parts (intersperse (string-split pathspec "/" #t) "/"))) (if (null? path-parts) '() (let loop ((parts (cdr path-parts)) (result (let ((p (car path-parts))) (if (string=? p "") @@ -12,11 +12,12 @@ (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) - '()))) + (let ((new (string-append curr part))) + (cond + ((and (directory? curr)(file-read-access? curr)) + (glob new)) + ((member part '("." ".." "/")) new) + (else '())))) result)))))))))