diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/socket/addrinfo.h | 4 | ||||
-rw-r--r-- | ext/socket/extconf.rb | 5 | ||||
-rw-r--r-- | ext/socket/getaddrinfo.c | 4 | ||||
-rw-r--r-- | ext/socket/getnameinfo.c | 5 | ||||
-rw-r--r-- | ext/socket/socket.c | 2 |
5 files changed, 16 insertions, 4 deletions
diff --git a/ext/socket/addrinfo.h b/ext/socket/addrinfo.h index e93adafba6..f6061f1e26 100644 --- a/ext/socket/addrinfo.h +++ b/ext/socket/addrinfo.h @@ -108,7 +108,9 @@ #define AI_CANONNAME 0x00000002 /* fill ai_canonname */ #define AI_NUMERICHOST 0x00000004 /* prevent name resolution */ /* valid flags for addrinfo */ +#ifndef __HAIKU__ #define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST) +#endif #define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */ #define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */ @@ -164,7 +166,9 @@ extern void freeaddrinfo __P((struct addrinfo *)); #if defined __UCLIBC__ const #endif +#ifndef __HAIKU__ extern char *gai_strerror __P((int)); +#endif /* In case there is no definition of offsetof() provided - though any proper Standard C system should have one. */ diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb index 7354a0f300..5479d4d009 100644 --- a/ext/socket/extconf.rb +++ b/ext/socket/extconf.rb @@ -9,6 +9,9 @@ when /cygwin/ when /beos/ test_func = "socket" have_library("net", "socket") +when /haiku/ + test_func = "socket" + have_library("network", "socket") when /i386-os2_emx/ test_func = "socket" have_library("socket", "socket") @@ -30,7 +33,7 @@ if have_header("arpa/inet.h") end ipv6 = false -default_ipv6 = /cygwin/ !~ RUBY_PLATFORM +default_ipv6 = /cygwin|beos|haiku/ !~ RUBY_PLATFORM if enable_config("ipv6", default_ipv6) if checking_for("ipv6") {try_link(<<EOF)} #include <sys/types.h> diff --git a/ext/socket/getaddrinfo.c b/ext/socket/getaddrinfo.c index d97012a3c5..0ff2d5f762 100644 --- a/ext/socket/getaddrinfo.c +++ b/ext/socket/getaddrinfo.c @@ -42,7 +42,7 @@ #include <sys/types.h> #ifndef _WIN32 #include <sys/param.h> -#if defined(__BEOS__) +#if defined(__BEOS__) && !defined(__HAIKU__) # include <net/socket.h> #else # include <sys/socket.h> @@ -194,6 +194,7 @@ if (pai->ai_flags & AI_CANONNAME) {\ #define ERR(err) { error = (err); goto bad; } +/* #if defined __UCLIBC__ const #endif @@ -204,6 +205,7 @@ gai_strerror(int ecode) ecode = EAI_MAX; return (char *)ai_errlist[ecode]; } +*/ void freeaddrinfo(struct addrinfo *ai) diff --git a/ext/socket/getnameinfo.c b/ext/socket/getnameinfo.c index 6214359cd2..37f60fc83f 100644 --- a/ext/socket/getnameinfo.c +++ b/ext/socket/getnameinfo.c @@ -38,7 +38,7 @@ #include <stdio.h> #include <sys/types.h> #ifndef _WIN32 -#if defined(__BEOS__) +#if defined(__BEOS__) && !defined(__HAIKU__) # include <net/socket.h> #else # include <sys/socket.h> @@ -110,6 +110,9 @@ static struct afd { #define ENI_FAMILY 5 #define ENI_SALEN 6 +#ifdef __HAIKU__ +#define HAVE_INET_NTOP +#endif #ifndef HAVE_INET_NTOP static const char * inet_ntop(int af, const void *addr, char *numaddr, size_t numaddr_len) diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 81c5a8e170..7665ed43eb 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -29,7 +29,7 @@ #endif #ifndef _WIN32 -#if defined(__BEOS__) +#if defined(__BEOS__) && !defined(__HAIKU__) # include <net/socket.h> #else # include <sys/socket.h> |