[前][次][番号順一覧][スレッド一覧]

ruby-changes:15620

From: nobu <ko1@a...>
Date: Wed, 28 Apr 2010 17:14:27 +0900 (JST)
Subject: [ruby-changes:15620] Ruby:r27529 (trunk): * ext/socket: fixed types.

nobu	2010-04-28 17:14:13 +0900 (Wed, 28 Apr 2010)

  New Revision: 27529

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27529

  Log:
    * ext/socket: fixed types.

  Modified files:
    trunk/ext/socket/ancdata.c
    trunk/ext/socket/basicsocket.c
    trunk/ext/socket/constants.c
    trunk/ext/socket/init.c
    trunk/ext/socket/ipsocket.c
    trunk/ext/socket/mkconstants.rb
    trunk/ext/socket/raddrinfo.c
    trunk/ext/socket/socket.c
    trunk/ext/socket/tcpserver.c
    trunk/ext/socket/unixserver.c
    trunk/ext/socket/unixsocket.c

Index: ext/socket/init.c
===================================================================
--- ext/socket/init.c	(revision 27528)
+++ ext/socket/init.c	(revision 27529)
@@ -121,7 +121,7 @@
 	rb_raise(rb_eIOError, "recv for buffered IO");
     }
     arg.fd = fptr->fd;
-    arg.alen = sizeof(arg.buf);
+    arg.alen = (socklen_t)sizeof(arg.buf);
 
     arg.str = str = rb_tainted_str_new(0, buflen);
     klass = RBASIC(str)->klass;
@@ -174,7 +174,7 @@
     rb_io_t *fptr;
     VALUE str;
     struct sockaddr_storage buf;
-    socklen_t alen = sizeof buf;
+    socklen_t alen = (socklen_t)sizeof buf;
     VALUE len, flg;
     long buflen;
     long slen;
@@ -272,7 +272,7 @@
 	    return 0;
 	}
 	else if (rb_fd_isset(fd, fds_e)) {
-	    sockerrlen = sizeof(sockerr);
+	    sockerrlen = (socklen_t)sizeof(sockerr);
 	    if (getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&sockerr,
 			   &sockerrlen) == 0) {
 		if (sockerr == 0)
@@ -388,7 +388,7 @@
 	      case EINPROGRESS:
 #endif
 #if WAIT_IN_PROGRESS > 0
-		sockerrlen = sizeof(sockerr);
+		sockerrlen = (socklen_t)sizeof(sockerr);
 		status = getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&sockerr, &sockerrlen);
 		if (status) break;
 		if (sockerr) {
@@ -418,7 +418,7 @@
 		     * some platforms, need to check true error
 		     * status.
 		     */
-		    sockerrlen = sizeof(sockerr);
+		    sockerrlen = (socklen_t)sizeof(sockerr);
 		    status = getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&sockerr, &sockerrlen);
 		    if (!status && !sockerr) {
 			struct timeval tv = {0, 100000};
@@ -515,7 +515,7 @@
     arg.len = len;
   retry:
     rb_thread_wait_fd(fd);
-    fd2 = BLOCKING_REGION(accept_blocking, &arg);
+    fd2 = (int)BLOCKING_REGION(accept_blocking, &arg);
     if (fd2 < 0) {
 	switch (errno) {
 	  case EMFILE:
@@ -539,7 +539,7 @@
 rsock_getfamily(int sockfd)
 {
     struct sockaddr_storage ss;
-    socklen_t sslen = sizeof(ss);
+    socklen_t sslen = (socklen_t)sizeof(ss);
 
     ss.ss_family = AF_UNSPEC;
     if (getsockname(sockfd, (struct sockaddr*)&ss, &sslen) < 0)
Index: ext/socket/raddrinfo.c
===================================================================
--- ext/socket/raddrinfo.c	(revision 27528)
+++ ext/socket/raddrinfo.c	(revision 27529)
@@ -129,7 +129,7 @@
     arg.service = service;
     arg.hints = hints;
     arg.res = res;
-    ret = BLOCKING_REGION(nogvl_getaddrinfo, &arg);
+    ret = (int)BLOCKING_REGION(nogvl_getaddrinfo, &arg);
     return ret;
 #endif
 }
@@ -151,8 +151,8 @@
 {
     struct getnameinfo_arg *ptr = arg;
     return getnameinfo(ptr->sa, ptr->salen,
-                       ptr->host, ptr->hostlen,
-                       ptr->serv, ptr->servlen,
+                       ptr->host, (socklen_t)ptr->hostlen,
+                       ptr->serv, (socklen_t)ptr->servlen,
                        ptr->flags);
 }
 #endif
@@ -174,7 +174,7 @@
     arg.serv = serv;
     arg.servlen = servlen;
     arg.flags = flags;
-    ret = BLOCKING_REGION(nogvl_getnameinfo, &arg);
+    ret = (int)BLOCKING_REGION(nogvl_getnameinfo, &arg);
     return ret;
 #endif
 }
@@ -200,7 +200,7 @@
 }
 
 static void
-make_inetaddr(long host, char *buf, size_t len)
+make_inetaddr(unsigned int host, char *buf, size_t len)
 {
     struct sockaddr_in sin;
 
@@ -233,7 +233,7 @@
         return NULL;
     }
     else if (rb_obj_is_kind_of(host, rb_cInteger)) {
-        unsigned long i = NUM2ULONG(host);
+        unsigned int i = NUM2UINT(host);
 
         make_inetaddr(htonl(i), hbuf, len);
         if (flags_ptr) *flags_ptr |= AI_NUMERICHOST;
@@ -481,7 +481,7 @@
     int pfamily;
     int socktype;
     int protocol;
-    size_t sockaddr_len;
+    socklen_t sockaddr_len;
     struct sockaddr_storage addr;
 } rb_addrinfo_t;
 
@@ -544,7 +544,7 @@
 }
 
 static void
