Annotation of embedaddon/rsync/m4/socklen_t.m4, revision 1.1.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>