[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
sa_family_t
From: |
Simon Josefsson |
Subject: |
sa_family_t |
Date: |
Wed, 20 May 2009 08:54:17 +0200 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.93 (gnu/linux) |
Mingw and IRIX does not seem to have sa_family_t.
Does anyone know of a system where 'unsigned short' is not the
appropriate type for sa_family_t? It has to be the same type as the
sin_family field in struct sockaddr_in, or the sa_family field in struct
sockaddr. Those structs typically exists on any Unix-like platform.
I have pushed the patch below.
/Simon
>From a7b3227b5935d203a51bd3bf09c710e35f6bf0cf Mon Sep 17 00:00:00 2001
From: Simon Josefsson <address@hidden>
Date: Wed, 20 May 2009 08:52:49 +0200
Subject: [PATCH] sys_socket: MinGW and IRIX does not have sa_family_t type.
Reported by "Tom G. Christensen" <address@hidden>.
---
ChangeLog | 9 +++++++++
lib/sys_socket.in.h | 4 ++++
m4/sys_socket_h.m4 | 7 ++++++-
modules/sys_socket | 1 +
tests/test-sys_socket.c | 2 ++
5 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index a46971a..a153fa9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-05-20 Simon Josefsson <address@hidden>
+
+ MinGW and IRIX does not have sa_family_t type. Reported by "Tom
+ G. Christensen" <address@hidden>.
+ * 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 <address@hidden>
maint.mk: allow gnulib_dir in VPATH build
diff --git a/lib/sys_socket.in.h b/lib/sys_socket.in.h
index 0ce7e9b..4553f60 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 address@hidden@
+typedef unsigned short sa_family_t;
+#endif
+
#if address@hidden@
# include <alignof.h>
/* 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 d1cb9c2..74e8110 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 27bbbcc..e07dd05 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; \
} > address@hidden
diff --git a/tests/test-sys_socket.c b/tests/test-sys_socket.c
index fe7688e..3d946a8 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;
}
--
1.6.2.4
- sa_family_t,
Simon Josefsson <=