-init_addrinfo(rb_addrinfo_t *rai, struct sockaddr *sa, size_t len,
+init_addrinfo(rb_addrinfo_t *rai, struct sockaddr *sa, socklen_t len,
               int pfamily, int socktype, int protocol,
               VALUE canonname, VALUE inspectname)
 {
@@ -744,7 +744,8 @@
     un.sun_family = AF_UNIX;
     memcpy((void*)&un.sun_path, RSTRING_PTR(path), RSTRING_LEN(path));
 
-    init_addrinfo(rai, (struct sockaddr *)&un, sizeof(un), PF_UNIX, socktype, 0, Qnil, Qnil);
+    init_addrinfo(rai, (struct sockaddr *)&un, (socklen_t)sizeof(un),
+		  PF_UNIX, socktype, 0, Qnil, Qnil);
 }
 #endif
 
@@ -801,7 +802,7 @@
     VALUE sockaddr_arg, sockaddr_ary, pfamily, socktype, protocol;
     int i_pfamily, i_socktype, i_protocol;
     struct sockaddr *sockaddr_ptr;
-    size_t sockaddr_len;
+    socklen_t sockaddr_len;
     VALUE canonname = Qnil, inspectname = Qnil;
 
     if (check_addrinfo(self))
@@ -865,7 +866,7 @@
     else {
         StringValue(sockaddr_arg);
         sockaddr_ptr = (struct sockaddr *)RSTRING_PTR(sockaddr_arg);
-        sockaddr_len = RSTRING_LEN(sockaddr_arg);
+        sockaddr_len = RSTRING_LENINT(sockaddr_arg);
         init_addrinfo(rai, sockaddr_ptr, sockaddr_len,
                       i_pfamily, i_socktype, i_protocol,
                       canonname, inspectname);
@@ -941,7 +942,7 @@
                  * draft-ietf-ipv6-scope-api-00.txt: Scoped Address Extensions to the IPv6 Basic Socket API
                  */
                 error = getnameinfo((struct sockaddr *)&rai->addr, rai->sockaddr_len,
-                                    hbuf, sizeof(hbuf), NULL, 0,
+                                    hbuf, (socklen_t)sizeof(hbuf), NULL, 0,
                                     NI_NUMERICHOST|NI_NUMERICSERV);
                 if (error) {
                     rsock_raise_socket_error("getnameinfo", error);
@@ -1182,7 +1183,7 @@
         char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV];
         int error;
         error = getnameinfo((struct sockaddr *)&rai->addr, rai->sockaddr_len,
-                            hbuf, sizeof(hbuf), pbuf, sizeof(pbuf),
+                            hbuf, (socklen_t)sizeof(hbuf), pbuf, (socklen_t)sizeof(pbuf),
                             NI_NUMERICHOST|NI_NUMERICSERV);
         if (error) {
             rsock_raise_socket_error("getnameinfo", error);
@@ -1203,7 +1204,7 @@
     VALUE canonname, inspectname;
     int afamily, pfamily, socktype, protocol;
     struct sockaddr_storage ss;
-    size_t len;
+    socklen_t len;
     rb_addrinfo_t *rai;
 
     if (check_addrinfo(self))
@@ -1273,7 +1274,7 @@
         if (sizeof(uaddr.sun_path) <= (size_t)RSTRING_LEN(v))
             rb_raise(rb_eSocket, "too long AF_UNIX path");
         memcpy(uaddr.sun_path, RSTRING_PTR(v), RSTRING_LEN(v));
-        len = sizeof(uaddr);
+        len = (socklen_t)sizeof(uaddr);
         memcpy(&ss, &uaddr, len);
         break;
       }
@@ -1526,7 +1527,7 @@
         flags |= NI_DGRAM;
 
     error = getnameinfo((struct sockaddr *)&rai->addr, rai->sockaddr_len,
-                        hbuf, sizeof(hbuf), pbuf, sizeof(pbuf),
+                        hbuf, (socklen_t)sizeof(hbuf), pbuf, (socklen_t)sizeof(pbuf),
                         flags);
     if (error) {
         rsock_raise_socket_error("getnameinfo", error);
@@ -1867,7 +1868,7 @@
         sin4.sin_family = AF_INET;
         SET_SIN_LEN(&sin4, sizeof(sin4));
         memcpy(&sin4.sin_addr, (char*)addr + sizeof(*addr) - sizeof(sin4.sin_addr), sizeof(sin4.sin_addr));
-        return rsock_addrinfo_new((struct sockaddr *)&sin4, sizeof(sin4),
+        return rsock_addrinfo_new((struct sockaddr *)&sin4, (socklen_t)sizeof(sin4),
                                   PF_INET, rai->socktype, rai->protocol,
                                   rai->canonname, rai->inspectname);
     }
@@ -2078,7 +2079,7 @@
     int family;
     int socktype;
     int ret;
-    socklen_t optlen = sizeof(socktype);
+    socklen_t optlen = (socklen_t)sizeof(socktype);
 
     /* assumes protocol family and address family are identical */
     family = get_afamily(addr, len);
Index: ext/socket/unixserver.c
===================================================================
--- ext/socket/unixserver.c	(revision 27528)
+++ ext/socket/unixserver.c	(revision 27529)
@@ -52,7 +52,7 @@
     socklen_t fromlen;
 
     GetOpenFile(sock, fptr);
-    fromlen = sizeof(struct sockaddr_un);
+    fromlen = (socklen_t)sizeof(struct sockaddr_un);
     return rsock_s_accept(rb_cUNIXSocket, fptr->fd,
 		          (struct sockaddr*)&from, &fromlen);
 }
@@ -98,7 +98,7 @@
     socklen_t fromlen;
 
     GetOpenFile(sock, fptr);
-    fromlen = sizeof(from);
+    fromlen = (socklen_t)sizeof(from);
     return rsock_s_accept_nonblock(rb_cUNIXSocket, fptr,
 			           (struct sockaddr *)&from, &fromlen);
 }
@@ -129,7 +129,7 @@
     socklen_t fromlen;
 
     GetOpenFile(sock, fptr);
-    fromlen = sizeof(struct sockaddr_un);
+    fromlen = (socklen_t)sizeof(struct sockaddr_un);
     return rsock_s_accept(0, fptr->fd, (struct sockaddr*)&from, &fromlen);
 }
 
