Megatest

multi-glob.scm at [e22603e687]
Login

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)))))))))