Annotation of embedaddon/rsync/m4/socklen_t.m4, revision 1.1
1.1 ! misho 1: dnl Check for socklen_t: historically on BSD it is an int, and in
! 2: dnl POSIX 1g it is a type of its own, but some platforms use different
! 3: dnl types for the argument to getsockopt, getpeername, etc. So we
! 4: dnl have to test to find something that will work.
! 5:
! 6: dnl This is no good, because passing the wrong pointer on C compilers is
! 7: dnl likely to only generate a warning, not an error. We don't call this at
! 8: dnl the moment.
! 9:
! 10: AC_DEFUN([TYPE_SOCKLEN_T],
! 11: [
! 12: AC_CHECK_TYPE([socklen_t], ,[
! 13: AC_MSG_CHECKING([for socklen_t equivalent])
! 14: AC_CACHE_VAL([rsync_cv_socklen_t_equiv],
! 15: [
! 16: # Systems have either "struct sockaddr *" or
! 17: # "void *" as the second argument to getpeername
! 18: rsync_cv_socklen_t_equiv=
! 19: for arg2 in "struct sockaddr" void; do
! 20: for t in int size_t unsigned long "unsigned long"; do
! 21: AC_TRY_COMPILE([
! 22: #include <sys/types.h>
! 23: #include <sys/socket.h>
! 24:
! 25: int getpeername (int, $arg2 *, $t *);
! 26: ],[
! 27: $t len;
! 28: getpeername(0,0,&len);
! 29: ],[
! 30: rsync_cv_socklen_t_equiv="$t"
! 31: break
! 32: ])
! 33: done
! 34: done
! 35:
! 36: if test "x$rsync_cv_socklen_t_equiv" = x; then
! 37: AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
! 38: fi
! 39: ])
! 40: AC_MSG_RESULT($rsync_cv_socklen_t_equiv)
! 41: AC_DEFINE_UNQUOTED(socklen_t, $rsync_cv_socklen_t_equiv,
! 42: [type to use in place of socklen_t if not defined])],
! 43: [#include <sys/types.h>
! 44: #include <sys/socket.h>])
! 45: ])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>