Index: ext/socket/constants.c
===================================================================
--- ext/socket/constants.c	(revision 27528)
+++ ext/socket/constants.c	(revision 27529)
@@ -15,7 +15,7 @@
 #include "constdefs.c"
 
 static int
-constant_arg(VALUE arg, int (*str_to_int)(const char*, int, int*), const char *errmsg)
+constant_arg(VALUE arg, int (*str_to_int)(const char*, long, int*), const char *errmsg)
 {
     VALUE tmp;
     char *ptr;
Index: ext/socket/tcpserver.c
===================================================================
--- ext/socket/tcpserver.c	(revision 27528)
+++ ext/socket/tcpserver.c	(revision 27529)
@@ -51,7 +51,7 @@
     socklen_t fromlen;
 
     GetOpenFile(sock, fptr);
-    fromlen = sizeof(from);
+    fromlen = (socklen_t)sizeof(from);
     return rsock_s_accept(rb_cTCPSocket, fptr->fd,
 		          (struct sockaddr*)&from, &fromlen);
 }
@@ -97,7 +97,7 @@
     socklen_t fromlen;
 
     GetOpenFile(sock, fptr);
-    fromlen = sizeof(from);
+    fromlen = (socklen_t)sizeof(from);
     return rsock_s_accept_nonblock(rb_cTCPSocket, fptr,
 			           (struct sockaddr *)&from, &fromlen);
 }
