summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--otherlibs/unix/socketaddr.c5
-rw-r--r--otherlibs/unix/socketaddr.h5
-rw-r--r--otherlibs/unix/sockopt.c7
3 files changed, 16 insertions, 1 deletions
diff --git a/otherlibs/unix/socketaddr.c b/otherlibs/unix/socketaddr.c
index 7e760161e..f5d285984 100644
--- a/otherlibs/unix/socketaddr.c
+++ b/otherlibs/unix/socketaddr.c
@@ -28,7 +28,12 @@
#endif
union sock_addr_union sock_addr;
+
+#ifdef HAS_SOCKLEN_T
+socklen_t sock_addr_len;
+#else
int sock_addr_len;
+#endif
value alloc_inet_addr(unsigned int a)
{
diff --git a/otherlibs/unix/socketaddr.h b/otherlibs/unix/socketaddr.h
index ab5a32cfc..54e982f77 100644
--- a/otherlibs/unix/socketaddr.h
+++ b/otherlibs/unix/socketaddr.h
@@ -26,7 +26,12 @@ union sock_addr_union {
};
extern union sock_addr_union sock_addr;
+
+#ifdef HAS_SOCKLEN_T
+extern socklen_t sock_addr_len;
+#else
extern int sock_addr_len;
+#endif
void get_sockaddr (value);
value alloc_sockaddr (void);
diff --git a/otherlibs/unix/sockopt.c b/otherlibs/unix/sockopt.c
index 93786d6bb..250986716 100644
--- a/otherlibs/unix/sockopt.c
+++ b/otherlibs/unix/sockopt.c
@@ -33,7 +33,12 @@ static int sockopt[] = {
value unix_getsockopt(value socket, value option)
{
- int optval, optsize;
+ int optval;
+#ifdef HAS_SOCKLEN_T
+ socklen_t optsize;
+#else
+ int optsize;
+#endif
optsize = sizeof(optval);
if (getsockopt(Int_val(socket), SOL_SOCKET, sockopt[Int_val(option)],
(void *) &optval, &optsize) == -1)