From: Katsuyuki Komatsu Date: 2000-07-08T00:14:11+09:00 Subject: [ruby-dev:10264] ext/socket changes for BeOS 小松です。 BeOS用に出しているsocketのパッチ、 http://www.ruby-lang.org/en/raa-list.rhtml?name=i586-beos-socket のうち、いくつかを本体にマージして欲しいのですがいかがでしょうか? 内容は、以下です。 1.ext/socket/sockport.hで以下の定義を追加。 これに伴いext/socket/addrinfo.hのNT定義時のIN_EXPERIMENTAL、 IN_LOOPBACKNETの定義を削除。 IN_EXPERIMENTAL IN_CLASSA_NSHIFT IN_LOOPBACKNET AF_UNSPEC PF_UNSPEC PF_INET 2.ext/socket/extconf.rbでBeOSに存在しないgetservbyport()と  arpa/inet.hをチェックし、ext/socket/*.cで判定。 3.ext/socket/getaddrinfo.cでSOCK_RAWが定義されていないので回避。 4.BeOSでは、ではなく、を使う。 Fri Jul 7 23:36:36 2000 Katsuyuki Komatsu * ext/socket/addrinfo.h: move IN_EXPERIMENTAL and IN_LOOPBACKNET definitions to ext/socket/sockport.h. * ext/socket/extconf.rb: add getservbyport() and arpa/inet.h check. * ext/socket/getaddrinfo.c (getaddrinfo): SOCK_RAW may not be defined (ex. BeOS, Palm OS 2.x or before). * ext/socket/getnameinfo.c (getnameinfo): getservbyport() may not exist (ex. BeOS, Palm OS). * ext/socket/sockport.h: add IN_EXPERIMENTAL, IN_CLASSA_NSHIFT, IN_LOOPBACKNET, AF_UNSPEC, PF_UNSPEC and PF_INET. diff -ru1p ruby-1.5.4.dist/ext/socket/addrinfo.h ruby-1.5.4/ext/socket/addrinfo.h --- ruby-1.5.4.dist/ext/socket/addrinfo.h Fri Aug 13 14:37:50 1999 +++ ruby-1.5.4/ext/socket/addrinfo.h Fri Jul 7 23:36:36 2000 @@ -129,7 +129,2 @@ -#ifdef NT -#define IN_EXPERIMENTAL(x) 0 -#define IN_LOOPBACKNET 0 -#endif - struct addrinfo { diff -ru1p ruby-1.5.4.dist/ext/socket/extconf.rb ruby-1.5.4/ext/socket/extconf.rb --- ruby-1.5.4.dist/ext/socket/extconf.rb Tue May 30 13:24:06 2000 +++ ruby-1.5.4/ext/socket/extconf.rb Fri Jul 7 23:36:36 2000 @@ -308,2 +308,4 @@ else have_func("inet_pton") or have_func("inet_aton") + have_func("getservbyport") + have_header("arpa/inet.h") have_header("arpa/nameser.h") diff -ru1p ruby-1.5.4.dist/ext/socket/getaddrinfo.c ruby-1.5.4/ext/socket/getaddrinfo.c --- ruby-1.5.4.dist/ext/socket/getaddrinfo.c Mon May 1 18:41:35 2000 +++ ruby-1.5.4/ext/socket/getaddrinfo.c Fri Jul 7 23:36:36 2000 @@ -44,5 +44,11 @@ #include -#include +#if defined(__BEOS__) +# include +#else +# include +#endif #include +#if defined(HAVE_ARPA_INET_H) #include +#endif #if defined(HAVE_ARPA_NAMESER_H) @@ -332,3 +338,5 @@ getaddrinfo(hostname, servname, hints, r default: +#if defined(SOCK_RAW) pai->ai_socktype = SOCK_RAW; +#endif break; @@ -336,4 +344,6 @@ getaddrinfo(hostname, servname, hints, r break; +#if defined(SOCK_RAW) case SOCK_RAW: break; +#endif case SOCK_DGRAM: diff -ru1p ruby-1.5.4.dist/ext/socket/getnameinfo.c ruby-1.5.4/ext/socket/getnameinfo.c --- ruby-1.5.4.dist/ext/socket/getnameinfo.c Thu Feb 17 16:11:20 2000 +++ ruby-1.5.4/ext/socket/getnameinfo.c Fri Jul 7 23:36:36 2000 @@ -39,5 +39,11 @@ #ifndef NT -#include +#if defined(__BEOS__) +# include +#else +# include +#endif #include +#if defined(HAVE_ARPA_INET_H) #include +#endif #if defined(HAVE_ARPA_NAMESER_H) @@ -180,2 +186,3 @@ getnameinfo(sa, salen, host, hostlen, se } else { +#if defined(HAVE_GETSERVBYPORT) sp = getservbyport(port, (flags & NI_DGRAM) ? "udp" : "tcp"); @@ -187,2 +194,5 @@ getnameinfo(sa, salen, host, hostlen, se return ENI_NOSERVNAME; +#else + return ENI_NOSERVNAME; +#endif } diff -ru1p ruby-1.5.4.dist/ext/socket/socket.c ruby-1.5.4/ext/socket/socket.c --- ruby-1.5.4.dist/ext/socket/socket.c Tue Jul 4 13:17:22 2000 +++ ruby-1.5.4/ext/socket/socket.c Fri Jul 7 23:36:36 2000 @@ -23,3 +23,7 @@ #ifndef NT -#include +#if defined(__BEOS__) +# include +#else +# include +#endif #include diff -ru1p ruby-1.5.4.dist/ext/socket/sockport.h ruby-1.5.4/ext/socket/sockport.h --- ruby-1.5.4.dist/ext/socket/sockport.h Sun May 14 01:12:24 2000 +++ ruby-1.5.4/ext/socket/sockport.h Fri Jul 7 23:36:36 2000 @@ -47,2 +47,26 @@ +#ifndef IN_EXPERIMENTAL +# define IN_EXPERIMENTAL(i) ((((long)(i)) & 0xe0000000) == 0xe0000000) +#endif + +#ifndef IN_CLASSA_NSHIFT +# define IN_CLASSA_NSHIFT 24 +#endif + +#ifndef IN_LOOPBACKNET +# define IN_LOOPBACKNET 127 +#endif + +#ifndef AF_UNSPEC +# define AF_UNSPEC 0 +#endif + +#ifndef PF_UNSPEC +# define PF_UNSPEC AF_UNSPEC +#endif + +#ifndef PF_INET +# define PF_INET AF_INET +#endif + #endif -- 小松克行 / Katsuyuki Komatsu