(define (strings->pointer-vector path-list) (let ((pv (make-pointer-vector (+ 1 (length path-list))))) (let loop ((i 0) (path-list path-list)) (cond ;; set NULL pointer at end of list ((null? path-list) (pointer-vector-set! pv i #f) pv) ;; convert string to c-pointer and add it to pointer-vector (else (pointer-vector-set! pv i (string->c-pointer (car path-list))) (loop (+ 1 i) (cdr path-list))))))) (define string->c-pointer (foreign-lambda* c-pointer ((c-string str)) "C_return((void *)str);"))