mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-05 23:29:20 +02:00
argument, change the order of tests for the third argument to be safe against missing prototypes, and make it fail hard if none of the combinations succeed.
67 lines
2.6 KiB
Plaintext
67 lines
2.6 KiB
Plaintext
# $Header: /cvsroot/pgsql/config/ac_func_accept_argtypes.m4,v 1.2 2000/08/26 21:11:45 petere Exp $
|
|
# This comes from the official Autoconf macro archive at
|
|
# <http://research.cys.de/autoconf-archive/>
|
|
# (I removed the $ before the Id CVS keyword below.)
|
|
|
|
|
|
dnl @synopsis AC_FUNC_ACCEPT_ARGTYPES
|
|
dnl
|
|
dnl Checks the data types of the three arguments to accept(). Results are
|
|
dnl placed into the symbols ACCEPT_TYPE_ARG[123], consistent with the
|
|
dnl following example:
|
|
dnl
|
|
dnl #define ACCEPT_TYPE_ARG1 int
|
|
dnl #define ACCEPT_TYPE_ARG2 struct sockaddr *
|
|
dnl #define ACCEPT_TYPE_ARG3 socklen_t
|
|
dnl
|
|
dnl This macro requires AC_CHECK_HEADERS to have already verified the
|
|
dnl presence or absence of sys/types.h and sys/socket.h.
|
|
dnl
|
|
dnl NOTE: This is just a modified version of the AC_FUNC_SELECT_ARGTYPES
|
|
dnl macro. Credit for that one goes to David MacKenzie et. al.
|
|
dnl
|
|
dnl @version Id: ac_func_accept_argtypes.m4,v 1.1 1999/12/03 11:29:29 simons Exp $
|
|
dnl @author Daniel Richard G. <skunk@mit.edu>
|
|
dnl
|
|
|
|
# PostgreSQL local changes: In the original version ACCEPT_TYPE_ARG3
|
|
# is a pointer type. That's kind of useless because then you can't
|
|
# use the macro to define a corresponding variable. We also make the
|
|
# reasonable(?) assumption that you can use arg3 for getsocktype etc.
|
|
# as well (i.e., anywhere POSIX.2 has socklen_t).
|
|
#
|
|
# arg2 can also be `const' (e.g., RH 4.2). Change the order of tests
|
|
# for arg3 so that `int' is first, in case there is no prototype at all.
|
|
|
|
AC_DEFUN(AC_FUNC_ACCEPT_ARGTYPES,
|
|
[AC_MSG_CHECKING([types of arguments for accept()])
|
|
AC_CACHE_VAL(ac_cv_func_accept_arg1,dnl
|
|
[AC_CACHE_VAL(ac_cv_func_accept_arg2,dnl
|
|
[AC_CACHE_VAL(ac_cv_func_accept_arg3,dnl
|
|
[for ac_cv_func_accept_arg1 in 'int' 'unsigned int'; do
|
|
for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
|
|
for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int'; do
|
|
AC_TRY_COMPILE(
|
|
[#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
extern accept ($ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *);],
|
|
[], [ac_not_found=no; break 3], [ac_not_found=yes])
|
|
done
|
|
done
|
|
done
|
|
if test "$ac_not_found" = yes; then
|
|
AC_MSG_ERROR([could not determine argument types])
|
|
fi
|
|
])dnl AC_CACHE_VAL
|
|
])dnl AC_CACHE_VAL
|
|
])dnl AC_CACHE_VAL
|
|
AC_MSG_RESULT([$ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *])
|
|
AC_DEFINE_UNQUOTED(ACCEPT_TYPE_ARG1,$ac_cv_func_accept_arg1)
|
|
AC_DEFINE_UNQUOTED(ACCEPT_TYPE_ARG2,$ac_cv_func_accept_arg2)
|
|
AC_DEFINE_UNQUOTED(ACCEPT_TYPE_ARG3,$ac_cv_func_accept_arg3)
|
|
])
|