]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
build: m4/ax_socklen_t.m4: cleanup
authorAlon Bar-Lev <alon.barlev@gmail.com>
Wed, 29 Feb 2012 20:11:55 +0000 (22:11 +0200)
committerDavid Sommerseth <davids@redhat.com>
Thu, 22 Mar 2012 21:07:07 +0000 (22:07 +0100)
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>
configure.ac
m4/ax_socklen_t.m4

index fbed6bf0518c8b18d61cfd7ba13b3f211d81a877..69a37361057651921627a1252dd79d1c73db9a82 100644 (file)
@@ -381,10 +381,10 @@ AC_TYPE_OFF_T
 AC_TYPE_PID_T
 AC_TYPE_SIZE_T
 AC_TYPE_UID_T
-TYPE_SOCKLEN_T
 AC_HEADER_TIME
 AX_CPP_VARARG_MACRO_ISO
 AX_CPP_VARARG_MACRO_GCC
+AX_TYPE_SOCKLEN_T
 AX_EMPTY_ARRAY
 
 dnl Check for more header files.
index 70ddcc22d950ead7c27da35b38f0baace380d2d5..cd7cad8acf83b3c72a8bb78eb49799f978e4ab1d 100644 (file)
@@ -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
+               ]]
+       )
 ])