diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-05-25 08:26:20 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-05-25 08:26:20 +0000 |
commit | 1307f8d555235116f0f0c79b9902df9cfd4bff12 (patch) | |
tree | faf8962d1f1fcdb54db653b4a99b148fdecea7e6 /ext/socket/socket.c | |
parent | 1aba398e29bd9134f83c165a2495883f72cbbb3d (diff) |
regexp null pattern
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket/socket.c')
-rw-r--r-- | ext/socket/socket.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 1f19b05d26..980c00bb01 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -72,6 +72,12 @@ int Rconnect(); #define INET_SERVER 1 #define INET_SOCKS 2 +#ifndef INET6 +# undef ss_family +# define sockaddr_storage sockaddr +# define ss_family sa_family +#endif + #ifdef NT static void sock_finalize(fptr) @@ -692,7 +698,7 @@ static VALUE tcp_s_gethostbyname(obj, host) VALUE obj, host; { - struct sockaddr addr; + struct sockaddr_storage addr; struct hostent *h; char **pch; VALUE ary, names; @@ -709,7 +715,7 @@ tcp_s_gethostbyname(obj, host) else { setipaddr(STR2CSTR(host), (struct sockaddr *)&addr); } - switch (addr.sa_family) { + switch (addr.ss_family) { case AF_INET: { struct sockaddr_in *sin; @@ -752,7 +758,7 @@ tcp_s_gethostbyname(obj, host) rb_ary_push(ary, INT2NUM(h->h_addrtype)); #ifdef h_addr for (pch = h->h_addr_list; *pch; pch++) { - switch (addr.sa_family) { + switch (addr.ss_family) { case AF_INET: { struct sockaddr_in sin; @@ -787,7 +793,7 @@ tcp_s_gethostbyname(obj, host) } #else memcpy((char *)&addr.sin_addr, h->h_addr, h->h_length); - rb_ary_push(ary, mkipaddr(addr.sin_addr.s_addr)); + rb_ary_push(ary, mkipaddr((struct sockaddr *)&addr)); #endif return ary; @@ -844,7 +850,7 @@ tcp_accept(sock) VALUE sock; { OpenFile *fptr; - struct sockaddr from; + struct sockaddr_storage from; int fromlen; GetOpenFile(sock, fptr); @@ -910,7 +916,7 @@ ip_addr(sock) VALUE sock; { OpenFile *fptr; - struct sockaddr addr; + struct sockaddr_storage addr; int len = sizeof addr; GetOpenFile(sock, fptr); @@ -925,7 +931,7 @@ ip_peeraddr(sock) VALUE sock; { OpenFile *fptr; - struct sockaddr addr; + struct sockaddr_storage addr; int len = sizeof addr; GetOpenFile(sock, fptr); @@ -939,7 +945,7 @@ static VALUE ip_s_getaddress(obj, host) VALUE obj, host; { - struct sockaddr addr; + struct sockaddr_storage addr; if (rb_obj_is_kind_of(host, rb_cInteger)) { long i = NUM2LONG(host); @@ -1049,7 +1055,6 @@ static VALUE udp_bind(sock, host, port) VALUE sock, host, port; { - struct sockaddr addr; OpenFile *fptr; struct addrinfo *res0, *res; @@ -1514,7 +1519,7 @@ static VALUE sock_s_gethostbyname(obj, host) VALUE obj, host; { - struct sockaddr addr; + struct sockaddr_storage addr; struct hostent *h; if (rb_obj_is_kind_of(host, rb_cInteger)) { @@ -1529,7 +1534,7 @@ sock_s_gethostbyname(obj, host) else { setipaddr(STR2CSTR(host), (struct sockaddr *)&addr); } - switch (addr.sa_family) { + switch (addr.ss_family) { case AF_INET: { struct sockaddr_in *sin; @@ -1685,7 +1690,7 @@ sock_s_getnameinfo(argc, argv) int fl; struct addrinfo hints, *res = NULL; int error; - struct sockaddr ss; + struct sockaddr_storage ss; struct sockaddr *sap; sa = flags = Qnil; @@ -1696,7 +1701,7 @@ sock_s_getnameinfo(argc, argv) rb_raise(rb_eTypeError, "sockaddr length too big"); } memcpy(&ss, RSTRING(sa)->ptr, RSTRING(sa)->len); - if (RSTRING(sa)->len != SA_LEN(&ss)) { + if (RSTRING(sa)->len != SA_LEN((struct sockaddr *)&ss)) { rb_raise(rb_eTypeError, "sockaddr size differs - should not happen"); } sap = (struct sockaddr *)&ss; |