diff --git a/lib/chibi/filesystem.stub b/lib/chibi/filesystem.stub index 5656fcdc..2aa66e50 100644 --- a/lib/chibi/filesystem.stub +++ b/lib/chibi/filesystem.stub @@ -79,7 +79,7 @@ (define-c errno (delete-directory "rmdir") (string)) (define-c (free DIR) opendir (string)) -(define-c dirent readdir ((link DIR))) +(define-c dirent readdir ((link (pointer DIR)))) (define-c int (duplicate-file-descriptor "dup") (int)) (define-c errno (duplicate-file-descriptor-to "dup2") (int int)) diff --git a/lib/chibi/process.stub b/lib/chibi/process.stub index 17287d30..44f27953 100644 --- a/lib/chibi/process.stub +++ b/lib/chibi/process.stub @@ -44,20 +44,20 @@ (define-c sexp (set-signal-action! "sexp_set_signal_action") ((value ctx sexp) (value self sexp) sexp sexp)) -(define-c errno (make-signal-set "sigemptyset") ((result sigset_t))) -(define-c errno (signal-set-fill! "sigfillset") (sigset_t)) -(define-c errno (signal-set-add! "sigaddset") (sigset_t int)) -(define-c errno (signal-set-delete! "sigaddset") (sigset_t int)) -(define-c boolean (signal-set-contains? "sigismember") (sigset_t int)) +(define-c errno (make-signal-set "sigemptyset") ((pointer result sigset_t))) +(define-c errno (signal-set-fill! "sigfillset") ((pointer sigset_t))) +(define-c errno (signal-set-add! "sigaddset") ((pointer sigset_t) int)) +(define-c errno (signal-set-delete! "sigaddset") ((pointer sigset_t) int)) +(define-c boolean (signal-set-contains? "sigismember") ((pointer sigset_t) int)) (define-c errno (signal-mask-block! "sigprocmask") - ((value SIG_BLOCK int) sigset_t (value NULL sigset_t))) + ((value SIG_BLOCK int) (pointer sigset_t) (pointer value NULL sigset_t))) (define-c errno (signal-mask-unblock! "sigprocmask") - ((value SIG_UNBLOCK int) sigset_t (value NULL sigset_t))) + ((value SIG_UNBLOCK int) (pointer sigset_t) (pointer value NULL sigset_t))) (define-c errno (signal-mask-set! "sigprocmask") - ((value SIG_SETMASK int) sigset_t (value NULL sigset_t))) + ((value SIG_SETMASK int) (pointer sigset_t) (pointer value NULL sigset_t))) (define-c errno (current-signal-mask "sigprocmask") - ((value SIG_BLOCK int) (value NULL sigset_t) (result sigset_t))) + ((value SIG_BLOCK int) (pointer value NULL sigset_t) (pointer result sigset_t))) (define-c unsigned-int alarm (unsigned-int)) (define-c unsigned-int sleep (unsigned-int)) diff --git a/tools/genstubs.scm b/tools/genstubs.scm index 77f240fb..cea7e543 100755 --- a/tools/genstubs.scm +++ b/tools/genstubs.scm @@ -719,7 +719,7 @@ (lambda (x) (let ((len (get-array-length func x))) (cat " " (type-c-name (type-base x)) " ") - (if (and (type-array x) (not (number? len))) + (if (or (and (type-array x) (not (number? len))) (type-pointer? x)) (cat "*")) (cat (if (type-auto-expand? x) "buf" "tmp") (type-index-string x)) (if (number? len) @@ -730,7 +730,9 @@ (if (type-auto-expand? x) (cat " " (type-c-name (type-base x)) " *tmp" (type-index-string x) ";\n")))) - (append (if (type-array ret-type) (list ret-type) '()) + (append (if (or (type-array ret-type) (type-pointer? ret-type)) + (list ret-type) + '()) results (remove type-result? (filter type-array scheme-args)))) (for-each @@ -788,7 +790,7 @@ (if (not (number? (type-array a))) (cat " tmp" (type-index a) "[i] = NULL;\n"))) ((and (type-result? a) (not (basic-type? a)) - (not (type-free? a)) (not (type-pointer? a)) + (not (type-free? a)) ;;(not (type-pointer? a)) (not (type-auto-expand? a)) (or (not (type-array a)) (not (integer? len)))) @@ -820,7 +822,7 @@ => (lambda (y) (cat "len" (type-index y)))) (else (write x))))) ((or (type-result? arg) (type-array arg)) - (cat (if (or (type-pointer? arg) (type-free? arg) (basic-type? arg)) + (cat (if (or (type-free? arg) (basic-type? arg)) ;; (type-pointer? arg) "&" "") "tmp" (type-index arg)))