# HG changeset patch # User Simon Josefsson # Date 1242802369 -7200 # Node ID 40afcbcc19edec7d0303fcc7abc8e6317d34f507 # Parent 79df2eaa43956d20652feb6d3058614d8aeb44a3 sys_socket: MinGW and IRIX does not have sa_family_t type. Reported by "Tom G. Christensen" . diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-05-20 Simon Josefsson + + MinGW and IRIX does not have sa_family_t type. Reported by "Tom + G. Christensen" . + * m4/sys_socket_h.m4: Check for sa_family_t. + * lib/sys_socket.in.h: Typedef sa_family_t when needed. + * modules/sys_socket: Substitute HAVE_SA_FAMILY_T. + * tests/test-sys_socket.c: Check that sa_family_t works. + 2009-05-18 Eric Blake maint.mk: allow gnulib_dir in VPATH build diff --git a/lib/sys_socket.in.h b/lib/sys_socket.in.h --- a/lib/sys_socket.in.h +++ b/lib/sys_socket.in.h @@ -43,6 +43,10 @@ #ifndef _GL_SYS_SOCKET_H #define _GL_SYS_SOCKET_H +#if !@HAVE_SA_FAMILY_T@ +typedef unsigned short sa_family_t; +#endif + #if !@HAVE_STRUCT_SOCKADDR_STORAGE@ # include /* Code taken from glibc sysdeps/unix/sysv/linux/bits/socket.h on diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4 --- a/m4/sys_socket_h.m4 +++ b/m4/sys_socket_h.m4 @@ -42,7 +42,7 @@ fi # We need to check for ws2tcpip.h now. gl_PREREQ_SYS_H_SOCKET - AC_CHECK_TYPES([struct sockaddr_storage],,,[ + AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[ /* sys/types.h is not needed according to POSIX, but the sys/socket.h in i386-unknown-freebsd4.10 and powerpc-apple-darwin5.5 required it. */ @@ -58,6 +58,10 @@ HAVE_STRUCT_SOCKADDR_STORAGE=0 SYS_SOCKET_H='sys/socket.h' fi + if test $ac_cv_type_sa_family_t = no; then + HAVE_SA_FAMILY_T=0 + SYS_SOCKET_H='sys/socket.h' + fi if test -n "$SYS_SOCKET_H"; then gl_PREREQ_SYS_H_WINSOCK2 fi @@ -137,4 +141,5 @@ GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT]) GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN]) HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) + HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T]) ]) diff --git a/modules/sys_socket b/modules/sys_socket --- a/modules/sys_socket +++ b/modules/sys_socket @@ -46,6 +46,7 @@ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \ -e 's|@''HAVE_STRUCT_SOCKADDR_STORAGE''@|$(HAVE_STRUCT_SOCKADDR_STORAGE)|g' \ + -e 's|@''HAVE_SA_FAMILY_T''@|$(HAVE_SA_FAMILY_T)|g' \ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ < $(srcdir)/sys_socket.in.h; \ } > $@-t diff --git a/tests/test-sys_socket.c b/tests/test-sys_socket.c --- a/tests/test-sys_socket.c +++ b/tests/test-sys_socket.c @@ -31,6 +31,7 @@ main () { struct sockaddr_storage x; + sa_family_t i; /* Check some errno values. */ switch (0) @@ -46,6 +47,7 @@ } x.ss_family = 42; + i = 4711; return 0; }