Skip to content
Snippets Groups Projects
curl-functions.m4 154 KiB
Newer Older
  • Learn to ignore specific revisions
  • dnl HAVE_FCNTL will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_FCNTL], [
      AC_REQUIRE([CURL_INCLUDES_FCNTL])dnl
      #
      tst_links_fcntl="unknown"
      tst_proto_fcntl="unknown"
      tst_compi_fcntl="unknown"
      tst_allow_fcntl="unknown"
      #
      AC_MSG_CHECKING([if fcntl can be linked])
      AC_LINK_IFELSE([
        AC_LANG_FUNC_LINK_TRY([fcntl])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_fcntl="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_fcntl="no"
      ])
      #
      if test "$tst_links_fcntl" = "yes"; then
        AC_MSG_CHECKING([if fcntl is prototyped])
        AC_EGREP_CPP([fcntl],[
          $curl_includes_fcntl
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_fcntl="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_fcntl="no"
        ])
      fi
      #
      if test "$tst_proto_fcntl" = "yes"; then
        AC_MSG_CHECKING([if fcntl is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_fcntl
          ]],[[
            if(0 != fcntl(0, 0, 0))
              return 1;
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_fcntl="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_fcntl="no"
        ])
      fi
      #
      if test "$tst_compi_fcntl" = "yes"; then
        AC_MSG_CHECKING([if fcntl usage allowed])
        if test "x$curl_disallow_fcntl" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_fcntl="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_fcntl="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if fcntl might be used])
      if test "$tst_links_fcntl" = "yes" &&
         test "$tst_proto_fcntl" = "yes" &&
         test "$tst_compi_fcntl" = "yes" &&
         test "$tst_allow_fcntl" = "yes"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_FCNTL, 1,
          [Define to 1 if you have the fcntl function.])
        ac_cv_func_fcntl="yes"
        CURL_CHECK_FUNC_FCNTL_O_NONBLOCK
      else
        AC_MSG_RESULT([no])
        ac_cv_func_fcntl="no"
      fi
    ])
    
    
    dnl CURL_CHECK_FUNC_FCNTL_O_NONBLOCK
    dnl -------------------------------------------------
    dnl Verify if fcntl with status flag O_NONBLOCK is
    dnl available, can be compiled, and seems to work. If
    dnl all of these are true, then HAVE_FCNTL_O_NONBLOCK
    dnl will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_FCNTL_O_NONBLOCK], [
      #
      tst_compi_fcntl_o_nonblock="unknown"
      tst_allow_fcntl_o_nonblock="unknown"
      #
      case $host_os in
        sunos4* | aix3* | beos*)
          dnl O_NONBLOCK does not work on these platforms
          curl_disallow_fcntl_o_nonblock="yes"
          ;;
      esac
      #
      if test "$ac_cv_func_fcntl" = "yes"; then
        AC_MSG_CHECKING([if fcntl O_NONBLOCK is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_fcntl
          ]],[[
            int flags = 0;
            if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK))
              return 1;
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_fcntl_o_nonblock="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_fcntl_o_nonblock="no"
        ])
      fi
      #
      if test "$tst_compi_fcntl_o_nonblock" = "yes"; then
        AC_MSG_CHECKING([if fcntl O_NONBLOCK usage allowed])
        if test "x$curl_disallow_fcntl_o_nonblock" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_fcntl_o_nonblock="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_fcntl_o_nonblock="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if fcntl O_NONBLOCK might be used])
      if test "$tst_compi_fcntl_o_nonblock" = "yes" &&
         test "$tst_allow_fcntl_o_nonblock" = "yes"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_FCNTL_O_NONBLOCK, 1,
          [Define to 1 if you have a working fcntl O_NONBLOCK function.])
        ac_cv_func_fcntl_o_nonblock="yes"
      else
        AC_MSG_RESULT([no])
        ac_cv_func_fcntl_o_nonblock="no"
      fi
    ])
    
    
    
    dnl CURL_CHECK_FUNC_FDOPEN
    dnl -------------------------------------------------
    dnl Verify if fdopen is available, prototyped, and
    dnl can be compiled. If all of these are true, and
    dnl usage has not been previously disallowed with
    dnl shell variable curl_disallow_fdopen, then
    dnl HAVE_FDOPEN will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_FDOPEN], [
      AC_REQUIRE([CURL_INCLUDES_STDIO])dnl
      #
      tst_links_fdopen="unknown"
      tst_proto_fdopen="unknown"
      tst_compi_fdopen="unknown"
      tst_allow_fdopen="unknown"
      #
      AC_MSG_CHECKING([if fdopen can be linked])
      AC_LINK_IFELSE([
        AC_LANG_FUNC_LINK_TRY([fdopen])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_fdopen="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_fdopen="no"
      ])
      #
      if test "$tst_links_fdopen" = "yes"; then
        AC_MSG_CHECKING([if fdopen is prototyped])
        AC_EGREP_CPP([fdopen],[
          $curl_includes_stdio
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_fdopen="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_fdopen="no"
        ])
      fi
      #
      if test "$tst_proto_fdopen" = "yes"; then
        AC_MSG_CHECKING([if fdopen is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_stdio
          ]],[[
            if(0 != fdopen(0, 0))
              return 1;
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_fdopen="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_fdopen="no"
        ])
      fi
      #
      if test "$tst_compi_fdopen" = "yes"; then
        AC_MSG_CHECKING([if fdopen usage allowed])
        if test "x$curl_disallow_fdopen" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_fdopen="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_fdopen="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if fdopen might be used])
      if test "$tst_links_fdopen" = "yes" &&
         test "$tst_proto_fdopen" = "yes" &&
         test "$tst_compi_fdopen" = "yes" &&
         test "$tst_allow_fdopen" = "yes"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_FDOPEN, 1,
          [Define to 1 if you have the fdopen function.])
        ac_cv_func_fdopen="yes"
      else
        AC_MSG_RESULT([no])
        ac_cv_func_fdopen="no"
      fi
    ])
    
    
    
    dnl CURL_CHECK_FUNC_FREEADDRINFO
    dnl -------------------------------------------------
    dnl Verify if freeaddrinfo is available, prototyped,
    dnl and can be compiled. If all of these are true,
    dnl and usage has not been previously disallowed with
    dnl shell variable curl_disallow_freeaddrinfo, then
    dnl HAVE_FREEADDRINFO will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_FREEADDRINFO], [
      AC_REQUIRE([CURL_INCLUDES_WS2TCPIP])dnl
      AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
      AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
      #
      tst_links_freeaddrinfo="unknown"
      tst_proto_freeaddrinfo="unknown"
      tst_compi_freeaddrinfo="unknown"
      tst_allow_freeaddrinfo="unknown"
      #
      AC_MSG_CHECKING([if freeaddrinfo can be linked])
      AC_LINK_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_ws2tcpip
          $curl_includes_sys_socket
          $curl_includes_netdb
        ]],[[
          freeaddrinfo(0);
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_freeaddrinfo="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_freeaddrinfo="no"
      ])
      #
      if test "$tst_links_freeaddrinfo" = "yes"; then
        AC_MSG_CHECKING([if freeaddrinfo is prototyped])
        AC_EGREP_CPP([freeaddrinfo],[
          $curl_includes_ws2tcpip
          $curl_includes_sys_socket
          $curl_includes_netdb
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_freeaddrinfo="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_freeaddrinfo="no"
        ])
      fi
      #
      if test "$tst_proto_freeaddrinfo" = "yes"; then
        AC_MSG_CHECKING([if freeaddrinfo is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_ws2tcpip
            $curl_includes_sys_socket
            $curl_includes_netdb
          ]],[[
            freeaddrinfo(0);
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_freeaddrinfo="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_freeaddrinfo="no"
        ])
      fi
      #
      if test "$tst_compi_freeaddrinfo" = "yes"; then
        AC_MSG_CHECKING([if freeaddrinfo usage allowed])
        if test "x$curl_disallow_freeaddrinfo" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_freeaddrinfo="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_freeaddrinfo="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if freeaddrinfo might be used])
      if test "$tst_links_freeaddrinfo" = "yes" &&
         test "$tst_proto_freeaddrinfo" = "yes" &&
         test "$tst_compi_freeaddrinfo" = "yes" &&
         test "$tst_allow_freeaddrinfo" = "yes"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_FREEADDRINFO, 1,
          [Define to 1 if you have the freeaddrinfo function.])
        ac_cv_func_freeaddrinfo="yes"
      else
        AC_MSG_RESULT([no])
        ac_cv_func_freeaddrinfo="no"
      fi
    ])
    
    
    
    dnl CURL_CHECK_FUNC_FREEIFADDRS
    dnl -------------------------------------------------
    dnl Verify if freeifaddrs is available, prototyped, and
    dnl can be compiled. If all of these are true, and
    dnl usage has not been previously disallowed with
    dnl shell variable curl_disallow_freeifaddrs, then
    dnl HAVE_FREEIFADDRS will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_FREEIFADDRS], [
      AC_REQUIRE([CURL_INCLUDES_IFADDRS])dnl
      #
      tst_links_freeifaddrs="unknown"
      tst_proto_freeifaddrs="unknown"
      tst_compi_freeifaddrs="unknown"
      tst_allow_freeifaddrs="unknown"
      #
      AC_MSG_CHECKING([if freeifaddrs can be linked])
      AC_LINK_IFELSE([
        AC_LANG_FUNC_LINK_TRY([freeifaddrs])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_freeifaddrs="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_freeifaddrs="no"
      ])
      #
      if test "$tst_links_freeifaddrs" = "yes"; then
        AC_MSG_CHECKING([if freeifaddrs is prototyped])
        AC_EGREP_CPP([freeifaddrs],[
          $curl_includes_ifaddrs
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_freeifaddrs="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_freeifaddrs="no"
        ])
      fi
      #
      if test "$tst_proto_freeifaddrs" = "yes"; then
        AC_MSG_CHECKING([if freeifaddrs is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_ifaddrs
          ]],[[
            freeifaddrs(0);
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_freeifaddrs="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_freeifaddrs="no"
        ])
      fi
      #
      if test "$tst_compi_freeifaddrs" = "yes"; then
        AC_MSG_CHECKING([if freeifaddrs usage allowed])
        if test "x$curl_disallow_freeifaddrs" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_freeifaddrs="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_freeifaddrs="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if freeifaddrs might be used])
      if test "$tst_links_freeifaddrs" = "yes" &&
         test "$tst_proto_freeifaddrs" = "yes" &&
         test "$tst_compi_freeifaddrs" = "yes" &&
         test "$tst_allow_freeifaddrs" = "yes"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_FREEIFADDRS, 1,
          [Define to 1 if you have the freeifaddrs function.])
        ac_cv_func_freeifaddrs="yes"
      else
        AC_MSG_RESULT([no])
        ac_cv_func_freeifaddrs="no"
      fi
    ])
    
    
    
    dnl CURL_CHECK_FUNC_FTRUNCATE
    dnl -------------------------------------------------
    dnl Verify if ftruncate is available, prototyped, and
    dnl can be compiled. If all of these are true, and
    dnl usage has not been previously disallowed with
    dnl shell variable curl_disallow_ftruncate, then
    dnl HAVE_FTRUNCATE will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_FTRUNCATE], [
      AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
      #
      tst_links_ftruncate="unknown"
      tst_proto_ftruncate="unknown"
      tst_compi_ftruncate="unknown"
      tst_allow_ftruncate="unknown"
      #
      AC_MSG_CHECKING([if ftruncate can be linked])
      AC_LINK_IFELSE([
        AC_LANG_FUNC_LINK_TRY([ftruncate])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_ftruncate="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_ftruncate="no"
      ])
      #
      if test "$tst_links_ftruncate" = "yes"; then
        AC_MSG_CHECKING([if ftruncate is prototyped])
        AC_EGREP_CPP([ftruncate],[
          $curl_includes_unistd
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_ftruncate="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_ftruncate="no"
        ])
      fi
      #
      if test "$tst_proto_ftruncate" = "yes"; then
        AC_MSG_CHECKING([if ftruncate is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_unistd
          ]],[[
            if(0 != ftruncate(0, 0))
              return 1;
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_ftruncate="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_ftruncate="no"
        ])
      fi
      #
      if test "$tst_compi_ftruncate" = "yes"; then
        AC_MSG_CHECKING([if ftruncate usage allowed])
        if test "x$curl_disallow_ftruncate" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_ftruncate="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_ftruncate="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if ftruncate might be used])
      if test "$tst_links_ftruncate" = "yes" &&
         test "$tst_proto_ftruncate" = "yes" &&
         test "$tst_compi_ftruncate" = "yes" &&
         test "$tst_allow_ftruncate" = "yes"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_FTRUNCATE, 1,
          [Define to 1 if you have the ftruncate function.])
        ac_cv_func_ftruncate="yes"
      else
        AC_MSG_RESULT([no])
        ac_cv_func_ftruncate="no"
      fi
    ])
    
    
    
    dnl CURL_CHECK_FUNC_GETADDRINFO
    dnl -------------------------------------------------
    dnl Verify if getaddrinfo is available, prototyped, can
    dnl be compiled and seems to work. If all of these are
    dnl true, and usage has not been previously disallowed
    dnl with shell variable curl_disallow_getaddrinfo, then
    
    dnl HAVE_GETADDRINFO will be defined. Additionally when
    dnl HAVE_GETADDRINFO gets defined this will also attempt
    dnl to find out if getaddrinfo happens to be threadsafe,
    dnl defining HAVE_GETADDRINFO_THREADSAFE when true.
    
    
    AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [
      AC_REQUIRE([CURL_INCLUDES_WS2TCPIP])dnl
      AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
    
      AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
      AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
      #
      tst_links_getaddrinfo="unknown"
      tst_proto_getaddrinfo="unknown"
      tst_compi_getaddrinfo="unknown"
      tst_works_getaddrinfo="unknown"
      tst_allow_getaddrinfo="unknown"
    
      #
      AC_MSG_CHECKING([if getaddrinfo can be linked])
      AC_LINK_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_ws2tcpip
          $curl_includes_sys_socket
          $curl_includes_netdb
        ]],[[
          if(0 != getaddrinfo(0, 0, 0, 0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_getaddrinfo="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_getaddrinfo="no"
      ])
      #
      if test "$tst_links_getaddrinfo" = "yes"; then
        AC_MSG_CHECKING([if getaddrinfo is prototyped])
        AC_EGREP_CPP([getaddrinfo],[
          $curl_includes_ws2tcpip
          $curl_includes_sys_socket
          $curl_includes_netdb
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_getaddrinfo="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_getaddrinfo="no"
        ])
      fi
      #
      if test "$tst_proto_getaddrinfo" = "yes"; then
        AC_MSG_CHECKING([if getaddrinfo is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_ws2tcpip
            $curl_includes_sys_socket
            $curl_includes_netdb
          ]],[[
            if(0 != getaddrinfo(0, 0, 0, 0))
              return 1;
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_getaddrinfo="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_getaddrinfo="no"
        ])
      fi
      #
      dnl only do runtime verification when not cross-compiling
      if test "x$cross_compiling" != "xyes" &&
        test "$tst_compi_getaddrinfo" = "yes"; then
        AC_MSG_CHECKING([if getaddrinfo seems to work])
        AC_RUN_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_ws2tcpip
            $curl_includes_stdlib
    
            $curl_includes_sys_socket
            $curl_includes_netdb
          ]],[[
            struct addrinfo hints;
            struct addrinfo *ai = 0;
            int error;
    
            memset(&hints, 0, sizeof(hints));
            hints.ai_flags = AI_NUMERICHOST;
            hints.ai_family = AF_UNSPEC;
            hints.ai_socktype = SOCK_STREAM;
            error = getaddrinfo("127.0.0.1", 0, &hints, &ai);
            if(error || !ai)
              exit(1); /* fail */
            else
              exit(0);
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_works_getaddrinfo="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_works_getaddrinfo="no"
        ])
      fi
      #
      if test "$tst_compi_getaddrinfo" = "yes" &&
        test "$tst_works_getaddrinfo" != "no"; then
        AC_MSG_CHECKING([if getaddrinfo usage allowed])
        if test "x$curl_disallow_getaddrinfo" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_getaddrinfo="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_getaddrinfo="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if getaddrinfo might be used])
      if test "$tst_links_getaddrinfo" = "yes" &&
         test "$tst_proto_getaddrinfo" = "yes" &&
         test "$tst_compi_getaddrinfo" = "yes" &&
         test "$tst_allow_getaddrinfo" = "yes" &&
         test "$tst_works_getaddrinfo" != "no"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO, 1,
          [Define to 1 if you have a working getaddrinfo function.])
        ac_cv_func_getaddrinfo="yes"
      else
        AC_MSG_RESULT([no])
        ac_cv_func_getaddrinfo="no"
    
        ac_cv_func_getaddrinfo_threadsafe="no"
      fi
      #
      if test "$ac_cv_func_getaddrinfo" = "yes"; then
        AC_MSG_CHECKING([if getaddrinfo is threadsafe])
        case $host_os in
          darwin[[12354678]].*)
            tst_tsafe_getaddrinfo="no"
            ;;
          darwin*)
            tst_tsafe_getaddrinfo="yes"
            ;;
          dragonflybsd*)
            tst_tsafe_getaddrinfo="yes"
            ;;
          freebsd[[1234]].* | freebsd5.[[1234]]*)
            tst_tsafe_getaddrinfo="no"
            ;;
          freebsd*)
            tst_tsafe_getaddrinfo="yes"
            ;;
    
          hpux[[123456789]].* | hpux10.* | hpux11.0* | hpux11.10*)
            tst_tsafe_getaddrinfo="no"
            ;;
          hpux*)
            tst_tsafe_getaddrinfo="yes"
            ;;
    
          linux*)
            tst_tsafe_getaddrinfo="yes"
            ;;
          netbsd[[123]].*)
            tst_tsafe_getaddrinfo="no"
            ;;
          netbsd*)
            tst_tsafe_getaddrinfo="yes"
            ;;
        esac
        AC_MSG_RESULT([$tst_tsafe_getaddrinfo])
        if test "$tst_tsafe_getaddrinfo" = "yes"; then
          AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_THREADSAFE, 1,
            [Define to 1 if the getaddrinfo function is threadsafe.])
          ac_cv_func_getaddrinfo_threadsafe="yes"
        else
          ac_cv_func_getaddrinfo_threadsafe="no"
        fi
    
    dnl CURL_CHECK_FUNC_GETHOSTBYADDR
    dnl -------------------------------------------------
    dnl Verify if gethostbyaddr is available, prototyped,
    dnl and can be compiled. If all of these are true,
    dnl and usage has not been previously disallowed with
    dnl shell variable curl_disallow_gethostbyaddr, then
    dnl HAVE_GETHOSTBYADDR will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYADDR], [
      AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
      AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
      #
      tst_links_gethostbyaddr="unknown"
      tst_proto_gethostbyaddr="unknown"
      tst_compi_gethostbyaddr="unknown"
      tst_allow_gethostbyaddr="unknown"
      #
      AC_MSG_CHECKING([if gethostbyaddr can be linked])
      AC_LINK_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_winsock2
          $curl_includes_netdb
        ]],[[
          if(0 != gethostbyaddr(0, 0, 0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_gethostbyaddr="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_gethostbyaddr="no"
      ])
      #
      if test "$tst_links_gethostbyaddr" = "yes"; then
        AC_MSG_CHECKING([if gethostbyaddr is prototyped])
        AC_EGREP_CPP([gethostbyaddr],[
          $curl_includes_winsock2
          $curl_includes_netdb
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_gethostbyaddr="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_gethostbyaddr="no"
        ])
      fi
      #
      if test "$tst_proto_gethostbyaddr" = "yes"; then
        AC_MSG_CHECKING([if gethostbyaddr is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_winsock2
            $curl_includes_netdb
          ]],[[
            if(0 != gethostbyaddr(0, 0, 0))
              return 1;
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_gethostbyaddr="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_gethostbyaddr="no"
        ])
      fi
      #
      if test "$tst_compi_gethostbyaddr" = "yes"; then
        AC_MSG_CHECKING([if gethostbyaddr usage allowed])
        if test "x$curl_disallow_gethostbyaddr" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_gethostbyaddr="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_gethostbyaddr="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if gethostbyaddr might be used])
      if test "$tst_links_gethostbyaddr" = "yes" &&
         test "$tst_proto_gethostbyaddr" = "yes" &&
         test "$tst_compi_gethostbyaddr" = "yes" &&
         test "$tst_allow_gethostbyaddr" = "yes"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYADDR, 1,
          [Define to 1 if you have the gethostbyaddr function.])
        ac_cv_func_gethostbyaddr="yes"
      else
        AC_MSG_RESULT([no])
        ac_cv_func_gethostbyaddr="no"
      fi
    ])
    
    
    
    dnl CURL_CHECK_FUNC_GETHOSTBYADDR_R
    dnl -------------------------------------------------
    dnl Verify if gethostbyaddr_r is available, prototyped,
    dnl and can be compiled. If all of these are true, and
    dnl usage has not been previously disallowed with
    dnl shell variable curl_disallow_gethostbyaddr_r, then
    dnl HAVE_GETHOSTBYADDR_R will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYADDR_R], [
    
      AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
    
      #
      tst_links_gethostbyaddr_r="unknown"
      tst_proto_gethostbyaddr_r="unknown"
      tst_compi_gethostbyaddr_r="unknown"
      tst_allow_gethostbyaddr_r="unknown"
      tst_nargs_gethostbyaddr_r="unknown"
      #
      AC_MSG_CHECKING([if gethostbyaddr_r can be linked])
      AC_LINK_IFELSE([
        AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_gethostbyaddr_r="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_gethostbyaddr_r="no"
      ])
      #
      if test "$tst_links_gethostbyaddr_r" = "yes"; then
        AC_MSG_CHECKING([if gethostbyaddr_r is prototyped])
        AC_EGREP_CPP([gethostbyaddr_r],[
          $curl_includes_netdb
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_gethostbyaddr_r="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_gethostbyaddr_r="no"
        ])
      fi
      #
      if test "$tst_proto_gethostbyaddr_r" = "yes"; then
        if test "$tst_nargs_gethostbyaddr_r" = "unknown"; then
          AC_MSG_CHECKING([if gethostbyaddr_r takes 5 args.])
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
              $curl_includes_netdb
            ]],[[
              if(0 != gethostbyaddr_r(0, 0, 0, 0, 0))
                return 1;
            ]])
          ],[
            AC_MSG_RESULT([yes])
            tst_compi_gethostbyaddr_r="yes"
            tst_nargs_gethostbyaddr_r="5"
          ],[
            AC_MSG_RESULT([no])
            tst_compi_gethostbyaddr_r="no"
          ])
        fi
        if test "$tst_nargs_gethostbyaddr_r" = "unknown"; then
          AC_MSG_CHECKING([if gethostbyaddr_r takes 7 args.])
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
              $curl_includes_netdb
            ]],[[
              if(0 != gethostbyaddr_r(0, 0, 0, 0, 0, 0, 0))
                return 1;
            ]])
          ],[
            AC_MSG_RESULT([yes])
            tst_compi_gethostbyaddr_r="yes"
            tst_nargs_gethostbyaddr_r="7"
          ],[
            AC_MSG_RESULT([no])
            tst_compi_gethostbyaddr_r="no"
          ])
        fi
        if test "$tst_nargs_gethostbyaddr_r" = "unknown"; then
          AC_MSG_CHECKING([if gethostbyaddr_r takes 8 args.])
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
              $curl_includes_netdb
            ]],[[
              if(0 != gethostbyaddr_r(0, 0, 0, 0, 0, 0, 0, 0))
                return 1;
            ]])
          ],[
            AC_MSG_RESULT([yes])
            tst_compi_gethostbyaddr_r="yes"
            tst_nargs_gethostbyaddr_r="8"
          ],[
            AC_MSG_RESULT([no])
            tst_compi_gethostbyaddr_r="no"
          ])
        fi
        AC_MSG_CHECKING([if gethostbyaddr_r is compilable])
        if test "$tst_compi_gethostbyaddr_r" = "yes"; then
          AC_MSG_RESULT([yes])
        else
          AC_MSG_RESULT([no])
        fi
      fi
      #
      if test "$tst_compi_gethostbyaddr_r" = "yes"; then
        AC_MSG_CHECKING([if gethostbyaddr_r usage allowed])
        if test "x$curl_disallow_gethostbyaddr_r" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_gethostbyaddr_r="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_gethostbyaddr_r="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if gethostbyaddr_r might be used])
      if test "$tst_links_gethostbyaddr_r" = "yes" &&
         test "$tst_proto_gethostbyaddr_r" = "yes" &&
         test "$tst_compi_gethostbyaddr_r" = "yes" &&
         test "$tst_allow_gethostbyaddr_r" = "yes"; then
        AC_MSG_RESULT([yes])
        AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYADDR_R, 1,
          [Define to 1 if you have the gethostbyaddr_r function.])
        dnl AC_DEFINE_UNQUOTED(GETHOSTBYADDR_R_ARGS, $tst_nargs_gethostbyaddr_r,
        dnl   [Specifies the number of arguments to gethostbyaddr_r])
        #
    
        if test "$tst_nargs_gethostbyaddr_r" -eq "5"; then
    
          AC_DEFINE(HAVE_GETHOSTBYADDR_R_5, 1, [gethostbyaddr_r() takes 5 args])
    
        elif test "$tst_nargs_gethostbyaddr_r" -eq "7"; then
    
          AC_DEFINE(HAVE_GETHOSTBYADDR_R_7, 1, [gethostbyaddr_r() takes 7 args])
    
        elif test "$tst_nargs_gethostbyaddr_r" -eq "8"; then
    
          AC_DEFINE(HAVE_GETHOSTBYADDR_R_8, 1, [gethostbyaddr_r() takes 8 args])
        fi
        #
        ac_cv_func_gethostbyaddr_r="yes"
      else
        AC_MSG_RESULT([no])
        ac_cv_func_gethostbyaddr_r="no"
      fi
    ])
    
    
    
    dnl CURL_CHECK_FUNC_GETHOSTBYNAME
    dnl -------------------------------------------------
    dnl Verify if gethostbyname is available, prototyped,
    dnl and can be compiled. If all of these are true,
    dnl and usage has not been previously disallowed with
    dnl shell variable curl_disallow_gethostbyname, then
    dnl HAVE_GETHOSTBYNAME will be defined.
    
    AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME], [
      AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
      AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
      #
      tst_links_gethostbyname="unknown"
      tst_proto_gethostbyname="unknown"
      tst_compi_gethostbyname="unknown"
      tst_allow_gethostbyname="unknown"
      #
      AC_MSG_CHECKING([if gethostbyname can be linked])
      AC_LINK_IFELSE([
        AC_LANG_PROGRAM([[
          $curl_includes_winsock2
          $curl_includes_netdb
        ]],[[
          if(0 != gethostbyname(0))
            return 1;
        ]])
      ],[
        AC_MSG_RESULT([yes])
        tst_links_gethostbyname="yes"
      ],[
        AC_MSG_RESULT([no])
        tst_links_gethostbyname="no"
      ])
      #
      if test "$tst_links_gethostbyname" = "yes"; then
        AC_MSG_CHECKING([if gethostbyname is prototyped])
        AC_EGREP_CPP([gethostbyname],[
          $curl_includes_winsock2
          $curl_includes_netdb
        ],[
          AC_MSG_RESULT([yes])
          tst_proto_gethostbyname="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_proto_gethostbyname="no"
        ])
      fi
      #
      if test "$tst_proto_gethostbyname" = "yes"; then
        AC_MSG_CHECKING([if gethostbyname is compilable])
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
            $curl_includes_winsock2
            $curl_includes_netdb
          ]],[[
            if(0 != gethostbyname(0))
              return 1;
          ]])
        ],[
          AC_MSG_RESULT([yes])
          tst_compi_gethostbyname="yes"
        ],[
          AC_MSG_RESULT([no])
          tst_compi_gethostbyname="no"
        ])
      fi
      #
      if test "$tst_compi_gethostbyname" = "yes"; then
        AC_MSG_CHECKING([if gethostbyname usage allowed])
        if test "x$curl_disallow_gethostbyname" != "xyes"; then
          AC_MSG_RESULT([yes])
          tst_allow_gethostbyname="yes"
        else
          AC_MSG_RESULT([no])
          tst_allow_gethostbyname="no"
        fi
      fi
      #
      AC_MSG_CHECKING([if gethostbyname might be used])
      if test "$tst_links_gethostbyname" = "yes" &&
         test "$tst_proto_gethostbyname" = "yes" &&
         test "$tst_compi_gethostbyname" = "yes" &&
         test "$tst_allow_gethostbyname" = "yes"; then
        AC_MSG_RESULT([yes])