From 163b21a815f0ccfd7d7e9c89264e7b5bf91a7739 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Fri, 4 Nov 2011 22:17:26 +0900 Subject: [PATCH] Adding define-c-int-type to the FFI and using it for socklen_t. --- lib/chibi/net.stub | 4 +++- tools/chibi-ffi | 11 ++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/chibi/net.stub b/lib/chibi/net.stub index e598e48b..0ccc6088 100644 --- a/lib/chibi/net.stub +++ b/lib/chibi/net.stub @@ -3,6 +3,8 @@ (c-system-include "sys/socket.h") (c-system-include "netdb.h") +(define-c-int-type socklen_t) + (define-c-struct sockaddr predicate: sockaddr?) @@ -33,7 +35,7 @@ ;;> Accept a connection on a socket. -(define-c int accept (int sockaddr (pointer unsigned))) +(define-c int accept (int sockaddr (pointer socklen_t))) ;;> Create an endpoint for communication. diff --git a/tools/chibi-ffi b/tools/chibi-ffi index 4c6e6588..96461136 100755 --- a/tools/chibi-ffi +++ b/tools/chibi-ffi @@ -103,8 +103,17 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; type predicates +(define *c-int-types* '()) + +(define-syntax define-c-int-type + (syntax-rules () + ((define-c-int-type type) + (if (not (memq 'type *c-int-types*)) + (set! *c-int-types* (cons 'type *c-int-types*)))))) + (define (signed-int-type? type) - (memq type '(signed-char short int long boolean))) + (or (memq type '(signed-char short int long boolean)) + (memq type *c-int-types*))) (define (unsigned-int-type? type) (memq type '(unsigned-char unsigned-short unsigned unsigned-int unsigned-long