diff options
author | Alon Bar-Lev | 2012-02-29 22:11:55 +0200 |
---|---|---|
committer | David Sommerseth | 2012-03-22 22:07:07 +0100 |
commit | 0dbd45db7d76fdff9fbaa64d147c2d2278492efc (patch) | |
tree | 867a268d20d063c9af8efac5f79212f7f049ecba /m4 | |
parent | bdd80be1fed0f4b3956246a44082a4226362074d (diff) | |
download | openvpn-0dbd45db7d76fdff9fbaa64d147c2d2278492efc.zip openvpn-0dbd45db7d76fdff9fbaa64d147c2d2278492efc.tar.gz |
build: m4/ax_socklen_t.m4: cleanup
Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
Acked-by: David Sommerseth <davids@redhat.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
Diffstat (limited to 'm4')
-rw-r--r-- | m4/ax_socklen_t.m4 | 97 |
1 files changed, 56 insertions, 41 deletions
diff --git a/m4/ax_socklen_t.m4 b/m4/ax_socklen_t.m4 index 70ddcc2..cd7cad8 100644 --- a/m4/ax_socklen_t.m4 +++ b/m4/ax_socklen_t.m4 @@ -1,50 +1,65 @@ -dnl -- The following is taken from curl's acinclude.m4 -- +dnl -- The following is base of curl's acinclude.m4 -- dnl Check for socklen_t: historically on BSD it is an int, and in dnl POSIX 1g it is a type of its own, but some platforms use different dnl types for the argument to getsockopt, getpeername, etc. So we dnl have to test to find something that will work. -AC_DEFUN([TYPE_SOCKLEN_T], -[ - AC_CHECK_TYPE([socklen_t], ,[ - AC_MSG_CHECKING([for socklen_t equivalent]) - AC_CACHE_VAL([curl_cv_socklen_t_equiv], - [ - case "$host" in - *-mingw*) curl_cv_socklen_t_equiv=int ;; - *) - # Systems have either "struct sockaddr *" or - # "void *" as the second argument to getpeername - curl_cv_socklen_t_equiv= - for arg2 in "struct sockaddr" void; do - for t in int size_t unsigned long "unsigned long"; do - AC_TRY_COMPILE([ - #include <sys/types.h> - #include <sys/socket.h> - - int getpeername (int, $arg2 *, $t *); - ],[ - $t len; - getpeername(0,0,&len); - ],[ - curl_cv_socklen_t_equiv="$t" - break - ]) - done - done - ;; - esac - - if test "x$curl_cv_socklen_t_equiv" = x; then - AC_MSG_ERROR([Cannot find a type to use in place of socklen_t]) - fi - ]) - AC_MSG_RESULT($curl_cv_socklen_t_equiv) - AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv, - [type to use in place of socklen_t if not defined])], - [#include <sys/types.h> +AC_DEFUN([AX_TYPE_SOCKLEN_T], [ + AC_CHECK_TYPE( + [socklen_t], + , + [ + AS_VAR_PUSHDEF([VAR],[ax_cv_socklen_t_equiv])dnl + AC_CACHE_CHECK( + [for socklen_t equivalent], + [VAR], + [ + #AS_CASE is not supported on <autoconf-2.60 + case "${host}" in + *-mingw*) VAR=int ;; + *) + # Systems have either "struct sockaddr *" or + # "void *" as the second argument to getpeername + for arg2 in "struct sockaddr" void; do + for t in int size_t unsigned long "unsigned long"; do + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include <sys/types.h> +#include <sys/socket.h> +int getpeername (int, $arg2 *, $t *); + ]], + [[ +$t len; +getpeername(0,0,&len); + ]] + )], + [VAR="$t"; break] + ) + done + test -n "$VAR" && break + done + ;; + esac + ] + AS_VAR_IF( + [VAR], + [], + [AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])], + [AC_DEFINE_UNQUOTED( + [socklen_t], + [$VAR], + [type to use in place of socklen_t if not defined] + )] + ) + ) + ], + [[ +#include <sys/types.h> #ifdef WIN32 #include <ws2tcpip.h> #else #include <sys/socket.h> -#endif]) +#endif + ]] + ) ]) |