29 lines
1.0 KiB
Scheme
29 lines
1.0 KiB
Scheme
(define-c-library libc '("stdlib.h" "string.h" "stdio.h" "glob.h") #f ())
|
|
|
|
;(define-c-procedure c-setenv libc 'setenv 'int '(pointer pointer int))
|
|
|
|
(define (setenv var val)
|
|
(when (not (string? var)) (error "setenv error: var must be string"))
|
|
(when (not (string? val)) (error "setenv error: val must be string"))
|
|
(set-environment-variable! var val))
|
|
|
|
(define getenv get-environment-variable)
|
|
|
|
(define-c-procedure c-glob libc 'glob 'int '(pointer int pointer pointer))
|
|
(define-c-procedure c-globfree libc 'globfree 'int '(pointer))
|
|
(define-c-struct-type glob-struct '((gl_pathc int) (gl_pathv pointer) (gl_offs int)))
|
|
(define glob
|
|
(lambda paths
|
|
(let ((result '()))
|
|
(for-each
|
|
(lambda (path)
|
|
(let ((glob-struct-cbv (make-c-bytevector (c-type-size glob-struct)))
|
|
(path-cbv (string->c-bytevector path)))
|
|
(c-glob path-cbv 0 glob-struct-cbv)
|
|
(display "HERE: path ")
|
|
(display path)
|
|
(newline)
|
|
(c-bytevector-free path-cbv)
|
|
))
|
|
paths))))
|