[w3m-dev 04379] check socklen_t

Hiroyuki Ito <[email protected]> Tue, 10 Aug 2010 19:09:56 +0900 (JST)
Newsgroups gmane.comp.web.w3m.devel
Message-ID <[email protected]>
伊東です。

コンパイル時の警告を減らすために socklen_t がある場合は使う様にしてみま
した。サイズが大きくなるので configure の差分は含めていません。

Index: config.h.in
===================================================================
RCS file: /cvsroot/w3m/w3m/config.h.in,v
retrieving revision 1.19
diff -u -r1.19 config.h.in
--- config.h.in	23 May 2007 15:06:05 -0000	1.19
+++ config.h.in	10 Aug 2010 10:01:38 -0000
@@ -81,6 +81,7 @@
 #define ID_EXT
 #undef CLEAR_BUF
 #undef INET6
+#undef HAVE_SOCKLEN_T
 #undef HAVE_OLD_SS_FAMILY
 #define USE_EGD
 #define ENABLE_REMOVE_TRAILINGSPACES
Index: configure.ac
===================================================================
RCS file: /cvsroot/w3m/w3m/configure.ac,v
retrieving revision 1.9
diff -u -r1.9 configure.ac
--- configure.ac	31 May 2007 12:17:05 -0000	1.9
+++ configure.ac	10 Aug 2010 10:01:39 -0000
@@ -107,6 +107,11 @@
 AC_W3M_GC
 AC_CHECK_LIB(z, zError, [AUXBIN_TARGETS="$AUXBIN_TARGETS inflate\$(EXT)"])
 
+AC_CHECK_TYPE([socklen_t],
+	 [AC_DEFINE(HAVE_SOCKLEN_T)], ,
+	 [#include <sys/types.h>
+	  #include <sys/socket.h>])
+
 AC_DEFINE(AUXBIN_TARGETS, "$AUXBIN_TARGETS")
 
 AC_SUBST(USE_BINMODE_STREAM)
Index: ftp.c
===================================================================
RCS file: /cvsroot/w3m/w3m/ftp.c,v
retrieving revision 1.39
diff -u -r1.39 ftp.c
--- ftp.c	31 May 2007 01:19:50 -0000	1.39
+++ ftp.c	10 Aug 2010 10:01:40 -0000
@@ -25,6 +25,10 @@
 #include <winsock.h>
 #endif /* __MINGW32_VERSION */
 
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+
 typedef struct _FTP {
     char *host;
     int port;
@@ -128,7 +132,7 @@
 
 	if (n > 0 && ftp->pass[n - 1] == '@') {
 	    struct sockaddr_in sockname;
-	    int socknamelen = sizeof(sockname);
+	    socklen_t socknamelen = sizeof(sockname);
 
 	    if (!getsockname(sock, (struct sockaddr *)&sockname, &socknamelen)) {
 		struct hostent *sockent;
@@ -192,7 +196,8 @@
     int family;
 #ifdef INET6
     struct sockaddr_storage sockaddr;
-    int sockaddrlen, port;
+    int port;
+    socklen_t sockaddrlen;
     unsigned char d1, d2, d3, d4;
     char abuf[INET6_ADDRSTRLEN];
 #endif