@@ -124,7 +124,7 @@
     socklen_t fromlen;
 
     GetOpenFile(sock, fptr);
-    fromlen = sizeof(from);
+    fromlen = (socklen_t)sizeof(from);
     return rsock_s_accept(0, fptr->fd, (struct sockaddr*)&from, &fromlen);
 }
 
Index: ext/socket/ipsocket.c
===================================================================
--- ext/socket/ipsocket.c	(revision 27528)
+++ ext/socket/ipsocket.c	(revision 27529)
@@ -73,7 +73,7 @@
 #if !defined(_WIN32) && !defined(__CYGWIN__)
 	    status = 1;
 	    setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
-		       (char*)&status, sizeof(status));
+		       (char*)&status, (socklen_t)sizeof(status));
 #endif
 	    status = bind(fd, res->ai_addr, res->ai_addrlen);
 	    syscall = "bind(2)";
@@ -185,7 +185,7 @@
 {
     rb_io_t *fptr;
     struct sockaddr_storage addr;
-    socklen_t len = sizeof addr;
+    socklen_t len = (socklen_t)sizeof addr;
     int norevlookup;
 
     GetOpenFile(sock, fptr);
@@ -226,7 +226,7 @@
 {
     rb_io_t *fptr;
     struct sockaddr_storage addr;
-    socklen_t len = sizeof addr;
+    socklen_t len = (socklen_t)sizeof addr;
     int norevlookup;
 
     GetOpenFile(sock, fptr);
Index: ext/socket/mkconstants.rb
===================================================================
--- ext/socket/mkconstants.rb	(revision 27528)
+++ ext/socket/mkconstants.rb	(revision 27529)
@@ -143,16 +143,16 @@
 ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int_decl(funcname, pat, prefix_optional, guard=nil)")
 %if guard
 #ifdef <%=guard%>
-int <%=funcname%>(const char *str, int len, int *valp);
+int <%=funcname%>(const char *str, long len, int *valp);
 #endif
 %else
-int <%=funcname%>(const char *str, int len, int *valp);
+int <%=funcname%>(const char *str, long len, int *valp);
 %end
 EOS
 
 ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int_func_in_guard(funcname, pat, prefix_optional, guard=nil)")
 int
-<%=funcname%>(const char *str, int len, int *valp)
+<%=funcname%>(const char *str, long len, int *valp)
 {
     switch (len) {
 %    each_names_with_len(pat, prefix_optional) {|pairs, len|
Index: ext/socket/socket.c
===================================================================
--- ext/socket/socket.c	(revision 27528)
+++ ext/socket/socket.c	(revision 27529)
@@ -253,7 +253,7 @@
     addr = rb_str_new4(addr);
     GetOpenFile(sock, fptr);
     fd = fptr->fd;
-    n = rsock_connect(fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LEN(addr), 0);
+    n = rsock_connect(fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LENINT(addr), 0);
     if (n < 0) {
 	rb_sys_fail("connect(2)");
     }
@@ -313,7 +313,7 @@
     addr = rb_str_new4(addr);
     GetOpenFile(sock, fptr);
     rb_io_set_nonblock(fptr);
-    n = connect(fptr->fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LEN(addr));
+    n = connect(fptr->fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LENINT(addr));
     if (n < 0) {
         if (errno == EINPROGRESS)
             rb_mod_sys_fail(rb_mWaitWritable, "connect(2) would block");
@@ -416,7 +416,7 @@
 
     SockAddrStringValue(addr);
     GetOpenFile(sock, fptr);
-    if (bind(fptr->fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LEN(addr)) < 0)
+    if (bind(fptr->fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LENINT(addr)) < 0)
 	rb_sys_fail("bind(2)");
 
     return INT2FIX(0);
@@ -706,7 +706,7 @@
     rb_io_t *fptr;
     VALUE sock2;
     struct sockaddr_storage buf;
-    socklen_t len = sizeof buf;
+    socklen_t len = (socklen_t)sizeof buf;
 
     GetOpenFile(sock, fptr);
     sock2 = rsock_s_accept(rb_cSocket,fptr->fd,(struct sockaddr*)&buf,&len);
@@ -771,7 +771,7 @@
     rb_io_t *fptr;
     VALUE sock2;
     struct sockaddr_storage buf;
-    socklen_t len = sizeof buf;
+    socklen_t len = (socklen_t)sizeof buf;
 
     GetOpenFile(sock, fptr);
     sock2 = rsock_s_accept_nonblock(rb_cSocket, fptr, (struct sockaddr *)&buf, &len);
@@ -822,7 +822,7 @@
     rb_io_t *fptr;
     VALUE sock2;
     struct sockaddr_storage buf;
-    socklen_t len = sizeof buf;
+    socklen_t len = (socklen_t)sizeof buf;
 
     GetOpenFile(sock, fptr);
     sock2 = rsock_s_accept(0,fptr->fd,(struct sockaddr*)&buf,&len);
@@ -967,7 +967,7 @@
 	t = AF_INET6;
     }
 #endif
-    h = gethostbyaddr(RSTRING_PTR(addr), RSTRING_LEN(addr), t);
+    h = gethostbyaddr(RSTRING_PTR(addr), RSTRING_LENINT(addr), t);
     if (h == NULL) {
 #ifdef HAVE_HSTRERROR
 	extern int h_errno;
@@ -1015,7 +1015,7 @@
 {
     VALUE service, proto;
     struct servent *sp;
-    int port;
+    long port;
     const char *servicename, *protoname = "tcp";
 
     rb_scan_args(argc, argv, "11", &service, &proto);
@@ -1418,7 +1418,7 @@
 	rb_raise(rb_eTypeError, "too long sockaddr_un - %ld longer than %d",
 		 RSTRING_LEN(addr), (int)sizeof(struct sockaddr_un));
     }
-    sun_path = rsock_unixpath(sockaddr, RSTRING_LEN(addr));
+    sun_path = rsock_unixpath(sockaddr, RSTRING_LENINT(addr));
     if (sizeof(struct sockaddr_un) == RSTRING_LEN(addr) &&
         sun_path == sockaddr->sun_path &&
         sun_path + strlen(sun_path) == RSTRING_PTR(addr) + RSTRING_LEN(addr)) {
@@ -1434,7 +1434,7 @@
 static VALUE
 sockaddr_obj(struct sockaddr *addr)
 {
-    size_t len;
+    socklen_t len;
 #if defined(AF_INET6) && defined(__KAME__)
     struct sockaddr_in6 addr6;
 #endif
@@ -1444,12 +1444,12 @@
 
     switch (addr->sa_family) {
       case AF_INET:
-        len = sizeof(struct sockaddr_in);
+        len = (socklen_t)sizeof(struct sockaddr_in);
         break;
 
 #ifdef AF_INET6
       case AF_INET6:
-        len = sizeof(struct sockaddr_in6);
+        len = (socklen_t)sizeof(struct sockaddr_in6);
 #  ifdef __KAME__
 	/* KAME uses the 2nd 16bit word of link local IPv6 address as interface index internally */
         /* http://orange.kame.net/dev/cvsweb.cgi/kame/IMPLEMENTATION */
@@ -1469,17 +1469,17 @@
 
 #ifdef HAVE_SYS_UN_H
       case AF_UNIX:
-        len = sizeof(struct sockaddr_un);
+        len = (socklen_t)sizeof(struct sockaddr_un);
         break;
 #endif
 
       default:
-        len = sizeof(struct sockaddr_in);
+        len = (socklen_t)sizeof(struct sockaddr_in);
         break;
     }
 #ifdef SA_LEN
     if (len < (socklen_t)SA_LEN(addr))
-	len = SA_LEN(addr);
+	len = (socklen_t)SA_LEN(addr);
 #endif
 
     return rsock_addrinfo_new(addr, len, addr->sa_family, 0, 0, Qnil, Qnil);
Index: ext/socket/basicsocket.c
===================================================================
--- ext/socket/basicsocket.c	(revision 27528)
+++ ext/socket/basicsocket.c	(revision 27529)
@@ -238,12 +238,12 @@
       case T_TRUE:
 	i = 1;
       numval:
-	v = (char*)&i; vlen = sizeof(i);
+	v = (char*)&i; vlen = (int)sizeof(i);
 	break;
       default:
 	StringValue(val);
 	v = RSTRING_PTR(val);
-	vlen = RSTRING_LEN(val);
+	vlen = RSTRING_LENINT(val);
 	break;
     }
 
@@ -357,7 +357,7 @@
 bsock_getsockname(VALUE sock)
 {
     struct sockaddr_storage buf;
-    socklen_t len = sizeof buf;
+    socklen_t len = (socklen_t)sizeof buf;
     rb_io_t *fptr;
 
     GetOpenFile(sock, fptr);
@@ -386,7 +386,7 @@
 bsock_getpeername(VALUE sock)
 {
     struct sockaddr_storage buf;
-    socklen_t len = sizeof buf;
+    socklen_t len = (socklen_t)sizeof buf;
     rb_io_t *fptr;
 
     GetOpenFile(sock, fptr);
@@ -474,7 +474,7 @@
 bsock_local_address(VALUE sock)
 {
     struct sockaddr_storage buf;
-    socklen_t len = sizeof buf;
+    socklen_t len = (socklen_t)sizeof buf;
     rb_io_t *fptr;
 
     GetOpenFile(sock, fptr);
@@ -506,7 +506,7 @@
 bsock_remote_address(VALUE sock)
 {
     struct sockaddr_storage buf;
-    socklen_t len = sizeof buf;
+    socklen_t len = (socklen_t)sizeof buf;
     rb_io_t *fptr;
 
     GetOpenFile(sock, fptr);
@@ -549,7 +549,7 @@
 	SockAddrStringValue(to);
 	to = rb_str_new4(to);
 	arg.to = (struct sockaddr *)RSTRING_PTR(to);
-	arg.tolen = RSTRING_LEN(to);
+	arg.tolen = (socklen_t)RSTRING_LENINT(to);
 	func = rsock_sendto_blocking;
     }
     else {
Index: ext/socket/ancdata.c
===================================================================
--- ext/socket/ancdata.c	(revision 27528)
+++ ext/socket/ancdata.c	(revision 27529)
@@ -606,7 +606,7 @@
     VALUE v_addr;
 
     extract_ipv6_pktinfo(self, &pktinfo, &sa);
-    v_addr = rsock_addrinfo_new((struct sockaddr *)&sa, sizeof(sa), PF_INET6, 0, 0, Qnil, Qnil);
+    v_addr = rsock_addrinfo_new((struct sockaddr *)&sa, (socklen_t)sizeof(sa), PF_INET6, 0, 0, Qnil, Qnil);
     return rb_ary_new3(2, v_addr, UINT2NUM(pktinfo.ipi6_ifindex));
 }
 #else
@@ -634,7 +634,7 @@
     struct in6_pktinfo pktinfo;
     struct sockaddr_in6 sa;
     extract_ipv6_pktinfo(self, &pktinfo, &sa);
-    return rsock_addrinfo_new((struct sockaddr *)&sa, sizeof(sa), PF_INET6, 0, 0, Qnil, Qnil);
+    return rsock_addrinfo_new((struct sockaddr *)&sa, (socklen_t)sizeof(sa), PF_INET6, 0, 0, Qnil, Qnil);
 }
 #else
 #define ancillary_ipv6_pktinfo_addr rb_f_notimplement
@@ -781,7 +781,7 @@
         struct in_addr addr;
         char addrbuf[INET_ADDRSTRLEN];
         memcpy(&addr, RSTRING_PTR(data), sizeof(addr));
-        if (inet_ntop(AF_INET, &addr, addrbuf, sizeof(addrbuf)) == NULL)
+        if (inet_ntop(AF_INET, &addr, addrbuf, (socklen_t)sizeof(addrbuf)) == NULL)
             rb_str_cat2(ret, " invalid-address");
         else
             rb_str_catf(ret, " %s", addrbuf);
@@ -834,7 +834,7 @@
         char addrbuf[INET6_ADDRSTRLEN], ifbuf[IFNAMSIZ];
         memcpy(&addr, &pktinfo->ipi6_addr, sizeof(addr));
         memcpy(&ifindex, &pktinfo->ipi6_ifindex, sizeof(ifindex));
-        if (inet_ntop(AF_INET6, &addr, addrbuf, sizeof(addrbuf)) == NULL)
+        if (inet_ntop(AF_INET6, &addr, addrbuf, (socklen_t)sizeof(addrbuf)) == NULL)
             rb_str_cat2(ret, " invalid-address");
         else
             rb_str_catf(ret, " %s", addrbuf);
@@ -1163,7 +1163,7 @@
     if (controls_num) {
 #if defined(HAVE_ST_MSG_CONTROL)
 	int i;
-	int last_pad = 0;
+	size_t last_pad = 0;
         int last_level = 0;
         int last_type = 0;
         controls_str = rb_str_tmp_new(0);
@@ -1201,7 +1201,7 @@
             memset((char *)&cmh, 0, sizeof(cmh));
             cmh.cmsg_level = level;
             cmh.cmsg_type = type;
-            cmh.cmsg_len = CMSG_LEN(RSTRING_LEN(cdata));
+            cmh.cmsg_len = (socklen_t)CMSG_LEN(RSTRING_LEN(cdata));
             MEMCPY(cmsg, &cmh, char, sizeof(cmh));
             MEMCPY(cmsg+((char*)CMSG_DATA(&cmh)-(char*)&cmh), RSTRING_PTR(cdata), char, RSTRING_LEN(cdata));
             last_level = cmh.cmsg_level;
@@ -1254,7 +1254,7 @@
     memset(&mh, 0, sizeof(mh));
     if (!NIL_P(dest_sockaddr)) {
         mh.msg_name = RSTRING_PTR(dest_sockaddr);
-        mh.msg_namelen = RSTRING_LEN(dest_sockaddr);
+        mh.msg_namelen = RSTRING_LENINT(dest_sockaddr);
     }
     mh.msg_iovlen = 1;
     mh.msg_iov = &iov;
@@ -1263,7 +1263,7 @@
 #if defined(HAVE_ST_MSG_CONTROL)
     if (controls_str) {
         mh.msg_control = RSTRING_PTR(controls_str);
-        mh.msg_controllen = RSTRING_LEN(controls_str);
+        mh.msg_controllen = RSTRING_LENINT(controls_str);
     }
     else {
         mh.msg_control = NULL;
@@ -1503,7 +1503,8 @@
 
 #if !defined(HAVE_ST_MSG_CONTROL)
     if (grow_buffer) {
-	int socktype, optlen = sizeof(socktype);
+	int socktype;
+	socklen_t optlen = (socklen_t)sizeof(socktype);
         if (getsockopt(fptr->fd, SOL_SOCKET, SO_TYPE, (void*)&socktype, &optlen) == -1) {
 	    rb_sys_fail("getsockopt(SO_TYPE)");
 	}
@@ -1539,7 +1540,7 @@
 
     memset(&namebuf, 0, sizeof(namebuf));
     mh.msg_name = (struct sockaddr *)&namebuf;
-    mh.msg_namelen = sizeof(namebuf);
+    mh.msg_namelen = (socklen_t)sizeof(namebuf);
 
     mh.msg_iov = &iov;
     mh.msg_iovlen = 1;
@@ -1548,7 +1549,7 @@
 
 #if defined(HAVE_ST_MSG_CONTROL)
     mh.msg_control = ctlbuf;
-    mh.msg_controllen = maxctllen;
+    mh.msg_controllen = (socklen_t)maxctllen;
 #endif
 
     if (grow_buffer)
@@ -1614,7 +1615,7 @@
 #undef BIG_ENOUGH_SPACE
 	}
 #else
-	if (NIL_P(vmaxdatlen) && ss != -1 && ss == iov.iov_len) {
+	if (NIL_P(vmaxdatlen) && ss != -1 && ss == (ssize_t)iov.iov_len) {
             if (SIZE_MAX/2 < maxdatlen)
                 rb_raise(rb_eArgError, "max data length too big");
 	    maxdatlen *= 2;
Index: ext/socket/unixsocket.c
===================================================================
--- ext/socket/unixsocket.c	(revision 27528)
+++ ext/socket/unixsocket.c	(revision 27529)
@@ -17,10 +17,11 @@
 };
 
 static VALUE
-unixsock_connect_internal(struct unixsock_arg *arg)
+unixsock_connect_internal(VALUE a)
 {
+    struct unixsock_arg *arg = (struct unixsock_arg *)a;
     return (VALUE)rsock_connect(arg->fd, (struct sockaddr*)arg->sockaddr,
-			        sizeof(*arg->sockaddr), 0);
+			        (socklen_t)sizeof(*arg->sockaddr), 0);
 }
 
 VALUE
@@ -45,15 +46,14 @@
     memcpy(sockaddr.sun_path, RSTRING_PTR(path), RSTRING_LEN(path));
 
     if (server) {
-        status = bind(fd, (struct sockaddr*)&sockaddr, sizeof(sockaddr));
+        status = bind(fd, (struct sockaddr*)&sockaddr, (socklen_t)sizeof(sockaddr));
     }
     else {
 	int prot;
 	struct unixsock_arg arg;
 	arg.sockaddr = &sockaddr;
 	arg.fd = fd;
-        status = rb_protect((VALUE(*)(VALUE))unixsock_connect_internal,
-			    (VALUE)&arg, &prot);
+        status = (int)rb_protect(unixsock_connect_internal, (VALUE)&arg, &prot);
 	if (prot) {
 	    close(fd);
 	    rb_jump_tag(prot);
@@ -115,7 +115,7 @@
     GetOpenFile(sock, fptr);
     if (NIL_P(fptr->pathv)) {
 	struct sockaddr_un addr;
-	socklen_t len = sizeof(addr);
+	socklen_t len = (socklen_t)sizeof(addr);
 	if (getsockname(fptr->fd, (struct sockaddr*)&addr, &len) < 0)
 	    rb_sys_fail(0);
 	fptr->pathv = rb_obj_freeze(rb_str_new_cstr(rsock_unixpath(&addr, len)));
@@ -235,10 +235,10 @@
 
 #if FD_PASSING_BY_MSG_CONTROL
     arg.msg.msg_control = (caddr_t)&cmsg;
-    arg.msg.msg_controllen = CMSG_LEN(sizeof(int));
+    arg.msg.msg_controllen = (socklen_t)CMSG_LEN(sizeof(int));
     arg.msg.msg_flags = 0;
     MEMZERO((char*)&cmsg, char, sizeof(cmsg));
-    cmsg.hdr.cmsg_len = CMSG_LEN(sizeof(int));
+    cmsg.hdr.cmsg_len = (socklen_t)CMSG_LEN(sizeof(int));
     cmsg.hdr.cmsg_level = SOL_SOCKET;
     cmsg.hdr.cmsg_type = SCM_RIGHTS;
     memcpy(CMSG_DATA(&cmsg.hdr), &fd, sizeof(int));
@@ -320,9 +320,9 @@
 
 #if FD_PASSING_BY_MSG_CONTROL
     arg.msg.msg_control = (caddr_t)&cmsg;
-    arg.msg.msg_controllen = CMSG_SPACE(sizeof(int));
+    arg.msg.msg_controllen = (socklen_t)CMSG_SPACE(sizeof(int));
     arg.msg.msg_flags = 0;
-    cmsg.hdr.cmsg_len = CMSG_LEN(sizeof(int));
+    cmsg.hdr.cmsg_len = (socklen_t)CMSG_LEN(sizeof(int));
     cmsg.hdr.cmsg_level = SOL_SOCKET;
     cmsg.hdr.cmsg_type = SCM_RIGHTS;
     fd = -1;
@@ -415,7 +415,7 @@
 {
     rb_io_t *fptr;
     struct sockaddr_un addr;
-    socklen_t len = sizeof addr;
+    socklen_t len = (socklen_t)sizeof addr;
 
     GetOpenFile(sock, fptr);
 
@@ -441,7 +441,7 @@
 {
     rb_io_t *fptr;
     struct sockaddr_un addr;
-    socklen_t len = sizeof addr;
+    socklen_t len = (socklen_t)sizeof addr;
 
     GetOpenFile(sock, fptr);
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]