From: Simon Josefsson Date: Wed, 20 May 2009 06:52:49 +0000 (+0200) Subject: sys_socket: MinGW and IRIX does not have sa_family_t type. X-Git-Tag: v0.1~5910 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=a7b3227b5935d203a51bd3bf09c710e35f6bf0cf;p=gnulib.git sys_socket: MinGW and IRIX does not have sa_family_t type. Reported by "Tom G. Christensen" . --- diff --git a/ChangeLog b/ChangeLog index a46971a78..a153fa90e 100644 --- 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 index 0ce7e9b9b..4553f60c9 100644 --- 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 index d1cb9c20a..74e8110c0 100644 --- a/m4/sys_socket_h.m4 +++ b/m4/sys_socket_h.m4 @@ -42,7 +42,7 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET], 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 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET], 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 @@ AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], 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 index 27bbbcc05..e07dd05f1 100644 --- a/modules/sys_socket +++ b/modules/sys_socket @@ -46,6 +46,7 @@ sys/socket.h: sys_socket.in.h -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 index fe7688e5c..3d946a83b 100644 --- a/tests/test-sys_socket.c +++ b/tests/test-sys_socket.c @@ -31,6 +31,7 @@ int main () { struct sockaddr_storage x; + sa_family_t i; /* Check some errno values. */ switch (0) @@ -46,6 +47,7 @@ main () } x.ss_family = 42; + i = 4711; return 0; }