Home | History | Annotate | Download | only in m4
      1 #***************************************************************************
      2 #                                  _   _ ____  _
      3 #  Project                     ___| | | |  _ \| |
      4 #                             / __| | | | |_) | |
      5 #                            | (__| |_| |  _ <| |___
      6 #                             \___|\___/|_| \_\_____|
      7 #
      8 # Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel (a] haxx.se>, et al.
      9 #
     10 # This software is licensed as described in the file COPYING, which
     11 # you should have received as part of this distribution. The terms
     12 # are also available at http://curl.haxx.se/docs/copyright.html.
     13 #
     14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
     15 # copies of the Software, and permit persons to whom the Software is
     16 # furnished to do so, under the terms of the COPYING file.
     17 #
     18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     19 # KIND, either express or implied.
     20 #
     21 #***************************************************************************
     22 
     23 # File version for 'aclocal' use. Keep it a single number.
     24 # serial 73
     25 
     26 
     27 dnl CURL_INCLUDES_ARPA_INET
     28 dnl -------------------------------------------------
     29 dnl Set up variable with list of headers that must be
     30 dnl included when arpa/inet.h is to be included.
     31 
     32 AC_DEFUN([CURL_INCLUDES_ARPA_INET], [
     33 curl_includes_arpa_inet="\
     34 /* includes start */
     35 #ifdef HAVE_SYS_TYPES_H
     36 #  include <sys/types.h>
     37 #endif
     38 #ifdef HAVE_SYS_SOCKET_H
     39 #  include <sys/socket.h>
     40 #endif
     41 #ifdef HAVE_NETINET_IN_H
     42 #  include <netinet/in.h>
     43 #endif
     44 #ifdef HAVE_ARPA_INET_H
     45 #  include <arpa/inet.h>
     46 #endif
     47 /* includes end */"
     48   AC_CHECK_HEADERS(
     49     sys/types.h sys/socket.h netinet/in.h arpa/inet.h,
     50     [], [], [$curl_includes_arpa_inet])
     51 ])
     52 
     53 
     54 dnl CURL_INCLUDES_FCNTL
     55 dnl -------------------------------------------------
     56 dnl Set up variable with list of headers that must be
     57 dnl included when fcntl.h is to be included.
     58 
     59 AC_DEFUN([CURL_INCLUDES_FCNTL], [
     60 curl_includes_fcntl="\
     61 /* includes start */
     62 #ifdef HAVE_SYS_TYPES_H
     63 #  include <sys/types.h>
     64 #endif
     65 #ifdef HAVE_UNISTD_H
     66 #  include <unistd.h>
     67 #endif
     68 #ifdef HAVE_FCNTL_H
     69 #  include <fcntl.h>
     70 #endif
     71 /* includes end */"
     72   AC_CHECK_HEADERS(
     73     sys/types.h unistd.h fcntl.h,
     74     [], [], [$curl_includes_fcntl])
     75 ])
     76 
     77 
     78 dnl CURL_INCLUDES_IFADDRS
     79 dnl -------------------------------------------------
     80 dnl Set up variable with list of headers that must be
     81 dnl included when ifaddrs.h is to be included.
     82 
     83 AC_DEFUN([CURL_INCLUDES_IFADDRS], [
     84 curl_includes_ifaddrs="\
     85 /* includes start */
     86 #ifdef HAVE_SYS_TYPES_H
     87 #  include <sys/types.h>
     88 #endif
     89 #ifdef HAVE_SYS_SOCKET_H
     90 #  include <sys/socket.h>
     91 #endif
     92 #ifdef HAVE_NETINET_IN_H
     93 #  include <netinet/in.h>
     94 #endif
     95 #ifdef HAVE_IFADDRS_H
     96 #  include <ifaddrs.h>
     97 #endif
     98 /* includes end */"
     99   AC_CHECK_HEADERS(
    100     sys/types.h sys/socket.h netinet/in.h ifaddrs.h,
    101     [], [], [$curl_includes_ifaddrs])
    102 ])
    103 
    104 
    105 dnl CURL_INCLUDES_INTTYPES
    106 dnl -------------------------------------------------
    107 dnl Set up variable with list of headers that must be
    108 dnl included when inttypes.h is to be included.
    109 
    110 AC_DEFUN([CURL_INCLUDES_INTTYPES], [
    111 curl_includes_inttypes="\
    112 /* includes start */
    113 #ifdef HAVE_SYS_TYPES_H
    114 # include <sys/types.h>
    115 #endif
    116 #ifdef HAVE_STDINT_H
    117 # include <stdint.h>
    118 #endif
    119 #ifdef HAVE_INTTYPES_H
    120 # include <inttypes.h>
    121 #endif
    122 /* includes end */"
    123   case $host_os in
    124     irix*)
    125       ac_cv_header_stdint_h="no"
    126       ;;
    127   esac
    128   AC_CHECK_HEADERS(
    129     sys/types.h stdint.h inttypes.h,
    130     [], [], [$curl_includes_inttypes])
    131 ])
    132 
    133 
    134 dnl CURL_INCLUDES_LIBGEN
    135 dnl -------------------------------------------------
    136 dnl Set up variable with list of headers that must be
    137 dnl included when libgen.h is to be included.
    138 
    139 AC_DEFUN([CURL_INCLUDES_LIBGEN], [
    140 curl_includes_libgen="\
    141 /* includes start */
    142 #ifdef HAVE_SYS_TYPES_H
    143 #  include <sys/types.h>
    144 #endif
    145 #ifdef HAVE_LIBGEN_H
    146 #  include <libgen.h>
    147 #endif
    148 /* includes end */"
    149   AC_CHECK_HEADERS(
    150     sys/types.h libgen.h,
    151     [], [], [$curl_includes_libgen])
    152 ])
    153 
    154 
    155 dnl CURL_INCLUDES_NETDB
    156 dnl -------------------------------------------------
    157 dnl Set up variable with list of headers that must be
    158 dnl included when netdb.h is to be included.
    159 
    160 AC_DEFUN([CURL_INCLUDES_NETDB], [
    161 curl_includes_netdb="\
    162 /* includes start */
    163 #ifdef HAVE_SYS_TYPES_H
    164 #  include <sys/types.h>
    165 #endif
    166 #ifdef HAVE_NETDB_H
    167 #  include <netdb.h>
    168 #endif
    169 /* includes end */"
    170   AC_CHECK_HEADERS(
    171     sys/types.h netdb.h,
    172     [], [], [$curl_includes_netdb])
    173 ])
    174 
    175 
    176 dnl CURL_INCLUDES_POLL
    177 dnl -------------------------------------------------
    178 dnl Set up variable with list of headers that must be
    179 dnl included when poll.h is to be included.
    180 
    181 AC_DEFUN([CURL_INCLUDES_POLL], [
    182 curl_includes_poll="\
    183 /* includes start */
    184 #ifdef HAVE_SYS_TYPES_H
    185 #  include <sys/types.h>
    186 #endif
    187 #ifdef HAVE_POLL_H
    188 #  include <poll.h>
    189 #endif
    190 #ifdef HAVE_SYS_POLL_H
    191 #  include <sys/poll.h>
    192 #endif
    193 /* includes end */"
    194   AC_CHECK_HEADERS(
    195     sys/types.h poll.h sys/poll.h,
    196     [], [], [$curl_includes_poll])
    197 ])
    198 
    199 
    200 dnl CURL_INCLUDES_SETJMP
    201 dnl -------------------------------------------------
    202 dnl Set up variable with list of headers that must be
    203 dnl included when setjmp.h is to be included.
    204 
    205 AC_DEFUN([CURL_INCLUDES_SETJMP], [
    206 curl_includes_setjmp="\
    207 /* includes start */
    208 #ifdef HAVE_SYS_TYPES_H
    209 #  include <sys/types.h>
    210 #endif
    211 #ifdef HAVE_SETJMP_H
    212 #  include <setjmp.h>
    213 #endif
    214 /* includes end */"
    215   AC_CHECK_HEADERS(
    216     sys/types.h setjmp.h,
    217     [], [], [$curl_includes_setjmp])
    218 ])
    219 
    220 
    221 dnl CURL_INCLUDES_SIGNAL
    222 dnl -------------------------------------------------
    223 dnl Set up variable with list of headers that must be
    224 dnl included when signal.h is to be included.
    225 
    226 AC_DEFUN([CURL_INCLUDES_SIGNAL], [
    227 curl_includes_signal="\
    228 /* includes start */
    229 #ifdef HAVE_SYS_TYPES_H
    230 #  include <sys/types.h>
    231 #endif
    232 #ifdef HAVE_SIGNAL_H
    233 #  include <signal.h>
    234 #endif
    235 /* includes end */"
    236   AC_CHECK_HEADERS(
    237     sys/types.h signal.h,
    238     [], [], [$curl_includes_signal])
    239 ])
    240 
    241 
    242 dnl CURL_INCLUDES_SOCKET
    243 dnl -------------------------------------------------
    244 dnl Set up variable with list of headers that must be
    245 dnl included when socket.h is to be included.
    246 
    247 AC_DEFUN([CURL_INCLUDES_SOCKET], [
    248 curl_includes_socket="\
    249 /* includes start */
    250 #ifdef HAVE_SYS_TYPES_H
    251 #  include <sys/types.h>
    252 #endif
    253 #ifdef HAVE_SOCKET_H
    254 #  include <socket.h>
    255 #endif
    256 /* includes end */"
    257   AC_CHECK_HEADERS(
    258     sys/types.h socket.h,
    259     [], [], [$curl_includes_socket])
    260 ])
    261 
    262 
    263 dnl CURL_INCLUDES_STDIO
    264 dnl -------------------------------------------------
    265 dnl Set up variable with list of headers that must be
    266 dnl included when stdio.h is to be included.
    267 
    268 AC_DEFUN([CURL_INCLUDES_STDIO], [
    269 curl_includes_stdio="\
    270 /* includes start */
    271 #ifdef HAVE_SYS_TYPES_H
    272 #  include <sys/types.h>
    273 #endif
    274 #ifdef HAVE_STDIO_H
    275 #  include <stdio.h>
    276 #endif
    277 /* includes end */"
    278   AC_CHECK_HEADERS(
    279     sys/types.h stdio.h,
    280     [], [], [$curl_includes_stdio])
    281 ])
    282 
    283 
    284 dnl CURL_INCLUDES_STDLIB
    285 dnl -------------------------------------------------
    286 dnl Set up variable with list of headers that must be
    287 dnl included when stdlib.h is to be included.
    288 
    289 AC_DEFUN([CURL_INCLUDES_STDLIB], [
    290 curl_includes_stdlib="\
    291 /* includes start */
    292 #ifdef HAVE_SYS_TYPES_H
    293 #  include <sys/types.h>
    294 #endif
    295 #ifdef HAVE_STDLIB_H
    296 #  include <stdlib.h>
    297 #endif
    298 /* includes end */"
    299   AC_CHECK_HEADERS(
    300     sys/types.h stdlib.h,
    301     [], [], [$curl_includes_stdlib])
    302 ])
    303 
    304 
    305 dnl CURL_INCLUDES_STRING
    306 dnl -------------------------------------------------
    307 dnl Set up variable with list of headers that must be
    308 dnl included when string(s).h is to be included.
    309 
    310 AC_DEFUN([CURL_INCLUDES_STRING], [
    311 curl_includes_string="\
    312 /* includes start */
    313 #ifdef HAVE_SYS_TYPES_H
    314 #  include <sys/types.h>
    315 #endif
    316 #ifdef HAVE_STRING_H
    317 #  include <string.h>
    318 #endif
    319 #ifdef HAVE_STRINGS_H
    320 #  include <strings.h>
    321 #endif
    322 /* includes end */"
    323   AC_CHECK_HEADERS(
    324     sys/types.h string.h strings.h,
    325     [], [], [$curl_includes_string])
    326 ])
    327 
    328 
    329 dnl CURL_INCLUDES_STROPTS
    330 dnl -------------------------------------------------
    331 dnl Set up variable with list of headers that must be
    332 dnl included when stropts.h is to be included.
    333 
    334 AC_DEFUN([CURL_INCLUDES_STROPTS], [
    335 curl_includes_stropts="\
    336 /* includes start */
    337 #ifdef HAVE_SYS_TYPES_H
    338 #  include <sys/types.h>
    339 #endif
    340 #ifdef HAVE_UNISTD_H
    341 #  include <unistd.h>
    342 #endif
    343 #ifdef HAVE_SYS_SOCKET_H
    344 #  include <sys/socket.h>
    345 #endif
    346 #ifdef HAVE_SYS_IOCTL_H
    347 #  include <sys/ioctl.h>
    348 #endif
    349 #ifdef HAVE_STROPTS_H
    350 #  include <stropts.h>
    351 #endif
    352 /* includes end */"
    353   AC_CHECK_HEADERS(
    354     sys/types.h unistd.h sys/socket.h sys/ioctl.h stropts.h,
    355     [], [], [$curl_includes_stropts])
    356 ])
    357 
    358 
    359 dnl CURL_INCLUDES_SYS_SOCKET
    360 dnl -------------------------------------------------
    361 dnl Set up variable with list of headers that must be
    362 dnl included when sys/socket.h is to be included.
    363 
    364 AC_DEFUN([CURL_INCLUDES_SYS_SOCKET], [
    365 curl_includes_sys_socket="\
    366 /* includes start */
    367 #ifdef HAVE_SYS_TYPES_H
    368 #  include <sys/types.h>
    369 #endif
    370 #ifdef HAVE_SYS_SOCKET_H
    371 #  include <sys/socket.h>
    372 #endif
    373 /* includes end */"
    374   AC_CHECK_HEADERS(
    375     sys/types.h sys/socket.h,
    376     [], [], [$curl_includes_sys_socket])
    377 ])
    378 
    379 
    380 dnl CURL_INCLUDES_SYS_TYPES
    381 dnl -------------------------------------------------
    382 dnl Set up variable with list of headers that must be
    383 dnl included when sys/types.h is to be included.
    384 
    385 AC_DEFUN([CURL_INCLUDES_SYS_TYPES], [
    386 curl_includes_sys_types="\
    387 /* includes start */
    388 #ifdef HAVE_SYS_TYPES_H
    389 #  include <sys/types.h>
    390 #endif
    391 /* includes end */"
    392   AC_CHECK_HEADERS(
    393     sys/types.h,
    394     [], [], [$curl_includes_sys_types])
    395 ])
    396 
    397 
    398 dnl CURL_INCLUDES_SYS_UIO
    399 dnl -------------------------------------------------
    400 dnl Set up variable with list of headers that must be
    401 dnl included when sys/uio.h is to be included.
    402 
    403 AC_DEFUN([CURL_INCLUDES_SYS_UIO], [
    404 curl_includes_sys_uio="\
    405 /* includes start */
    406 #ifdef HAVE_SYS_TYPES_H
    407 #  include <sys/types.h>
    408 #endif
    409 #ifdef HAVE_SYS_UIO_H
    410 #  include <sys/uio.h>
    411 #endif
    412 /* includes end */"
    413   AC_CHECK_HEADERS(
    414     sys/types.h sys/uio.h,
    415     [], [], [$curl_includes_sys_uio])
    416 ])
    417 
    418 
    419 dnl CURL_INCLUDES_SYS_XATTR
    420 dnl -------------------------------------------------
    421 dnl Set up variable with list of headers that must be
    422 dnl included when sys/xattr.h is to be included.
    423 
    424 AC_DEFUN([CURL_INCLUDES_SYS_XATTR], [
    425 curl_includes_sys_xattr="\
    426 /* includes start */
    427 #ifdef HAVE_SYS_TYPES_H
    428 #  include <sys/types.h>
    429 #endif
    430 #ifdef HAVE_SYS_XATTR_H
    431 #  include <sys/xattr.h>
    432 #endif
    433 /* includes end */"
    434   AC_CHECK_HEADERS(
    435     sys/types.h sys/xattr.h,
    436     [], [], [$curl_includes_sys_xattr])
    437 ])
    438 
    439 dnl CURL_INCLUDES_TIME
    440 dnl -------------------------------------------------
    441 dnl Set up variable with list of headers that must be
    442 dnl included when time.h is to be included.
    443 
    444 AC_DEFUN([CURL_INCLUDES_TIME], [
    445 AC_REQUIRE([AC_HEADER_TIME])dnl
    446 curl_includes_time="\
    447 /* includes start */
    448 #ifdef HAVE_SYS_TYPES_H
    449 #  include <sys/types.h>
    450 #endif
    451 #ifdef HAVE_SYS_TIME_H
    452 #  include <sys/time.h>
    453 #  ifdef TIME_WITH_SYS_TIME
    454 #    include <time.h>
    455 #  endif
    456 #else
    457 #  ifdef HAVE_TIME_H
    458 #    include <time.h>
    459 #  endif
    460 #endif
    461 /* includes end */"
    462   AC_CHECK_HEADERS(
    463     sys/types.h sys/time.h time.h,
    464     [], [], [$curl_includes_time])
    465 ])
    466 
    467 
    468 dnl CURL_INCLUDES_UNISTD
    469 dnl -------------------------------------------------
    470 dnl Set up variable with list of headers that must be
    471 dnl included when unistd.h is to be included.
    472 
    473 AC_DEFUN([CURL_INCLUDES_UNISTD], [
    474 curl_includes_unistd="\
    475 /* includes start */
    476 #ifdef HAVE_SYS_TYPES_H
    477 #  include <sys/types.h>
    478 #endif
    479 #ifdef HAVE_UNISTD_H
    480 #  include <unistd.h>
    481 #endif
    482 /* includes end */"
    483   AC_CHECK_HEADERS(
    484     sys/types.h unistd.h,
    485     [], [], [$curl_includes_unistd])
    486 ])
    487 
    488 
    489 dnl CURL_INCLUDES_WINSOCK2
    490 dnl -------------------------------------------------
    491 dnl Set up variable with list of headers that must be
    492 dnl included when winsock(2).h is to be included.
    493 
    494 AC_DEFUN([CURL_INCLUDES_WINSOCK2], [
    495 curl_includes_winsock2="\
    496 /* includes start */
    497 #ifdef HAVE_WINDOWS_H
    498 #  ifndef WIN32_LEAN_AND_MEAN
    499 #    define WIN32_LEAN_AND_MEAN
    500 #  endif
    501 #  include <windows.h>
    502 #  ifdef HAVE_WINSOCK2_H
    503 #    include <winsock2.h>
    504 #  else
    505 #    ifdef HAVE_WINSOCK_H
    506 #      include <winsock.h>
    507 #    endif
    508 #  endif
    509 #endif
    510 /* includes end */"
    511   CURL_CHECK_HEADER_WINDOWS
    512   CURL_CHECK_HEADER_WINSOCK
    513   CURL_CHECK_HEADER_WINSOCK2
    514 ])
    515 
    516 
    517 dnl CURL_INCLUDES_WS2TCPIP
    518 dnl -------------------------------------------------
    519 dnl Set up variable with list of headers that must be
    520 dnl included when ws2tcpip.h is to be included.
    521 
    522 AC_DEFUN([CURL_INCLUDES_WS2TCPIP], [
    523 curl_includes_ws2tcpip="\
    524 /* includes start */
    525 #ifdef HAVE_WINDOWS_H
    526 #  ifndef WIN32_LEAN_AND_MEAN
    527 #    define WIN32_LEAN_AND_MEAN
    528 #  endif
    529 #  include <windows.h>
    530 #  ifdef HAVE_WINSOCK2_H
    531 #    include <winsock2.h>
    532 #    ifdef HAVE_WS2TCPIP_H
    533 #       include <ws2tcpip.h>
    534 #    endif
    535 #  endif
    536 #endif
    537 /* includes end */"
    538   CURL_CHECK_HEADER_WINDOWS
    539   CURL_CHECK_HEADER_WINSOCK2
    540   CURL_CHECK_HEADER_WS2TCPIP
    541 ])
    542 
    543 
    544 dnl CURL_PREPROCESS_CALLCONV
    545 dnl -------------------------------------------------
    546 dnl Set up variable with a preprocessor block which
    547 dnl defines function calling convention.
    548 
    549 AC_DEFUN([CURL_PREPROCESS_CALLCONV], [
    550 curl_preprocess_callconv="\
    551 /* preprocess start */
    552 #ifdef HAVE_WINDOWS_H
    553 #  define FUNCALLCONV __stdcall
    554 #else
    555 #  define FUNCALLCONV
    556 #endif
    557 /* preprocess end */"
    558 ])
    559 
    560 
    561 dnl CURL_CHECK_FUNC_ALARM
    562 dnl -------------------------------------------------
    563 dnl Verify if alarm is available, prototyped, and
    564 dnl can be compiled. If all of these are true, and
    565 dnl usage has not been previously disallowed with
    566 dnl shell variable curl_disallow_alarm, then
    567 dnl HAVE_ALARM will be defined.
    568 
    569 AC_DEFUN([CURL_CHECK_FUNC_ALARM], [
    570   AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
    571   #
    572   tst_links_alarm="unknown"
    573   tst_proto_alarm="unknown"
    574   tst_compi_alarm="unknown"
    575   tst_allow_alarm="unknown"
    576   #
    577   AC_MSG_CHECKING([if alarm can be linked])
    578   AC_LINK_IFELSE([
    579     AC_LANG_FUNC_LINK_TRY([alarm])
    580   ],[
    581     AC_MSG_RESULT([yes])
    582     tst_links_alarm="yes"
    583   ],[
    584     AC_MSG_RESULT([no])
    585     tst_links_alarm="no"
    586   ])
    587   #
    588   if test "$tst_links_alarm" = "yes"; then
    589     AC_MSG_CHECKING([if alarm is prototyped])
    590     AC_EGREP_CPP([alarm],[
    591       $curl_includes_unistd
    592     ],[
    593       AC_MSG_RESULT([yes])
    594       tst_proto_alarm="yes"
    595     ],[
    596       AC_MSG_RESULT([no])
    597       tst_proto_alarm="no"
    598     ])
    599   fi
    600   #
    601   if test "$tst_proto_alarm" = "yes"; then
    602     AC_MSG_CHECKING([if alarm is compilable])
    603     AC_COMPILE_IFELSE([
    604       AC_LANG_PROGRAM([[
    605         $curl_includes_unistd
    606       ]],[[
    607         if(0 != alarm(0))
    608           return 1;
    609       ]])
    610     ],[
    611       AC_MSG_RESULT([yes])
    612       tst_compi_alarm="yes"
    613     ],[
    614       AC_MSG_RESULT([no])
    615       tst_compi_alarm="no"
    616     ])
    617   fi
    618   #
    619   if test "$tst_compi_alarm" = "yes"; then
    620     AC_MSG_CHECKING([if alarm usage allowed])
    621     if test "x$curl_disallow_alarm" != "xyes"; then
    622       AC_MSG_RESULT([yes])
    623       tst_allow_alarm="yes"
    624     else
    625       AC_MSG_RESULT([no])
    626       tst_allow_alarm="no"
    627     fi
    628   fi
    629   #
    630   AC_MSG_CHECKING([if alarm might be used])
    631   if test "$tst_links_alarm" = "yes" &&
    632      test "$tst_proto_alarm" = "yes" &&
    633      test "$tst_compi_alarm" = "yes" &&
    634      test "$tst_allow_alarm" = "yes"; then
    635     AC_MSG_RESULT([yes])
    636     AC_DEFINE_UNQUOTED(HAVE_ALARM, 1,
    637       [Define to 1 if you have the alarm function.])
    638     ac_cv_func_alarm="yes"
    639   else
    640     AC_MSG_RESULT([no])
    641     ac_cv_func_alarm="no"
    642   fi
    643 ])
    644 
    645 
    646 dnl CURL_CHECK_FUNC_BASENAME
    647 dnl -------------------------------------------------
    648 dnl Verify if basename is available, prototyped, and
    649 dnl can be compiled. If all of these are true, and
    650 dnl usage has not been previously disallowed with
    651 dnl shell variable curl_disallow_basename, then
    652 dnl HAVE_BASENAME will be defined.
    653 
    654 AC_DEFUN([CURL_CHECK_FUNC_BASENAME], [
    655   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
    656   AC_REQUIRE([CURL_INCLUDES_LIBGEN])dnl
    657   AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
    658   #
    659   tst_links_basename="unknown"
    660   tst_proto_basename="unknown"
    661   tst_compi_basename="unknown"
    662   tst_allow_basename="unknown"
    663   #
    664   AC_MSG_CHECKING([if basename can be linked])
    665   AC_LINK_IFELSE([
    666     AC_LANG_FUNC_LINK_TRY([basename])
    667   ],[
    668     AC_MSG_RESULT([yes])
    669     tst_links_basename="yes"
    670   ],[
    671     AC_MSG_RESULT([no])
    672     tst_links_basename="no"
    673   ])
    674   #
    675   if test "$tst_links_basename" = "yes"; then
    676     AC_MSG_CHECKING([if basename is prototyped])
    677     AC_EGREP_CPP([basename],[
    678       $curl_includes_string
    679       $curl_includes_libgen
    680       $curl_includes_unistd
    681     ],[
    682       AC_MSG_RESULT([yes])
    683       tst_proto_basename="yes"
    684     ],[
    685       AC_MSG_RESULT([no])
    686       tst_proto_basename="no"
    687     ])
    688   fi
    689   #
    690   if test "$tst_proto_basename" = "yes"; then
    691     AC_MSG_CHECKING([if basename is compilable])
    692     AC_COMPILE_IFELSE([
    693       AC_LANG_PROGRAM([[
    694         $curl_includes_string
    695         $curl_includes_libgen
    696         $curl_includes_unistd
    697       ]],[[
    698         if(0 != basename(0))
    699           return 1;
    700       ]])
    701     ],[
    702       AC_MSG_RESULT([yes])
    703       tst_compi_basename="yes"
    704     ],[
    705       AC_MSG_RESULT([no])
    706       tst_compi_basename="no"
    707     ])
    708   fi
    709   #
    710   if test "$tst_compi_basename" = "yes"; then
    711     AC_MSG_CHECKING([if basename usage allowed])
    712     if test "x$curl_disallow_basename" != "xyes"; then
    713       AC_MSG_RESULT([yes])
    714       tst_allow_basename="yes"
    715     else
    716       AC_MSG_RESULT([no])
    717       tst_allow_basename="no"
    718     fi
    719   fi
    720   #
    721   AC_MSG_CHECKING([if basename might be used])
    722   if test "$tst_links_basename" = "yes" &&
    723      test "$tst_proto_basename" = "yes" &&
    724      test "$tst_compi_basename" = "yes" &&
    725      test "$tst_allow_basename" = "yes"; then
    726     AC_MSG_RESULT([yes])
    727     AC_DEFINE_UNQUOTED(HAVE_BASENAME, 1,
    728       [Define to 1 if you have the basename function.])
    729     ac_cv_func_basename="yes"
    730   else
    731     AC_MSG_RESULT([no])
    732     ac_cv_func_basename="no"
    733   fi
    734 ])
    735 
    736 
    737 dnl CURL_CHECK_FUNC_CLOSESOCKET
    738 dnl -------------------------------------------------
    739 dnl Verify if closesocket is available, prototyped, and
    740 dnl can be compiled. If all of these are true, and
    741 dnl usage has not been previously disallowed with
    742 dnl shell variable curl_disallow_closesocket, then
    743 dnl HAVE_CLOSESOCKET will be defined.
    744 
    745 AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
    746   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
    747   AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
    748   #
    749   tst_links_closesocket="unknown"
    750   tst_proto_closesocket="unknown"
    751   tst_compi_closesocket="unknown"
    752   tst_allow_closesocket="unknown"
    753   #
    754   AC_MSG_CHECKING([if closesocket can be linked])
    755   AC_LINK_IFELSE([
    756     AC_LANG_PROGRAM([[
    757       $curl_includes_winsock2
    758       $curl_includes_socket
    759     ]],[[
    760       if(0 != closesocket(0))
    761         return 1;
    762     ]])
    763   ],[
    764     AC_MSG_RESULT([yes])
    765     tst_links_closesocket="yes"
    766   ],[
    767     AC_MSG_RESULT([no])
    768     tst_links_closesocket="no"
    769   ])
    770   #
    771   if test "$tst_links_closesocket" = "yes"; then
    772     AC_MSG_CHECKING([if closesocket is prototyped])
    773     AC_EGREP_CPP([closesocket],[
    774       $curl_includes_winsock2
    775       $curl_includes_socket
    776     ],[
    777       AC_MSG_RESULT([yes])
    778       tst_proto_closesocket="yes"
    779     ],[
    780       AC_MSG_RESULT([no])
    781       tst_proto_closesocket="no"
    782     ])
    783   fi
    784   #
    785   if test "$tst_proto_closesocket" = "yes"; then
    786     AC_MSG_CHECKING([if closesocket is compilable])
    787     AC_COMPILE_IFELSE([
    788       AC_LANG_PROGRAM([[
    789         $curl_includes_winsock2
    790         $curl_includes_socket
    791       ]],[[
    792         if(0 != closesocket(0))
    793           return 1;
    794       ]])
    795     ],[
    796       AC_MSG_RESULT([yes])
    797       tst_compi_closesocket="yes"
    798     ],[
    799       AC_MSG_RESULT([no])
    800       tst_compi_closesocket="no"
    801     ])
    802   fi
    803   #
    804   if test "$tst_compi_closesocket" = "yes"; then
    805     AC_MSG_CHECKING([if closesocket usage allowed])
    806     if test "x$curl_disallow_closesocket" != "xyes"; then
    807       AC_MSG_RESULT([yes])
    808       tst_allow_closesocket="yes"
    809     else
    810       AC_MSG_RESULT([no])
    811       tst_allow_closesocket="no"
    812     fi
    813   fi
    814   #
    815   AC_MSG_CHECKING([if closesocket might be used])
    816   if test "$tst_links_closesocket" = "yes" &&
    817      test "$tst_proto_closesocket" = "yes" &&
    818      test "$tst_compi_closesocket" = "yes" &&
    819      test "$tst_allow_closesocket" = "yes"; then
    820     AC_MSG_RESULT([yes])
    821     AC_DEFINE_UNQUOTED(HAVE_CLOSESOCKET, 1,
    822       [Define to 1 if you have the closesocket function.])
    823     ac_cv_func_closesocket="yes"
    824   else
    825     AC_MSG_RESULT([no])
    826     ac_cv_func_closesocket="no"
    827   fi
    828 ])
    829 
    830 
    831 dnl CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
    832 dnl -------------------------------------------------
    833 dnl Verify if CloseSocket is available, prototyped, and
    834 dnl can be compiled. If all of these are true, and
    835 dnl usage has not been previously disallowed with
    836 dnl shell variable curl_disallow_closesocket_camel,
    837 dnl then HAVE_CLOSESOCKET_CAMEL will be defined.
    838 
    839 AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
    840   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
    841   #
    842   tst_links_closesocket_camel="unknown"
    843   tst_proto_closesocket_camel="unknown"
    844   tst_compi_closesocket_camel="unknown"
    845   tst_allow_closesocket_camel="unknown"
    846   #
    847   AC_MSG_CHECKING([if CloseSocket can be linked])
    848   AC_LINK_IFELSE([
    849     AC_LANG_PROGRAM([[
    850       $curl_includes_sys_socket
    851     ]],[[
    852       if(0 != CloseSocket(0))
    853         return 1;
    854     ]])
    855   ],[
    856     AC_MSG_RESULT([yes])
    857     tst_links_closesocket_camel="yes"
    858   ],[
    859     AC_MSG_RESULT([no])
    860     tst_links_closesocket_camel="no"
    861   ])
    862   #
    863   if test "$tst_links_closesocket_camel" = "yes"; then
    864     AC_MSG_CHECKING([if CloseSocket is prototyped])
    865     AC_EGREP_CPP([CloseSocket],[
    866       $curl_includes_sys_socket
    867     ],[
    868       AC_MSG_RESULT([yes])
    869       tst_proto_closesocket_camel="yes"
    870     ],[
    871       AC_MSG_RESULT([no])
    872       tst_proto_closesocket_camel="no"
    873     ])
    874   fi
    875   #
    876   if test "$tst_proto_closesocket_camel" = "yes"; then
    877     AC_MSG_CHECKING([if CloseSocket is compilable])
    878     AC_COMPILE_IFELSE([
    879       AC_LANG_PROGRAM([[
    880         $curl_includes_sys_socket
    881       ]],[[
    882         if(0 != CloseSocket(0))
    883           return 1;
    884       ]])
    885     ],[
    886       AC_MSG_RESULT([yes])
    887       tst_compi_closesocket_camel="yes"
    888     ],[
    889       AC_MSG_RESULT([no])
    890       tst_compi_closesocket_camel="no"
    891     ])
    892   fi
    893   #
    894   if test "$tst_compi_closesocket_camel" = "yes"; then
    895     AC_MSG_CHECKING([if CloseSocket usage allowed])
    896     if test "x$curl_disallow_closesocket_camel" != "xyes"; then
    897       AC_MSG_RESULT([yes])
    898       tst_allow_closesocket_camel="yes"
    899     else
    900       AC_MSG_RESULT([no])
    901       tst_allow_closesocket_camel="no"
    902     fi
    903   fi
    904   #
    905   AC_MSG_CHECKING([if CloseSocket might be used])
    906   if test "$tst_links_closesocket_camel" = "yes" &&
    907      test "$tst_proto_closesocket_camel" = "yes" &&
    908      test "$tst_compi_closesocket_camel" = "yes" &&
    909      test "$tst_allow_closesocket_camel" = "yes"; then
    910     AC_MSG_RESULT([yes])
    911     AC_DEFINE_UNQUOTED(HAVE_CLOSESOCKET_CAMEL, 1,
    912       [Define to 1 if you have the CloseSocket camel case function.])
    913     ac_cv_func_closesocket_camel="yes"
    914   else
    915     AC_MSG_RESULT([no])
    916     ac_cv_func_closesocket_camel="no"
    917   fi
    918 ])
    919 
    920 
    921 dnl CURL_CHECK_FUNC_CONNECT
    922 dnl -------------------------------------------------
    923 dnl Verify if connect is available, prototyped, and
    924 dnl can be compiled. If all of these are true, and
    925 dnl usage has not been previously disallowed with
    926 dnl shell variable curl_disallow_connect, then
    927 dnl HAVE_CONNECT will be defined.
    928 
    929 AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
    930   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
    931   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
    932   AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
    933   #
    934   tst_links_connect="unknown"
    935   tst_proto_connect="unknown"
    936   tst_compi_connect="unknown"
    937   tst_allow_connect="unknown"
    938   #
    939   AC_MSG_CHECKING([if connect can be linked])
    940   AC_LINK_IFELSE([
    941     AC_LANG_PROGRAM([[
    942       $curl_includes_winsock2
    943       $curl_includes_sys_socket
    944       $curl_includes_socket
    945     ]],[[
    946       if(0 != connect(0, 0, 0))
    947         return 1;
    948     ]])
    949   ],[
    950     AC_MSG_RESULT([yes])
    951     tst_links_connect="yes"
    952   ],[
    953     AC_MSG_RESULT([no])
    954     tst_links_connect="no"
    955   ])
    956   #
    957   if test "$tst_links_connect" = "yes"; then
    958     AC_MSG_CHECKING([if connect is prototyped])
    959     AC_EGREP_CPP([connect],[
    960       $curl_includes_winsock2
    961       $curl_includes_sys_socket
    962       $curl_includes_socket
    963     ],[
    964       AC_MSG_RESULT([yes])
    965       tst_proto_connect="yes"
    966     ],[
    967       AC_MSG_RESULT([no])
    968       tst_proto_connect="no"
    969     ])
    970   fi
    971   #
    972   if test "$tst_proto_connect" = "yes"; then
    973     AC_MSG_CHECKING([if connect is compilable])
    974     AC_COMPILE_IFELSE([
    975       AC_LANG_PROGRAM([[
    976         $curl_includes_winsock2
    977         $curl_includes_sys_socket
    978         $curl_includes_socket
    979       ]],[[
    980         if(0 != connect(0, 0, 0))
    981           return 1;
    982       ]])
    983     ],[
    984       AC_MSG_RESULT([yes])
    985       tst_compi_connect="yes"
    986     ],[
    987       AC_MSG_RESULT([no])
    988       tst_compi_connect="no"
    989     ])
    990   fi
    991   #
    992   if test "$tst_compi_connect" = "yes"; then
    993     AC_MSG_CHECKING([if connect usage allowed])
    994     if test "x$curl_disallow_connect" != "xyes"; then
    995       AC_MSG_RESULT([yes])
    996       tst_allow_connect="yes"
    997     else
    998       AC_MSG_RESULT([no])
    999       tst_allow_connect="no"
   1000     fi
   1001   fi
   1002   #
   1003   AC_MSG_CHECKING([if connect might be used])
   1004   if test "$tst_links_connect" = "yes" &&
   1005      test "$tst_proto_connect" = "yes" &&
   1006      test "$tst_compi_connect" = "yes" &&
   1007      test "$tst_allow_connect" = "yes"; then
   1008     AC_MSG_RESULT([yes])
   1009     AC_DEFINE_UNQUOTED(HAVE_CONNECT, 1,
   1010       [Define to 1 if you have the connect function.])
   1011     ac_cv_func_connect="yes"
   1012   else
   1013     AC_MSG_RESULT([no])
   1014     ac_cv_func_connect="no"
   1015   fi
   1016 ])
   1017 
   1018 
   1019 dnl CURL_CHECK_FUNC_FCNTL
   1020 dnl -------------------------------------------------
   1021 dnl Verify if fcntl is available, prototyped, and
   1022 dnl can be compiled. If all of these are true, and
   1023 dnl usage has not been previously disallowed with
   1024 dnl shell variable curl_disallow_fcntl, then
   1025 dnl HAVE_FCNTL will be defined.
   1026 
   1027 AC_DEFUN([CURL_CHECK_FUNC_FCNTL], [
   1028   AC_REQUIRE([CURL_INCLUDES_FCNTL])dnl
   1029   #
   1030   tst_links_fcntl="unknown"
   1031   tst_proto_fcntl="unknown"
   1032   tst_compi_fcntl="unknown"
   1033   tst_allow_fcntl="unknown"
   1034   #
   1035   AC_MSG_CHECKING([if fcntl can be linked])
   1036   AC_LINK_IFELSE([
   1037     AC_LANG_FUNC_LINK_TRY([fcntl])
   1038   ],[
   1039     AC_MSG_RESULT([yes])
   1040     tst_links_fcntl="yes"
   1041   ],[
   1042     AC_MSG_RESULT([no])
   1043     tst_links_fcntl="no"
   1044   ])
   1045   #
   1046   if test "$tst_links_fcntl" = "yes"; then
   1047     AC_MSG_CHECKING([if fcntl is prototyped])
   1048     AC_EGREP_CPP([fcntl],[
   1049       $curl_includes_fcntl
   1050     ],[
   1051       AC_MSG_RESULT([yes])
   1052       tst_proto_fcntl="yes"
   1053     ],[
   1054       AC_MSG_RESULT([no])
   1055       tst_proto_fcntl="no"
   1056     ])
   1057   fi
   1058   #
   1059   if test "$tst_proto_fcntl" = "yes"; then
   1060     AC_MSG_CHECKING([if fcntl is compilable])
   1061     AC_COMPILE_IFELSE([
   1062       AC_LANG_PROGRAM([[
   1063         $curl_includes_fcntl
   1064       ]],[[
   1065         if(0 != fcntl(0, 0, 0))
   1066           return 1;
   1067       ]])
   1068     ],[
   1069       AC_MSG_RESULT([yes])
   1070       tst_compi_fcntl="yes"
   1071     ],[
   1072       AC_MSG_RESULT([no])
   1073       tst_compi_fcntl="no"
   1074     ])
   1075   fi
   1076   #
   1077   if test "$tst_compi_fcntl" = "yes"; then
   1078     AC_MSG_CHECKING([if fcntl usage allowed])
   1079     if test "x$curl_disallow_fcntl" != "xyes"; then
   1080       AC_MSG_RESULT([yes])
   1081       tst_allow_fcntl="yes"
   1082     else
   1083       AC_MSG_RESULT([no])
   1084       tst_allow_fcntl="no"
   1085     fi
   1086   fi
   1087   #
   1088   AC_MSG_CHECKING([if fcntl might be used])
   1089   if test "$tst_links_fcntl" = "yes" &&
   1090      test "$tst_proto_fcntl" = "yes" &&
   1091      test "$tst_compi_fcntl" = "yes" &&
   1092      test "$tst_allow_fcntl" = "yes"; then
   1093     AC_MSG_RESULT([yes])
   1094     AC_DEFINE_UNQUOTED(HAVE_FCNTL, 1,
   1095       [Define to 1 if you have the fcntl function.])
   1096     ac_cv_func_fcntl="yes"
   1097     CURL_CHECK_FUNC_FCNTL_O_NONBLOCK
   1098   else
   1099     AC_MSG_RESULT([no])
   1100     ac_cv_func_fcntl="no"
   1101   fi
   1102 ])
   1103 
   1104 
   1105 dnl CURL_CHECK_FUNC_FCNTL_O_NONBLOCK
   1106 dnl -------------------------------------------------
   1107 dnl Verify if fcntl with status flag O_NONBLOCK is
   1108 dnl available, can be compiled, and seems to work. If
   1109 dnl all of these are true, then HAVE_FCNTL_O_NONBLOCK
   1110 dnl will be defined.
   1111 
   1112 AC_DEFUN([CURL_CHECK_FUNC_FCNTL_O_NONBLOCK], [
   1113   #
   1114   tst_compi_fcntl_o_nonblock="unknown"
   1115   tst_allow_fcntl_o_nonblock="unknown"
   1116   #
   1117   case $host_os in
   1118     sunos4* | aix3* | beos*)
   1119       dnl O_NONBLOCK does not work on these platforms
   1120       curl_disallow_fcntl_o_nonblock="yes"
   1121       ;;
   1122   esac
   1123   #
   1124   if test "$ac_cv_func_fcntl" = "yes"; then
   1125     AC_MSG_CHECKING([if fcntl O_NONBLOCK is compilable])
   1126     AC_COMPILE_IFELSE([
   1127       AC_LANG_PROGRAM([[
   1128         $curl_includes_fcntl
   1129       ]],[[
   1130         int flags = 0;
   1131         if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK))
   1132           return 1;
   1133       ]])
   1134     ],[
   1135       AC_MSG_RESULT([yes])
   1136       tst_compi_fcntl_o_nonblock="yes"
   1137     ],[
   1138       AC_MSG_RESULT([no])
   1139       tst_compi_fcntl_o_nonblock="no"
   1140     ])
   1141   fi
   1142   #
   1143   if test "$tst_compi_fcntl_o_nonblock" = "yes"; then
   1144     AC_MSG_CHECKING([if fcntl O_NONBLOCK usage allowed])
   1145     if test "x$curl_disallow_fcntl_o_nonblock" != "xyes"; then
   1146       AC_MSG_RESULT([yes])
   1147       tst_allow_fcntl_o_nonblock="yes"
   1148     else
   1149       AC_MSG_RESULT([no])
   1150       tst_allow_fcntl_o_nonblock="no"
   1151     fi
   1152   fi
   1153   #
   1154   AC_MSG_CHECKING([if fcntl O_NONBLOCK might be used])
   1155   if test "$tst_compi_fcntl_o_nonblock" = "yes" &&
   1156      test "$tst_allow_fcntl_o_nonblock" = "yes"; then
   1157     AC_MSG_RESULT([yes])
   1158     AC_DEFINE_UNQUOTED(HAVE_FCNTL_O_NONBLOCK, 1,
   1159       [Define to 1 if you have a working fcntl O_NONBLOCK function.])
   1160     ac_cv_func_fcntl_o_nonblock="yes"
   1161   else
   1162     AC_MSG_RESULT([no])
   1163     ac_cv_func_fcntl_o_nonblock="no"
   1164   fi
   1165 ])
   1166 
   1167 
   1168 dnl CURL_CHECK_FUNC_FDOPEN
   1169 dnl -------------------------------------------------
   1170 dnl Verify if fdopen is available, prototyped, and
   1171 dnl can be compiled. If all of these are true, and
   1172 dnl usage has not been previously disallowed with
   1173 dnl shell variable curl_disallow_fdopen, then
   1174 dnl HAVE_FDOPEN will be defined.
   1175 
   1176 AC_DEFUN([CURL_CHECK_FUNC_FDOPEN], [
   1177   AC_REQUIRE([CURL_INCLUDES_STDIO])dnl
   1178   #
   1179   tst_links_fdopen="unknown"
   1180   tst_proto_fdopen="unknown"
   1181   tst_compi_fdopen="unknown"
   1182   tst_allow_fdopen="unknown"
   1183   #
   1184   AC_MSG_CHECKING([if fdopen can be linked])
   1185   AC_LINK_IFELSE([
   1186     AC_LANG_FUNC_LINK_TRY([fdopen])
   1187   ],[
   1188     AC_MSG_RESULT([yes])
   1189     tst_links_fdopen="yes"
   1190   ],[
   1191     AC_MSG_RESULT([no])
   1192     tst_links_fdopen="no"
   1193   ])
   1194   #
   1195   if test "$tst_links_fdopen" = "yes"; then
   1196     AC_MSG_CHECKING([if fdopen is prototyped])
   1197     AC_EGREP_CPP([fdopen],[
   1198       $curl_includes_stdio
   1199     ],[
   1200       AC_MSG_RESULT([yes])
   1201       tst_proto_fdopen="yes"
   1202     ],[
   1203       AC_MSG_RESULT([no])
   1204       tst_proto_fdopen="no"
   1205     ])
   1206   fi
   1207   #
   1208   if test "$tst_proto_fdopen" = "yes"; then
   1209     AC_MSG_CHECKING([if fdopen is compilable])
   1210     AC_COMPILE_IFELSE([
   1211       AC_LANG_PROGRAM([[
   1212         $curl_includes_stdio
   1213       ]],[[
   1214         if(0 != fdopen(0, 0))
   1215           return 1;
   1216       ]])
   1217     ],[
   1218       AC_MSG_RESULT([yes])
   1219       tst_compi_fdopen="yes"
   1220     ],[
   1221       AC_MSG_RESULT([no])
   1222       tst_compi_fdopen="no"
   1223     ])
   1224   fi
   1225   #
   1226   if test "$tst_compi_fdopen" = "yes"; then
   1227     AC_MSG_CHECKING([if fdopen usage allowed])
   1228     if test "x$curl_disallow_fdopen" != "xyes"; then
   1229       AC_MSG_RESULT([yes])
   1230       tst_allow_fdopen="yes"
   1231     else
   1232       AC_MSG_RESULT([no])
   1233       tst_allow_fdopen="no"
   1234     fi
   1235   fi
   1236   #
   1237   AC_MSG_CHECKING([if fdopen might be used])
   1238   if test "$tst_links_fdopen" = "yes" &&
   1239      test "$tst_proto_fdopen" = "yes" &&
   1240      test "$tst_compi_fdopen" = "yes" &&
   1241      test "$tst_allow_fdopen" = "yes"; then
   1242     AC_MSG_RESULT([yes])
   1243     AC_DEFINE_UNQUOTED(HAVE_FDOPEN, 1,
   1244       [Define to 1 if you have the fdopen function.])
   1245     ac_cv_func_fdopen="yes"
   1246   else
   1247     AC_MSG_RESULT([no])
   1248     ac_cv_func_fdopen="no"
   1249   fi
   1250 ])
   1251 
   1252 
   1253 dnl CURL_CHECK_FUNC_FGETXATTR
   1254 dnl -------------------------------------------------
   1255 dnl Verify if fgetxattr is available, prototyped, and
   1256 dnl can be compiled. If all of these are true, and
   1257 dnl usage has not been previously disallowed with
   1258 dnl shell variable curl_disallow_fgetxattr, then
   1259 dnl HAVE_FGETXATTR will be defined.
   1260 
   1261 AC_DEFUN([CURL_CHECK_FUNC_FGETXATTR], [
   1262   AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
   1263   #
   1264   tst_links_fgetxattr="unknown"
   1265   tst_proto_fgetxattr="unknown"
   1266   tst_compi_fgetxattr="unknown"
   1267   tst_allow_fgetxattr="unknown"
   1268   tst_nargs_fgetxattr="unknown"
   1269   #
   1270   AC_MSG_CHECKING([if fgetxattr can be linked])
   1271   AC_LINK_IFELSE([
   1272     AC_LANG_FUNC_LINK_TRY([fgetxattr])
   1273   ],[
   1274     AC_MSG_RESULT([yes])
   1275     tst_links_fgetxattr="yes"
   1276   ],[
   1277     AC_MSG_RESULT([no])
   1278     tst_links_fgetxattr="no"
   1279   ])
   1280   #
   1281   if test "$tst_links_fgetxattr" = "yes"; then
   1282     AC_MSG_CHECKING([if fgetxattr is prototyped])
   1283     AC_EGREP_CPP([fgetxattr],[
   1284       $curl_includes_sys_xattr
   1285     ],[
   1286       AC_MSG_RESULT([yes])
   1287       tst_proto_fgetxattr="yes"
   1288     ],[
   1289       AC_MSG_RESULT([no])
   1290       tst_proto_fgetxattr="no"
   1291     ])
   1292   fi
   1293   #
   1294   if test "$tst_proto_fgetxattr" = "yes"; then
   1295     if test "$tst_nargs_fgetxattr" = "unknown"; then
   1296       AC_MSG_CHECKING([if fgetxattr takes 4 args.])
   1297       AC_COMPILE_IFELSE([
   1298         AC_LANG_PROGRAM([[
   1299           $curl_includes_sys_xattr
   1300         ]],[[
   1301           if(0 != fgetxattr(0, 0, 0, 0))
   1302             return 1;
   1303         ]])
   1304       ],[
   1305         AC_MSG_RESULT([yes])
   1306         tst_compi_fgetxattr="yes"
   1307         tst_nargs_fgetxattr="4"
   1308       ],[
   1309         AC_MSG_RESULT([no])
   1310         tst_compi_fgetxattr="no"
   1311       ])
   1312     fi
   1313     if test "$tst_nargs_fgetxattr" = "unknown"; then
   1314       AC_MSG_CHECKING([if fgetxattr takes 6 args.])
   1315       AC_COMPILE_IFELSE([
   1316         AC_LANG_PROGRAM([[
   1317           $curl_includes_sys_xattr
   1318         ]],[[
   1319           if(0 != fgetxattr(0, 0, 0, 0, 0, 0))
   1320             return 1;
   1321         ]])
   1322       ],[
   1323         AC_MSG_RESULT([yes])
   1324         tst_compi_fgetxattr="yes"
   1325         tst_nargs_fgetxattr="6"
   1326       ],[
   1327         AC_MSG_RESULT([no])
   1328         tst_compi_fgetxattr="no"
   1329       ])
   1330     fi
   1331     AC_MSG_CHECKING([if fgetxattr is compilable])
   1332     if test "$tst_compi_fgetxattr" = "yes"; then
   1333       AC_MSG_RESULT([yes])
   1334     else
   1335       AC_MSG_RESULT([no])
   1336     fi
   1337   fi
   1338   #
   1339   if test "$tst_compi_fgetxattr" = "yes"; then
   1340     AC_MSG_CHECKING([if fgetxattr usage allowed])
   1341     if test "x$curl_disallow_fgetxattr" != "xyes"; then
   1342       AC_MSG_RESULT([yes])
   1343       tst_allow_fgetxattr="yes"
   1344     else
   1345       AC_MSG_RESULT([no])
   1346       tst_allow_fgetxattr="no"
   1347     fi
   1348   fi
   1349   #
   1350   AC_MSG_CHECKING([if fgetxattr might be used])
   1351   if test "$tst_links_fgetxattr" = "yes" &&
   1352      test "$tst_proto_fgetxattr" = "yes" &&
   1353      test "$tst_compi_fgetxattr" = "yes" &&
   1354      test "$tst_allow_fgetxattr" = "yes"; then
   1355     AC_MSG_RESULT([yes])
   1356     AC_DEFINE_UNQUOTED(HAVE_FGETXATTR, 1,
   1357       [Define to 1 if you have the fgetxattr function.])
   1358     dnl AC_DEFINE_UNQUOTED(FGETXATTR_ARGS, $tst_nargs_fgetxattr,
   1359     dnl   [Specifies the number of arguments to fgetxattr])
   1360     #
   1361     if test "$tst_nargs_fgetxattr" -eq "4"; then
   1362       AC_DEFINE(HAVE_FGETXATTR_4, 1, [fgetxattr() takes 4 args])
   1363     elif test "$tst_nargs_fgetxattr" -eq "6"; then
   1364       AC_DEFINE(HAVE_FGETXATTR_6, 1, [fgetxattr() takes 6 args])
   1365     fi
   1366     #
   1367     ac_cv_func_fgetxattr="yes"
   1368   else
   1369     AC_MSG_RESULT([no])
   1370     ac_cv_func_fgetxattr="no"
   1371   fi
   1372 ])
   1373 
   1374 
   1375 dnl CURL_CHECK_FUNC_FLISTXATTR
   1376 dnl -------------------------------------------------
   1377 dnl Verify if flistxattr is available, prototyped, and
   1378 dnl can be compiled. If all of these are true, and
   1379 dnl usage has not been previously disallowed with
   1380 dnl shell variable curl_disallow_flistxattr, then
   1381 dnl HAVE_FLISTXATTR will be defined.
   1382 
   1383 AC_DEFUN([CURL_CHECK_FUNC_FLISTXATTR], [
   1384   AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
   1385   #
   1386   tst_links_flistxattr="unknown"
   1387   tst_proto_flistxattr="unknown"
   1388   tst_compi_flistxattr="unknown"
   1389   tst_allow_flistxattr="unknown"
   1390   tst_nargs_flistxattr="unknown"
   1391   #
   1392   AC_MSG_CHECKING([if flistxattr can be linked])
   1393   AC_LINK_IFELSE([
   1394     AC_LANG_FUNC_LINK_TRY([flistxattr])
   1395   ],[
   1396     AC_MSG_RESULT([yes])
   1397     tst_links_flistxattr="yes"
   1398   ],[
   1399     AC_MSG_RESULT([no])
   1400     tst_links_flistxattr="no"
   1401   ])
   1402   #
   1403   if test "$tst_links_flistxattr" = "yes"; then
   1404     AC_MSG_CHECKING([if flistxattr is prototyped])
   1405     AC_EGREP_CPP([flistxattr],[
   1406       $curl_includes_sys_xattr
   1407     ],[
   1408       AC_MSG_RESULT([yes])
   1409       tst_proto_flistxattr="yes"
   1410     ],[
   1411       AC_MSG_RESULT([no])
   1412       tst_proto_flistxattr="no"
   1413     ])
   1414   fi
   1415   #
   1416   if test "$tst_proto_flistxattr" = "yes"; then
   1417     if test "$tst_nargs_flistxattr" = "unknown"; then
   1418       AC_MSG_CHECKING([if flistxattr takes 3 args.])
   1419       AC_COMPILE_IFELSE([
   1420         AC_LANG_PROGRAM([[
   1421           $curl_includes_sys_xattr
   1422         ]],[[
   1423           if(0 != flistxattr(0, 0, 0))
   1424             return 1;
   1425         ]])
   1426       ],[
   1427         AC_MSG_RESULT([yes])
   1428         tst_compi_flistxattr="yes"
   1429         tst_nargs_flistxattr="3"
   1430       ],[
   1431         AC_MSG_RESULT([no])
   1432         tst_compi_flistxattr="no"
   1433       ])
   1434     fi
   1435     if test "$tst_nargs_flistxattr" = "unknown"; then
   1436       AC_MSG_CHECKING([if flistxattr takes 4 args.])
   1437       AC_COMPILE_IFELSE([
   1438         AC_LANG_PROGRAM([[
   1439           $curl_includes_sys_xattr
   1440         ]],[[
   1441           if(0 != flistxattr(0, 0, 0, 0))
   1442             return 1;
   1443         ]])
   1444       ],[
   1445         AC_MSG_RESULT([yes])
   1446         tst_compi_flistxattr="yes"
   1447         tst_nargs_flistxattr="4"
   1448       ],[
   1449         AC_MSG_RESULT([no])
   1450         tst_compi_flistxattr="no"
   1451       ])
   1452     fi
   1453     AC_MSG_CHECKING([if flistxattr is compilable])
   1454     if test "$tst_compi_flistxattr" = "yes"; then
   1455       AC_MSG_RESULT([yes])
   1456     else
   1457       AC_MSG_RESULT([no])
   1458     fi
   1459   fi
   1460   #
   1461   if test "$tst_compi_flistxattr" = "yes"; then
   1462     AC_MSG_CHECKING([if flistxattr usage allowed])
   1463     if test "x$curl_disallow_flistxattr" != "xyes"; then
   1464       AC_MSG_RESULT([yes])
   1465       tst_allow_flistxattr="yes"
   1466     else
   1467       AC_MSG_RESULT([no])
   1468       tst_allow_flistxattr="no"
   1469     fi
   1470   fi
   1471   #
   1472   AC_MSG_CHECKING([if flistxattr might be used])
   1473   if test "$tst_links_flistxattr" = "yes" &&
   1474      test "$tst_proto_flistxattr" = "yes" &&
   1475      test "$tst_compi_flistxattr" = "yes" &&
   1476      test "$tst_allow_flistxattr" = "yes"; then
   1477     AC_MSG_RESULT([yes])
   1478     AC_DEFINE_UNQUOTED(HAVE_FLISTXATTR, 1,
   1479       [Define to 1 if you have the flistxattr function.])
   1480     dnl AC_DEFINE_UNQUOTED(FLISTXATTR_ARGS, $tst_nargs_flistxattr,
   1481     dnl   [Specifies the number of arguments to flistxattr])
   1482     #
   1483     if test "$tst_nargs_flistxattr" -eq "3"; then
   1484       AC_DEFINE(HAVE_FLISTXATTR_3, 1, [flistxattr() takes 3 args])
   1485     elif test "$tst_nargs_flistxattr" -eq "4"; then
   1486       AC_DEFINE(HAVE_FLISTXATTR_4, 1, [flistxattr() takes 4 args])
   1487     fi
   1488     #
   1489     ac_cv_func_flistxattr="yes"
   1490   else
   1491     AC_MSG_RESULT([no])
   1492     ac_cv_func_flistxattr="no"
   1493   fi
   1494 ])
   1495 
   1496 
   1497 dnl CURL_CHECK_FUNC_FREEADDRINFO
   1498 dnl -------------------------------------------------
   1499 dnl Verify if freeaddrinfo is available, prototyped,
   1500 dnl and can be compiled. If all of these are true,
   1501 dnl and usage has not been previously disallowed with
   1502 dnl shell variable curl_disallow_freeaddrinfo, then
   1503 dnl HAVE_FREEADDRINFO will be defined.
   1504 
   1505 AC_DEFUN([CURL_CHECK_FUNC_FREEADDRINFO], [
   1506   AC_REQUIRE([CURL_INCLUDES_WS2TCPIP])dnl
   1507   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
   1508   AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
   1509   #
   1510   tst_links_freeaddrinfo="unknown"
   1511   tst_proto_freeaddrinfo="unknown"
   1512   tst_compi_freeaddrinfo="unknown"
   1513   tst_allow_freeaddrinfo="unknown"
   1514   #
   1515   AC_MSG_CHECKING([if freeaddrinfo can be linked])
   1516   AC_LINK_IFELSE([
   1517     AC_LANG_PROGRAM([[
   1518       $curl_includes_ws2tcpip
   1519       $curl_includes_sys_socket
   1520       $curl_includes_netdb
   1521     ]],[[
   1522       freeaddrinfo(0);
   1523     ]])
   1524   ],[
   1525     AC_MSG_RESULT([yes])
   1526     tst_links_freeaddrinfo="yes"
   1527   ],[
   1528     AC_MSG_RESULT([no])
   1529     tst_links_freeaddrinfo="no"
   1530   ])
   1531   #
   1532   if test "$tst_links_freeaddrinfo" = "yes"; then
   1533     AC_MSG_CHECKING([if freeaddrinfo is prototyped])
   1534     AC_EGREP_CPP([freeaddrinfo],[
   1535       $curl_includes_ws2tcpip
   1536       $curl_includes_sys_socket
   1537       $curl_includes_netdb
   1538     ],[
   1539       AC_MSG_RESULT([yes])
   1540       tst_proto_freeaddrinfo="yes"
   1541     ],[
   1542       AC_MSG_RESULT([no])
   1543       tst_proto_freeaddrinfo="no"
   1544     ])
   1545   fi
   1546   #
   1547   if test "$tst_proto_freeaddrinfo" = "yes"; then
   1548     AC_MSG_CHECKING([if freeaddrinfo is compilable])
   1549     AC_COMPILE_IFELSE([
   1550       AC_LANG_PROGRAM([[
   1551         $curl_includes_ws2tcpip
   1552         $curl_includes_sys_socket
   1553         $curl_includes_netdb
   1554       ]],[[
   1555         freeaddrinfo(0);
   1556       ]])
   1557     ],[
   1558       AC_MSG_RESULT([yes])
   1559       tst_compi_freeaddrinfo="yes"
   1560     ],[
   1561       AC_MSG_RESULT([no])
   1562       tst_compi_freeaddrinfo="no"
   1563     ])
   1564   fi
   1565   #
   1566   if test "$tst_compi_freeaddrinfo" = "yes"; then
   1567     AC_MSG_CHECKING([if freeaddrinfo usage allowed])
   1568     if test "x$curl_disallow_freeaddrinfo" != "xyes"; then
   1569       AC_MSG_RESULT([yes])
   1570       tst_allow_freeaddrinfo="yes"
   1571     else
   1572       AC_MSG_RESULT([no])
   1573       tst_allow_freeaddrinfo="no"
   1574     fi
   1575   fi
   1576   #
   1577   AC_MSG_CHECKING([if freeaddrinfo might be used])
   1578   if test "$tst_links_freeaddrinfo" = "yes" &&
   1579      test "$tst_proto_freeaddrinfo" = "yes" &&
   1580      test "$tst_compi_freeaddrinfo" = "yes" &&
   1581      test "$tst_allow_freeaddrinfo" = "yes"; then
   1582     AC_MSG_RESULT([yes])
   1583     AC_DEFINE_UNQUOTED(HAVE_FREEADDRINFO, 1,
   1584       [Define to 1 if you have the freeaddrinfo function.])
   1585     ac_cv_func_freeaddrinfo="yes"
   1586   else
   1587     AC_MSG_RESULT([no])
   1588     ac_cv_func_freeaddrinfo="no"
   1589   fi
   1590 ])
   1591 
   1592 
   1593 dnl CURL_CHECK_FUNC_FREEIFADDRS
   1594 dnl -------------------------------------------------
   1595 dnl Verify if freeifaddrs is available, prototyped, and
   1596 dnl can be compiled. If all of these are true, and
   1597 dnl usage has not been previously disallowed with
   1598 dnl shell variable curl_disallow_freeifaddrs, then
   1599 dnl HAVE_FREEIFADDRS will be defined.
   1600 
   1601 AC_DEFUN([CURL_CHECK_FUNC_FREEIFADDRS], [
   1602   AC_REQUIRE([CURL_INCLUDES_IFADDRS])dnl
   1603   #
   1604   tst_links_freeifaddrs="unknown"
   1605   tst_proto_freeifaddrs="unknown"
   1606   tst_compi_freeifaddrs="unknown"
   1607   tst_allow_freeifaddrs="unknown"
   1608   #
   1609   AC_MSG_CHECKING([if freeifaddrs can be linked])
   1610   AC_LINK_IFELSE([
   1611     AC_LANG_FUNC_LINK_TRY([freeifaddrs])
   1612   ],[
   1613     AC_MSG_RESULT([yes])
   1614     tst_links_freeifaddrs="yes"
   1615   ],[
   1616     AC_MSG_RESULT([no])
   1617     tst_links_freeifaddrs="no"
   1618   ])
   1619   #
   1620   if test "$tst_links_freeifaddrs" = "yes"; then
   1621     AC_MSG_CHECKING([if freeifaddrs is prototyped])
   1622     AC_EGREP_CPP([freeifaddrs],[
   1623       $curl_includes_ifaddrs
   1624     ],[
   1625       AC_MSG_RESULT([yes])
   1626       tst_proto_freeifaddrs="yes"
   1627     ],[
   1628       AC_MSG_RESULT([no])
   1629       tst_proto_freeifaddrs="no"
   1630     ])
   1631   fi
   1632   #
   1633   if test "$tst_proto_freeifaddrs" = "yes"; then
   1634     AC_MSG_CHECKING([if freeifaddrs is compilable])
   1635     AC_COMPILE_IFELSE([
   1636       AC_LANG_PROGRAM([[
   1637         $curl_includes_ifaddrs
   1638       ]],[[
   1639         freeifaddrs(0);
   1640       ]])
   1641     ],[
   1642       AC_MSG_RESULT([yes])
   1643       tst_compi_freeifaddrs="yes"
   1644     ],[
   1645       AC_MSG_RESULT([no])
   1646       tst_compi_freeifaddrs="no"
   1647     ])
   1648   fi
   1649   #
   1650   if test "$tst_compi_freeifaddrs" = "yes"; then
   1651     AC_MSG_CHECKING([if freeifaddrs usage allowed])
   1652     if test "x$curl_disallow_freeifaddrs" != "xyes"; then
   1653       AC_MSG_RESULT([yes])
   1654       tst_allow_freeifaddrs="yes"
   1655     else
   1656       AC_MSG_RESULT([no])
   1657       tst_allow_freeifaddrs="no"
   1658     fi
   1659   fi
   1660   #
   1661   AC_MSG_CHECKING([if freeifaddrs might be used])
   1662   if test "$tst_links_freeifaddrs" = "yes" &&
   1663      test "$tst_proto_freeifaddrs" = "yes" &&
   1664      test "$tst_compi_freeifaddrs" = "yes" &&
   1665      test "$tst_allow_freeifaddrs" = "yes"; then
   1666     AC_MSG_RESULT([yes])
   1667     AC_DEFINE_UNQUOTED(HAVE_FREEIFADDRS, 1,
   1668       [Define to 1 if you have the freeifaddrs function.])
   1669     ac_cv_func_freeifaddrs="yes"
   1670   else
   1671     AC_MSG_RESULT([no])
   1672     ac_cv_func_freeifaddrs="no"
   1673   fi
   1674 ])
   1675 
   1676 
   1677 dnl CURL_CHECK_FUNC_FREMOVEXATTR
   1678 dnl -------------------------------------------------
   1679 dnl Verify if fremovexattr is available, prototyped, and
   1680 dnl can be compiled. If all of these are true, and
   1681 dnl usage has not been previously disallowed with
   1682 dnl shell variable curl_disallow_fremovexattr, then
   1683 dnl HAVE_FREMOVEXATTR will be defined.
   1684 
   1685 AC_DEFUN([CURL_CHECK_FUNC_FREMOVEXATTR], [
   1686   AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
   1687   #
   1688   tst_links_fremovexattr="unknown"
   1689   tst_proto_fremovexattr="unknown"
   1690   tst_compi_fremovexattr="unknown"
   1691   tst_allow_fremovexattr="unknown"
   1692   tst_nargs_fremovexattr="unknown"
   1693   #
   1694   AC_MSG_CHECKING([if fremovexattr can be linked])
   1695   AC_LINK_IFELSE([
   1696     AC_LANG_FUNC_LINK_TRY([fremovexattr])
   1697   ],[
   1698     AC_MSG_RESULT([yes])
   1699     tst_links_fremovexattr="yes"
   1700   ],[
   1701     AC_MSG_RESULT([no])
   1702     tst_links_fremovexattr="no"
   1703   ])
   1704   #
   1705   if test "$tst_links_fremovexattr" = "yes"; then
   1706     AC_MSG_CHECKING([if fremovexattr is prototyped])
   1707     AC_EGREP_CPP([fremovexattr],[
   1708       $curl_includes_sys_xattr
   1709     ],[
   1710       AC_MSG_RESULT([yes])
   1711       tst_proto_fremovexattr="yes"
   1712     ],[
   1713       AC_MSG_RESULT([no])
   1714       tst_proto_fremovexattr="no"
   1715     ])
   1716   fi
   1717   #
   1718   if test "$tst_proto_fremovexattr" = "yes"; then
   1719     if test "$tst_nargs_fremovexattr" = "unknown"; then
   1720       AC_MSG_CHECKING([if fremovexattr takes 2 args.])
   1721       AC_COMPILE_IFELSE([
   1722         AC_LANG_PROGRAM([[
   1723           $curl_includes_sys_xattr
   1724         ]],[[
   1725           if(0 != fremovexattr(0, 0))
   1726             return 1;
   1727         ]])
   1728       ],[
   1729         AC_MSG_RESULT([yes])
   1730         tst_compi_fremovexattr="yes"
   1731         tst_nargs_fremovexattr="2"
   1732       ],[
   1733         AC_MSG_RESULT([no])
   1734         tst_compi_fremovexattr="no"
   1735       ])
   1736     fi
   1737     if test "$tst_nargs_fremovexattr" = "unknown"; then
   1738       AC_MSG_CHECKING([if fremovexattr takes 3 args.])
   1739       AC_COMPILE_IFELSE([
   1740         AC_LANG_PROGRAM([[
   1741           $curl_includes_sys_xattr
   1742         ]],[[
   1743           if(0 != fremovexattr(0, 0, 0))
   1744             return 1;
   1745         ]])
   1746       ],[
   1747         AC_MSG_RESULT([yes])
   1748         tst_compi_fremovexattr="yes"
   1749         tst_nargs_fremovexattr="3"
   1750       ],[
   1751         AC_MSG_RESULT([no])
   1752         tst_compi_fremovexattr="no"
   1753       ])
   1754     fi
   1755     AC_MSG_CHECKING([if fremovexattr is compilable])
   1756     if test "$tst_compi_fremovexattr" = "yes"; then
   1757       AC_MSG_RESULT([yes])
   1758     else
   1759       AC_MSG_RESULT([no])
   1760     fi
   1761   fi
   1762   #
   1763   if test "$tst_compi_fremovexattr" = "yes"; then
   1764     AC_MSG_CHECKING([if fremovexattr usage allowed])
   1765     if test "x$curl_disallow_fremovexattr" != "xyes"; then
   1766       AC_MSG_RESULT([yes])
   1767       tst_allow_fremovexattr="yes"
   1768     else
   1769       AC_MSG_RESULT([no])
   1770       tst_allow_fremovexattr="no"
   1771     fi
   1772   fi
   1773   #
   1774   AC_MSG_CHECKING([if fremovexattr might be used])
   1775   if test "$tst_links_fremovexattr" = "yes" &&
   1776      test "$tst_proto_fremovexattr" = "yes" &&
   1777      test "$tst_compi_fremovexattr" = "yes" &&
   1778      test "$tst_allow_fremovexattr" = "yes"; then
   1779     AC_MSG_RESULT([yes])
   1780     AC_DEFINE_UNQUOTED(HAVE_FREMOVEXATTR, 1,
   1781       [Define to 1 if you have the fremovexattr function.])
   1782     dnl AC_DEFINE_UNQUOTED(FREMOVEXATTR_ARGS, $tst_nargs_fremovexattr,
   1783     dnl   [Specifies the number of arguments to fremovexattr])
   1784     #
   1785     if test "$tst_nargs_fremovexattr" -eq "2"; then
   1786       AC_DEFINE(HAVE_FREMOVEXATTR_2, 1, [fremovexattr() takes 2 args])
   1787     elif test "$tst_nargs_fremovexattr" -eq "3"; then
   1788       AC_DEFINE(HAVE_FREMOVEXATTR_3, 1, [fremovexattr() takes 3 args])
   1789     fi
   1790     #
   1791     ac_cv_func_fremovexattr="yes"
   1792   else
   1793     AC_MSG_RESULT([no])
   1794     ac_cv_func_fremovexattr="no"
   1795   fi
   1796 ])
   1797 
   1798 
   1799 dnl CURL_CHECK_FUNC_FSETXATTR
   1800 dnl -------------------------------------------------
   1801 dnl Verify if fsetxattr is available, prototyped, and
   1802 dnl can be compiled. If all of these are true, and
   1803 dnl usage has not been previously disallowed with
   1804 dnl shell variable curl_disallow_fsetxattr, then
   1805 dnl HAVE_FSETXATTR will be defined.
   1806 
   1807 AC_DEFUN([CURL_CHECK_FUNC_FSETXATTR], [
   1808   AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
   1809   #
   1810   tst_links_fsetxattr="unknown"
   1811   tst_proto_fsetxattr="unknown"
   1812   tst_compi_fsetxattr="unknown"
   1813   tst_allow_fsetxattr="unknown"
   1814   tst_nargs_fsetxattr="unknown"
   1815   #
   1816   AC_MSG_CHECKING([if fsetxattr can be linked])
   1817   AC_LINK_IFELSE([
   1818     AC_LANG_FUNC_LINK_TRY([fsetxattr])
   1819   ],[
   1820     AC_MSG_RESULT([yes])
   1821     tst_links_fsetxattr="yes"
   1822   ],[
   1823     AC_MSG_RESULT([no])
   1824     tst_links_fsetxattr="no"
   1825   ])
   1826   #
   1827   if test "$tst_links_fsetxattr" = "yes"; then
   1828     AC_MSG_CHECKING([if fsetxattr is prototyped])
   1829     AC_EGREP_CPP([fsetxattr],[
   1830       $curl_includes_sys_xattr
   1831     ],[
   1832       AC_MSG_RESULT([yes])
   1833       tst_proto_fsetxattr="yes"
   1834     ],[
   1835       AC_MSG_RESULT([no])
   1836       tst_proto_fsetxattr="no"
   1837     ])
   1838   fi
   1839   #
   1840   if test "$tst_proto_fsetxattr" = "yes"; then
   1841     if test "$tst_nargs_fsetxattr" = "unknown"; then
   1842       AC_MSG_CHECKING([if fsetxattr takes 5 args.])
   1843       AC_COMPILE_IFELSE([
   1844         AC_LANG_PROGRAM([[
   1845           $curl_includes_sys_xattr
   1846         ]],[[
   1847           if(0 != fsetxattr(0, 0, 0, 0, 0))
   1848             return 1;
   1849         ]])
   1850       ],[
   1851         AC_MSG_RESULT([yes])
   1852         tst_compi_fsetxattr="yes"
   1853         tst_nargs_fsetxattr="5"
   1854       ],[
   1855         AC_MSG_RESULT([no])
   1856         tst_compi_fsetxattr="no"
   1857       ])
   1858     fi
   1859     if test "$tst_nargs_fsetxattr" = "unknown"; then
   1860       AC_MSG_CHECKING([if fsetxattr takes 6 args.])
   1861       AC_COMPILE_IFELSE([
   1862         AC_LANG_PROGRAM([[
   1863           $curl_includes_sys_xattr
   1864         ]],[[
   1865           if(0 != fsetxattr(0, 0, 0, 0, 0, 0))
   1866             return 1;
   1867         ]])
   1868       ],[
   1869         AC_MSG_RESULT([yes])
   1870         tst_compi_fsetxattr="yes"
   1871         tst_nargs_fsetxattr="6"
   1872       ],[
   1873         AC_MSG_RESULT([no])
   1874         tst_compi_fsetxattr="no"
   1875       ])
   1876     fi
   1877     AC_MSG_CHECKING([if fsetxattr is compilable])
   1878     if test "$tst_compi_fsetxattr" = "yes"; then
   1879       AC_MSG_RESULT([yes])
   1880     else
   1881       AC_MSG_RESULT([no])
   1882     fi
   1883   fi
   1884   #
   1885   if test "$tst_compi_fsetxattr" = "yes"; then
   1886     AC_MSG_CHECKING([if fsetxattr usage allowed])
   1887     if test "x$curl_disallow_fsetxattr" != "xyes"; then
   1888       AC_MSG_RESULT([yes])
   1889       tst_allow_fsetxattr="yes"
   1890     else
   1891       AC_MSG_RESULT([no])
   1892       tst_allow_fsetxattr="no"
   1893     fi
   1894   fi
   1895   #
   1896   AC_MSG_CHECKING([if fsetxattr might be used])
   1897   if test "$tst_links_fsetxattr" = "yes" &&
   1898      test "$tst_proto_fsetxattr" = "yes" &&
   1899      test "$tst_compi_fsetxattr" = "yes" &&
   1900      test "$tst_allow_fsetxattr" = "yes"; then
   1901     AC_MSG_RESULT([yes])
   1902     AC_DEFINE_UNQUOTED(HAVE_FSETXATTR, 1,
   1903       [Define to 1 if you have the fsetxattr function.])
   1904     dnl AC_DEFINE_UNQUOTED(FSETXATTR_ARGS, $tst_nargs_fsetxattr,
   1905     dnl   [Specifies the number of arguments to fsetxattr])
   1906     #
   1907     if test "$tst_nargs_fsetxattr" -eq "5"; then
   1908       AC_DEFINE(HAVE_FSETXATTR_5, 1, [fsetxattr() takes 5 args])
   1909     elif test "$tst_nargs_fsetxattr" -eq "6"; then
   1910       AC_DEFINE(HAVE_FSETXATTR_6, 1, [fsetxattr() takes 6 args])
   1911     fi
   1912     #
   1913     ac_cv_func_fsetxattr="yes"
   1914   else
   1915     AC_MSG_RESULT([no])
   1916     ac_cv_func_fsetxattr="no"
   1917   fi
   1918 ])
   1919 
   1920 
   1921 dnl CURL_CHECK_FUNC_FTRUNCATE
   1922 dnl -------------------------------------------------
   1923 dnl Verify if ftruncate is available, prototyped, and
   1924 dnl can be compiled. If all of these are true, and
   1925 dnl usage has not been previously disallowed with
   1926 dnl shell variable curl_disallow_ftruncate, then
   1927 dnl HAVE_FTRUNCATE will be defined.
   1928 
   1929 AC_DEFUN([CURL_CHECK_FUNC_FTRUNCATE], [
   1930   AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
   1931   #
   1932   tst_links_ftruncate="unknown"
   1933   tst_proto_ftruncate="unknown"
   1934   tst_compi_ftruncate="unknown"
   1935   tst_allow_ftruncate="unknown"
   1936   #
   1937   AC_MSG_CHECKING([if ftruncate can be linked])
   1938   AC_LINK_IFELSE([
   1939     AC_LANG_FUNC_LINK_TRY([ftruncate])
   1940   ],[
   1941     AC_MSG_RESULT([yes])
   1942     tst_links_ftruncate="yes"
   1943   ],[
   1944     AC_MSG_RESULT([no])
   1945     tst_links_ftruncate="no"
   1946   ])
   1947   #
   1948   if test "$tst_links_ftruncate" = "yes"; then
   1949     AC_MSG_CHECKING([if ftruncate is prototyped])
   1950     AC_EGREP_CPP([ftruncate],[
   1951       $curl_includes_unistd
   1952     ],[
   1953       AC_MSG_RESULT([yes])
   1954       tst_proto_ftruncate="yes"
   1955     ],[
   1956       AC_MSG_RESULT([no])
   1957       tst_proto_ftruncate="no"
   1958     ])
   1959   fi
   1960   #
   1961   if test "$tst_proto_ftruncate" = "yes"; then
   1962     AC_MSG_CHECKING([if ftruncate is compilable])
   1963     AC_COMPILE_IFELSE([
   1964       AC_LANG_PROGRAM([[
   1965         $curl_includes_unistd
   1966       ]],[[
   1967         if(0 != ftruncate(0, 0))
   1968           return 1;
   1969       ]])
   1970     ],[
   1971       AC_MSG_RESULT([yes])
   1972       tst_compi_ftruncate="yes"
   1973     ],[
   1974       AC_MSG_RESULT([no])
   1975       tst_compi_ftruncate="no"
   1976     ])
   1977   fi
   1978   #
   1979   if test "$tst_compi_ftruncate" = "yes"; then
   1980     AC_MSG_CHECKING([if ftruncate usage allowed])
   1981     if test "x$curl_disallow_ftruncate" != "xyes"; then
   1982       AC_MSG_RESULT([yes])
   1983       tst_allow_ftruncate="yes"
   1984     else
   1985       AC_MSG_RESULT([no])
   1986       tst_allow_ftruncate="no"
   1987     fi
   1988   fi
   1989   #
   1990   AC_MSG_CHECKING([if ftruncate might be used])
   1991   if test "$tst_links_ftruncate" = "yes" &&
   1992      test "$tst_proto_ftruncate" = "yes" &&
   1993      test "$tst_compi_ftruncate" = "yes" &&
   1994      test "$tst_allow_ftruncate" = "yes"; then
   1995     AC_MSG_RESULT([yes])
   1996     AC_DEFINE_UNQUOTED(HAVE_FTRUNCATE, 1,
   1997       [Define to 1 if you have the ftruncate function.])
   1998     ac_cv_func_ftruncate="yes"
   1999   else
   2000     AC_MSG_RESULT([no])
   2001     ac_cv_func_ftruncate="no"
   2002   fi
   2003 ])
   2004 
   2005 
   2006 dnl CURL_CHECK_FUNC_GETADDRINFO
   2007 dnl -------------------------------------------------
   2008 dnl Verify if getaddrinfo is available, prototyped, can
   2009 dnl be compiled and seems to work. If all of these are
   2010 dnl true, and usage has not been previously disallowed
   2011 dnl with shell variable curl_disallow_getaddrinfo, then
   2012 dnl HAVE_GETADDRINFO will be defined. Additionally when
   2013 dnl HAVE_GETADDRINFO gets defined this will also attempt
   2014 dnl to find out if getaddrinfo happens to be threadsafe,
   2015 dnl defining HAVE_GETADDRINFO_THREADSAFE when true.
   2016 
   2017 AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [
   2018   AC_REQUIRE([CURL_INCLUDES_WS2TCPIP])dnl
   2019   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   2020   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   2021   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
   2022   AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
   2023   AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl
   2024   #
   2025   tst_links_getaddrinfo="unknown"
   2026   tst_proto_getaddrinfo="unknown"
   2027   tst_compi_getaddrinfo="unknown"
   2028   tst_works_getaddrinfo="unknown"
   2029   tst_allow_getaddrinfo="unknown"
   2030   tst_tsafe_getaddrinfo="unknown"
   2031   #
   2032   AC_MSG_CHECKING([if getaddrinfo can be linked])
   2033   AC_LINK_IFELSE([
   2034     AC_LANG_PROGRAM([[
   2035       $curl_includes_ws2tcpip
   2036       $curl_includes_sys_socket
   2037       $curl_includes_netdb
   2038     ]],[[
   2039       if(0 != getaddrinfo(0, 0, 0, 0))
   2040         return 1;
   2041     ]])
   2042   ],[
   2043     AC_MSG_RESULT([yes])
   2044     tst_links_getaddrinfo="yes"
   2045   ],[
   2046     AC_MSG_RESULT([no])
   2047     tst_links_getaddrinfo="no"
   2048   ])
   2049   #
   2050   if test "$tst_links_getaddrinfo" = "yes"; then
   2051     AC_MSG_CHECKING([if getaddrinfo is prototyped])
   2052     AC_EGREP_CPP([getaddrinfo],[
   2053       $curl_includes_ws2tcpip
   2054       $curl_includes_sys_socket
   2055       $curl_includes_netdb
   2056     ],[
   2057       AC_MSG_RESULT([yes])
   2058       tst_proto_getaddrinfo="yes"
   2059     ],[
   2060       AC_MSG_RESULT([no])
   2061       tst_proto_getaddrinfo="no"
   2062     ])
   2063   fi
   2064   #
   2065   if test "$tst_proto_getaddrinfo" = "yes"; then
   2066     AC_MSG_CHECKING([if getaddrinfo is compilable])
   2067     AC_COMPILE_IFELSE([
   2068       AC_LANG_PROGRAM([[
   2069         $curl_includes_ws2tcpip
   2070         $curl_includes_sys_socket
   2071         $curl_includes_netdb
   2072       ]],[[
   2073         if(0 != getaddrinfo(0, 0, 0, 0))
   2074           return 1;
   2075       ]])
   2076     ],[
   2077       AC_MSG_RESULT([yes])
   2078       tst_compi_getaddrinfo="yes"
   2079     ],[
   2080       AC_MSG_RESULT([no])
   2081       tst_compi_getaddrinfo="no"
   2082     ])
   2083   fi
   2084   #
   2085   dnl only do runtime verification when not cross-compiling
   2086   if test "x$cross_compiling" != "xyes" &&
   2087     test "$tst_compi_getaddrinfo" = "yes"; then
   2088     AC_MSG_CHECKING([if getaddrinfo seems to work])
   2089     AC_RUN_IFELSE([
   2090       AC_LANG_PROGRAM([[
   2091         $curl_includes_ws2tcpip
   2092         $curl_includes_stdlib
   2093         $curl_includes_string
   2094         $curl_includes_sys_socket
   2095         $curl_includes_netdb
   2096       ]],[[
   2097         struct addrinfo hints;
   2098         struct addrinfo *ai = 0;
   2099         int error;
   2100 
   2101         memset(&hints, 0, sizeof(hints));
   2102         hints.ai_flags = AI_NUMERICHOST;
   2103         hints.ai_family = AF_UNSPEC;
   2104         hints.ai_socktype = SOCK_STREAM;
   2105         error = getaddrinfo("127.0.0.1", 0, &hints, &ai);
   2106         if(error || !ai)
   2107           exit(1); /* fail */
   2108         else
   2109           exit(0);
   2110       ]])
   2111     ],[
   2112       AC_MSG_RESULT([yes])
   2113       tst_works_getaddrinfo="yes"
   2114     ],[
   2115       AC_MSG_RESULT([no])
   2116       tst_works_getaddrinfo="no"
   2117     ])
   2118   fi
   2119   #
   2120   if test "$tst_compi_getaddrinfo" = "yes" &&
   2121     test "$tst_works_getaddrinfo" != "no"; then
   2122     AC_MSG_CHECKING([if getaddrinfo usage allowed])
   2123     if test "x$curl_disallow_getaddrinfo" != "xyes"; then
   2124       AC_MSG_RESULT([yes])
   2125       tst_allow_getaddrinfo="yes"
   2126     else
   2127       AC_MSG_RESULT([no])
   2128       tst_allow_getaddrinfo="no"
   2129     fi
   2130   fi
   2131   #
   2132   AC_MSG_CHECKING([if getaddrinfo might be used])
   2133   if test "$tst_links_getaddrinfo" = "yes" &&
   2134      test "$tst_proto_getaddrinfo" = "yes" &&
   2135      test "$tst_compi_getaddrinfo" = "yes" &&
   2136      test "$tst_allow_getaddrinfo" = "yes" &&
   2137      test "$tst_works_getaddrinfo" != "no"; then
   2138     AC_MSG_RESULT([yes])
   2139     AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO, 1,
   2140       [Define to 1 if you have a working getaddrinfo function.])
   2141     ac_cv_func_getaddrinfo="yes"
   2142   else
   2143     AC_MSG_RESULT([no])
   2144     ac_cv_func_getaddrinfo="no"
   2145     ac_cv_func_getaddrinfo_threadsafe="no"
   2146   fi
   2147   #
   2148   if test "$ac_cv_func_getaddrinfo" = "yes"; then
   2149     AC_MSG_CHECKING([if getaddrinfo is threadsafe])
   2150     case $host_os in
   2151       aix[[1234]].* | aix5.[[01]].*)
   2152         dnl aix 5.1 and older
   2153         tst_tsafe_getaddrinfo="no"
   2154         ;;
   2155       aix*)
   2156         dnl aix 5.2 and newer
   2157         tst_tsafe_getaddrinfo="yes"
   2158         ;;
   2159       darwin[[12345]].*)
   2160         dnl darwin 5.0 and mac os x 10.1.X and older
   2161         tst_tsafe_getaddrinfo="no"
   2162         ;;
   2163       darwin*)
   2164         dnl darwin 6.0 and mac os x 10.2.X and newer
   2165         tst_tsafe_getaddrinfo="yes"
   2166         ;;
   2167       freebsd[[1234]].* | freebsd5.[[1234]]*)
   2168         dnl freebsd 5.4 and older
   2169         tst_tsafe_getaddrinfo="no"
   2170         ;;
   2171       freebsd*)
   2172         dnl freebsd 5.5 and newer
   2173         tst_tsafe_getaddrinfo="yes"
   2174         ;;
   2175       hpux[[123456789]].* | hpux10.* | hpux11.0* | hpux11.10*)
   2176         dnl hpux 11.10 and older
   2177         tst_tsafe_getaddrinfo="no"
   2178         ;;
   2179       hpux*)
   2180         dnl hpux 11.11 and newer
   2181         tst_tsafe_getaddrinfo="yes"
   2182         ;;
   2183       netbsd[[123]].*)
   2184         dnl netbsd 3.X and older
   2185         tst_tsafe_getaddrinfo="no"
   2186         ;;
   2187       netbsd*)
   2188         dnl netbsd 4.X and newer
   2189         tst_tsafe_getaddrinfo="yes"
   2190         ;;
   2191       *bsd*)
   2192         dnl All other bsd's
   2193         tst_tsafe_getaddrinfo="no"
   2194         ;;
   2195       solaris2*)
   2196         dnl solaris which have it
   2197         tst_tsafe_getaddrinfo="yes"
   2198         ;;
   2199     esac
   2200     if test "$tst_tsafe_getaddrinfo" = "unknown" &&
   2201        test "$ac_cv_native_windows" = "yes"; then
   2202       tst_tsafe_getaddrinfo="yes"
   2203     fi
   2204     if test "$tst_tsafe_getaddrinfo" = "unknown"; then
   2205       CURL_CHECK_DEF_CC([h_errno], [
   2206         $curl_includes_sys_socket
   2207         $curl_includes_netdb
   2208         ], [silent])
   2209       if test "$curl_cv_have_def_h_errno" = "yes"; then
   2210         tst_h_errno_macro="yes"
   2211       else
   2212         tst_h_errno_macro="no"
   2213       fi
   2214       AC_COMPILE_IFELSE([
   2215         AC_LANG_PROGRAM([[
   2216           $curl_includes_sys_socket
   2217           $curl_includes_netdb
   2218         ]],[[
   2219           h_errno = 2;
   2220           if(0 != h_errno)
   2221             return 1;
   2222         ]])
   2223       ],[
   2224         tst_h_errno_modifiable_lvalue="yes"
   2225       ],[
   2226         tst_h_errno_modifiable_lvalue="no"
   2227       ])
   2228       AC_COMPILE_IFELSE([
   2229         AC_LANG_PROGRAM([[
   2230         ]],[[
   2231 #if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
   2232           return 0;
   2233 #elif defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 700)
   2234           return 0;
   2235 #else
   2236           force compilation error
   2237 #endif
   2238         ]])
   2239       ],[
   2240         tst_h_errno_sbs_issue_7="yes"
   2241       ],[
   2242         tst_h_errno_sbs_issue_7="no"
   2243       ])
   2244       if test "$tst_h_errno_macro" = "no" &&
   2245          test "$tst_h_errno_modifiable_lvalue" = "no" &&
   2246          test "$tst_h_errno_sbs_issue_7" = "no"; then
   2247         tst_tsafe_getaddrinfo="no"
   2248       else
   2249         tst_tsafe_getaddrinfo="yes"
   2250       fi
   2251     fi
   2252     AC_MSG_RESULT([$tst_tsafe_getaddrinfo])
   2253     if test "$tst_tsafe_getaddrinfo" = "yes"; then
   2254       AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_THREADSAFE, 1,
   2255         [Define to 1 if the getaddrinfo function is threadsafe.])
   2256       ac_cv_func_getaddrinfo_threadsafe="yes"
   2257     else
   2258       ac_cv_func_getaddrinfo_threadsafe="no"
   2259     fi
   2260   fi
   2261 ])
   2262 
   2263 
   2264 dnl CURL_CHECK_FUNC_GETHOSTBYADDR
   2265 dnl -------------------------------------------------
   2266 dnl Verify if gethostbyaddr is available, prototyped,
   2267 dnl and can be compiled. If all of these are true,
   2268 dnl and usage has not been previously disallowed with
   2269 dnl shell variable curl_disallow_gethostbyaddr, then
   2270 dnl HAVE_GETHOSTBYADDR will be defined.
   2271 
   2272 AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYADDR], [
   2273   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   2274   AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
   2275   #
   2276   tst_links_gethostbyaddr="unknown"
   2277   tst_proto_gethostbyaddr="unknown"
   2278   tst_compi_gethostbyaddr="unknown"
   2279   tst_allow_gethostbyaddr="unknown"
   2280   #
   2281   AC_MSG_CHECKING([if gethostbyaddr can be linked])
   2282   AC_LINK_IFELSE([
   2283     AC_LANG_PROGRAM([[
   2284       $curl_includes_winsock2
   2285       $curl_includes_netdb
   2286     ]],[[
   2287       if(0 != gethostbyaddr(0, 0, 0))
   2288         return 1;
   2289     ]])
   2290   ],[
   2291     AC_MSG_RESULT([yes])
   2292     tst_links_gethostbyaddr="yes"
   2293   ],[
   2294     AC_MSG_RESULT([no])
   2295     tst_links_gethostbyaddr="no"
   2296   ])
   2297   #
   2298   if test "$tst_links_gethostbyaddr" = "yes"; then
   2299     AC_MSG_CHECKING([if gethostbyaddr is prototyped])
   2300     AC_EGREP_CPP([gethostbyaddr],[
   2301       $curl_includes_winsock2
   2302       $curl_includes_netdb
   2303     ],[
   2304       AC_MSG_RESULT([yes])
   2305       tst_proto_gethostbyaddr="yes"
   2306     ],[
   2307       AC_MSG_RESULT([no])
   2308       tst_proto_gethostbyaddr="no"
   2309     ])
   2310   fi
   2311   #
   2312   if test "$tst_proto_gethostbyaddr" = "yes"; then
   2313     AC_MSG_CHECKING([if gethostbyaddr is compilable])
   2314     AC_COMPILE_IFELSE([
   2315       AC_LANG_PROGRAM([[
   2316         $curl_includes_winsock2
   2317         $curl_includes_netdb
   2318       ]],[[
   2319         if(0 != gethostbyaddr(0, 0, 0))
   2320           return 1;
   2321       ]])
   2322     ],[
   2323       AC_MSG_RESULT([yes])
   2324       tst_compi_gethostbyaddr="yes"
   2325     ],[
   2326       AC_MSG_RESULT([no])
   2327       tst_compi_gethostbyaddr="no"
   2328     ])
   2329   fi
   2330   #
   2331   if test "$tst_compi_gethostbyaddr" = "yes"; then
   2332     AC_MSG_CHECKING([if gethostbyaddr usage allowed])
   2333     if test "x$curl_disallow_gethostbyaddr" != "xyes"; then
   2334       AC_MSG_RESULT([yes])
   2335       tst_allow_gethostbyaddr="yes"
   2336     else
   2337       AC_MSG_RESULT([no])
   2338       tst_allow_gethostbyaddr="no"
   2339     fi
   2340   fi
   2341   #
   2342   AC_MSG_CHECKING([if gethostbyaddr might be used])
   2343   if test "$tst_links_gethostbyaddr" = "yes" &&
   2344      test "$tst_proto_gethostbyaddr" = "yes" &&
   2345      test "$tst_compi_gethostbyaddr" = "yes" &&
   2346      test "$tst_allow_gethostbyaddr" = "yes"; then
   2347     AC_MSG_RESULT([yes])
   2348     AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYADDR, 1,
   2349       [Define to 1 if you have the gethostbyaddr function.])
   2350     ac_cv_func_gethostbyaddr="yes"
   2351   else
   2352     AC_MSG_RESULT([no])
   2353     ac_cv_func_gethostbyaddr="no"
   2354   fi
   2355 ])
   2356 
   2357 dnl CURL_CHECK_FUNC_GAI_STRERROR
   2358 dnl -------------------------------------------------
   2359 dnl Verify if gai_strerror is available, prototyped,
   2360 dnl and can be compiled. If all of these are true,
   2361 dnl and usage has not been previously disallowed with
   2362 dnl shell variable curl_disallow_gai_strerror, then
   2363 dnl HAVE_GAI_STRERROR will be defined.
   2364 
   2365 AC_DEFUN([CURL_CHECK_FUNC_GAI_STRERROR], [
   2366   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   2367   AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
   2368   #
   2369   tst_links_gai_strerror="unknown"
   2370   tst_proto_gai_strerror="unknown"
   2371   tst_compi_gai_strerror="unknown"
   2372   tst_allow_gai_strerror="unknown"
   2373   #
   2374   AC_MSG_CHECKING([if gai_strerror can be linked])
   2375   AC_LINK_IFELSE([
   2376     AC_LANG_PROGRAM([[
   2377       $curl_includes_winsock2
   2378       $curl_includes_netdb
   2379     ]],[[
   2380       if(0 != gai_strerror(0))
   2381         return 1;
   2382     ]])
   2383   ],[
   2384     AC_MSG_RESULT([yes])
   2385     tst_links_gai_strerror="yes"
   2386   ],[
   2387     AC_MSG_RESULT([no])
   2388     tst_links_gai_strerror="no"
   2389   ])
   2390   #
   2391   if test "$tst_links_gai_strerror" = "yes"; then
   2392     AC_MSG_CHECKING([if gai_strerror is prototyped])
   2393     AC_EGREP_CPP([gai_strerror],[
   2394       $curl_includes_winsock2
   2395       $curl_includes_netdb
   2396     ],[
   2397       AC_MSG_RESULT([yes])
   2398       tst_proto_gai_strerror="yes"
   2399     ],[
   2400       AC_MSG_RESULT([no])
   2401       tst_proto_gai_strerror="no"
   2402     ])
   2403   fi
   2404   #
   2405   if test "$tst_proto_gai_strerror" = "yes"; then
   2406     AC_MSG_CHECKING([if gai_strerror is compilable])
   2407     AC_COMPILE_IFELSE([
   2408       AC_LANG_PROGRAM([[
   2409         $curl_includes_winsock2
   2410         $curl_includes_netdb
   2411       ]],[[
   2412         if(0 != gai_strerror(0))
   2413           return 1;
   2414       ]])
   2415     ],[
   2416       AC_MSG_RESULT([yes])
   2417       tst_compi_gai_strerror="yes"
   2418     ],[
   2419       AC_MSG_RESULT([no])
   2420       tst_compi_gai_strerror="no"
   2421     ])
   2422   fi
   2423   #
   2424   if test "$tst_compi_gai_strerror" = "yes"; then
   2425     AC_MSG_CHECKING([if gai_strerror usage allowed])
   2426     if test "x$curl_disallow_gai_strerror" != "xyes"; then
   2427       AC_MSG_RESULT([yes])
   2428       tst_allow_gai_strerror="yes"
   2429     else
   2430       AC_MSG_RESULT([no])
   2431       tst_allow_gai_strerror="no"
   2432     fi
   2433   fi
   2434   #
   2435   AC_MSG_CHECKING([if gai_strerror might be used])
   2436   if test "$tst_links_gai_strerror" = "yes" &&
   2437      test "$tst_proto_gai_strerror" = "yes" &&
   2438      test "$tst_compi_gai_strerror" = "yes" &&
   2439      test "$tst_allow_gai_strerror" = "yes"; then
   2440     AC_MSG_RESULT([yes])
   2441     AC_DEFINE_UNQUOTED(HAVE_GAI_STRERROR, 1,
   2442       [Define to 1 if you have the gai_strerror function.])
   2443     ac_cv_func_gai_strerror="yes"
   2444   else
   2445     AC_MSG_RESULT([no])
   2446     ac_cv_func_gai_strerror="no"
   2447   fi
   2448 ])
   2449 
   2450 
   2451 dnl CURL_CHECK_FUNC_GETHOSTBYADDR_R
   2452 dnl -------------------------------------------------
   2453 dnl Verify if gethostbyaddr_r is available, prototyped,
   2454 dnl and can be compiled. If all of these are true, and
   2455 dnl usage has not been previously disallowed with
   2456 dnl shell variable curl_disallow_gethostbyaddr_r, then
   2457 dnl HAVE_GETHOSTBYADDR_R will be defined.
   2458 
   2459 AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYADDR_R], [
   2460   AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
   2461   #
   2462   tst_links_gethostbyaddr_r="unknown"
   2463   tst_proto_gethostbyaddr_r="unknown"
   2464   tst_compi_gethostbyaddr_r="unknown"
   2465   tst_allow_gethostbyaddr_r="unknown"
   2466   tst_nargs_gethostbyaddr_r="unknown"
   2467   #
   2468   AC_MSG_CHECKING([if gethostbyaddr_r can be linked])
   2469   AC_LINK_IFELSE([
   2470     AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
   2471   ],[
   2472     AC_MSG_RESULT([yes])
   2473     tst_links_gethostbyaddr_r="yes"
   2474   ],[
   2475     AC_MSG_RESULT([no])
   2476     tst_links_gethostbyaddr_r="no"
   2477   ])
   2478   #
   2479   if test "$tst_links_gethostbyaddr_r" = "yes"; then
   2480     AC_MSG_CHECKING([if gethostbyaddr_r is prototyped])
   2481     AC_EGREP_CPP([gethostbyaddr_r],[
   2482       $curl_includes_netdb
   2483     ],[
   2484       AC_MSG_RESULT([yes])
   2485       tst_proto_gethostbyaddr_r="yes"
   2486     ],[
   2487       AC_MSG_RESULT([no])
   2488       tst_proto_gethostbyaddr_r="no"
   2489     ])
   2490   fi
   2491   #
   2492   if test "$tst_proto_gethostbyaddr_r" = "yes"; then
   2493     if test "$tst_nargs_gethostbyaddr_r" = "unknown"; then
   2494       AC_MSG_CHECKING([if gethostbyaddr_r takes 5 args.])
   2495       AC_COMPILE_IFELSE([
   2496         AC_LANG_PROGRAM([[
   2497           $curl_includes_netdb
   2498         ]],[[
   2499           if(0 != gethostbyaddr_r(0, 0, 0, 0, 0))
   2500             return 1;
   2501         ]])
   2502       ],[
   2503         AC_MSG_RESULT([yes])
   2504         tst_compi_gethostbyaddr_r="yes"
   2505         tst_nargs_gethostbyaddr_r="5"
   2506       ],[
   2507         AC_MSG_RESULT([no])
   2508         tst_compi_gethostbyaddr_r="no"
   2509       ])
   2510     fi
   2511     if test "$tst_nargs_gethostbyaddr_r" = "unknown"; then
   2512       AC_MSG_CHECKING([if gethostbyaddr_r takes 7 args.])
   2513       AC_COMPILE_IFELSE([
   2514         AC_LANG_PROGRAM([[
   2515           $curl_includes_netdb
   2516         ]],[[
   2517           if(0 != gethostbyaddr_r(0, 0, 0, 0, 0, 0, 0))
   2518             return 1;
   2519         ]])
   2520       ],[
   2521         AC_MSG_RESULT([yes])
   2522         tst_compi_gethostbyaddr_r="yes"
   2523         tst_nargs_gethostbyaddr_r="7"
   2524       ],[
   2525         AC_MSG_RESULT([no])
   2526         tst_compi_gethostbyaddr_r="no"
   2527       ])
   2528     fi
   2529     if test "$tst_nargs_gethostbyaddr_r" = "unknown"; then
   2530       AC_MSG_CHECKING([if gethostbyaddr_r takes 8 args.])
   2531       AC_COMPILE_IFELSE([
   2532         AC_LANG_PROGRAM([[
   2533           $curl_includes_netdb
   2534         ]],[[
   2535           if(0 != gethostbyaddr_r(0, 0, 0, 0, 0, 0, 0, 0))
   2536             return 1;
   2537         ]])
   2538       ],[
   2539         AC_MSG_RESULT([yes])
   2540         tst_compi_gethostbyaddr_r="yes"
   2541         tst_nargs_gethostbyaddr_r="8"
   2542       ],[
   2543         AC_MSG_RESULT([no])
   2544         tst_compi_gethostbyaddr_r="no"
   2545       ])
   2546     fi
   2547     AC_MSG_CHECKING([if gethostbyaddr_r is compilable])
   2548     if test "$tst_compi_gethostbyaddr_r" = "yes"; then
   2549       AC_MSG_RESULT([yes])
   2550     else
   2551       AC_MSG_RESULT([no])
   2552     fi
   2553   fi
   2554   #
   2555   if test "$tst_compi_gethostbyaddr_r" = "yes"; then
   2556     AC_MSG_CHECKING([if gethostbyaddr_r usage allowed])
   2557     if test "x$curl_disallow_gethostbyaddr_r" != "xyes"; then
   2558       AC_MSG_RESULT([yes])
   2559       tst_allow_gethostbyaddr_r="yes"
   2560     else
   2561       AC_MSG_RESULT([no])
   2562       tst_allow_gethostbyaddr_r="no"
   2563     fi
   2564   fi
   2565   #
   2566   AC_MSG_CHECKING([if gethostbyaddr_r might be used])
   2567   if test "$tst_links_gethostbyaddr_r" = "yes" &&
   2568      test "$tst_proto_gethostbyaddr_r" = "yes" &&
   2569      test "$tst_compi_gethostbyaddr_r" = "yes" &&
   2570      test "$tst_allow_gethostbyaddr_r" = "yes"; then
   2571     AC_MSG_RESULT([yes])
   2572     AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYADDR_R, 1,
   2573       [Define to 1 if you have the gethostbyaddr_r function.])
   2574     dnl AC_DEFINE_UNQUOTED(GETHOSTBYADDR_R_ARGS, $tst_nargs_gethostbyaddr_r,
   2575     dnl   [Specifies the number of arguments to gethostbyaddr_r])
   2576     #
   2577     if test "$tst_nargs_gethostbyaddr_r" -eq "5"; then
   2578       AC_DEFINE(HAVE_GETHOSTBYADDR_R_5, 1, [gethostbyaddr_r() takes 5 args])
   2579     elif test "$tst_nargs_gethostbyaddr_r" -eq "7"; then
   2580       AC_DEFINE(HAVE_GETHOSTBYADDR_R_7, 1, [gethostbyaddr_r() takes 7 args])
   2581     elif test "$tst_nargs_gethostbyaddr_r" -eq "8"; then
   2582       AC_DEFINE(HAVE_GETHOSTBYADDR_R_8, 1, [gethostbyaddr_r() takes 8 args])
   2583     fi
   2584     #
   2585     ac_cv_func_gethostbyaddr_r="yes"
   2586   else
   2587     AC_MSG_RESULT([no])
   2588     ac_cv_func_gethostbyaddr_r="no"
   2589   fi
   2590 ])
   2591 
   2592 
   2593 dnl CURL_CHECK_FUNC_GETHOSTBYNAME
   2594 dnl -------------------------------------------------
   2595 dnl Verify if gethostbyname is available, prototyped,
   2596 dnl and can be compiled. If all of these are true,
   2597 dnl and usage has not been previously disallowed with
   2598 dnl shell variable curl_disallow_gethostbyname, then
   2599 dnl HAVE_GETHOSTBYNAME will be defined.
   2600 
   2601 AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME], [
   2602   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   2603   AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
   2604   #
   2605   tst_links_gethostbyname="unknown"
   2606   tst_proto_gethostbyname="unknown"
   2607   tst_compi_gethostbyname="unknown"
   2608   tst_allow_gethostbyname="unknown"
   2609   #
   2610   AC_MSG_CHECKING([if gethostbyname can be linked])
   2611   AC_LINK_IFELSE([
   2612     AC_LANG_PROGRAM([[
   2613       $curl_includes_winsock2
   2614       $curl_includes_netdb
   2615     ]],[[
   2616       if(0 != gethostbyname(0))
   2617         return 1;
   2618     ]])
   2619   ],[
   2620     AC_MSG_RESULT([yes])
   2621     tst_links_gethostbyname="yes"
   2622   ],[
   2623     AC_MSG_RESULT([no])
   2624     tst_links_gethostbyname="no"
   2625   ])
   2626   #
   2627   if test "$tst_links_gethostbyname" = "yes"; then
   2628     AC_MSG_CHECKING([if gethostbyname is prototyped])
   2629     AC_EGREP_CPP([gethostbyname],[
   2630       $curl_includes_winsock2
   2631       $curl_includes_netdb
   2632     ],[
   2633       AC_MSG_RESULT([yes])
   2634       tst_proto_gethostbyname="yes"
   2635     ],[
   2636       AC_MSG_RESULT([no])
   2637       tst_proto_gethostbyname="no"
   2638     ])
   2639   fi
   2640   #
   2641   if test "$tst_proto_gethostbyname" = "yes"; then
   2642     AC_MSG_CHECKING([if gethostbyname is compilable])
   2643     AC_COMPILE_IFELSE([
   2644       AC_LANG_PROGRAM([[
   2645         $curl_includes_winsock2
   2646         $curl_includes_netdb
   2647       ]],[[
   2648         if(0 != gethostbyname(0))
   2649           return 1;
   2650       ]])
   2651     ],[
   2652       AC_MSG_RESULT([yes])
   2653       tst_compi_gethostbyname="yes"
   2654     ],[
   2655       AC_MSG_RESULT([no])
   2656       tst_compi_gethostbyname="no"
   2657     ])
   2658   fi
   2659   #
   2660   if test "$tst_compi_gethostbyname" = "yes"; then
   2661     AC_MSG_CHECKING([if gethostbyname usage allowed])
   2662     if test "x$curl_disallow_gethostbyname" != "xyes"; then
   2663       AC_MSG_RESULT([yes])
   2664       tst_allow_gethostbyname="yes"
   2665     else
   2666       AC_MSG_RESULT([no])
   2667       tst_allow_gethostbyname="no"
   2668     fi
   2669   fi
   2670   #
   2671   AC_MSG_CHECKING([if gethostbyname might be used])
   2672   if test "$tst_links_gethostbyname" = "yes" &&
   2673      test "$tst_proto_gethostbyname" = "yes" &&
   2674      test "$tst_compi_gethostbyname" = "yes" &&
   2675      test "$tst_allow_gethostbyname" = "yes"; then
   2676     AC_MSG_RESULT([yes])
   2677     AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYNAME, 1,
   2678       [Define to 1 if you have the gethostbyname function.])
   2679     ac_cv_func_gethostbyname="yes"
   2680   else
   2681     AC_MSG_RESULT([no])
   2682     ac_cv_func_gethostbyname="no"
   2683   fi
   2684 ])
   2685 
   2686 
   2687 dnl CURL_CHECK_FUNC_GETHOSTBYNAME_R
   2688 dnl -------------------------------------------------
   2689 dnl Verify if gethostbyname_r is available, prototyped,
   2690 dnl and can be compiled. If all of these are true, and
   2691 dnl usage has not been previously disallowed with
   2692 dnl shell variable curl_disallow_gethostbyname_r, then
   2693 dnl HAVE_GETHOSTBYNAME_R will be defined.
   2694 
   2695 AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME_R], [
   2696   AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
   2697   #
   2698   tst_links_gethostbyname_r="unknown"
   2699   tst_proto_gethostbyname_r="unknown"
   2700   tst_compi_gethostbyname_r="unknown"
   2701   tst_allow_gethostbyname_r="unknown"
   2702   tst_nargs_gethostbyname_r="unknown"
   2703   #
   2704   AC_MSG_CHECKING([if gethostbyname_r can be linked])
   2705   AC_LINK_IFELSE([
   2706     AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
   2707   ],[
   2708     AC_MSG_RESULT([yes])
   2709     tst_links_gethostbyname_r="yes"
   2710   ],[
   2711     AC_MSG_RESULT([no])
   2712     tst_links_gethostbyname_r="no"
   2713   ])
   2714   #
   2715   if test "$tst_links_gethostbyname_r" = "yes"; then
   2716     AC_MSG_CHECKING([if gethostbyname_r is prototyped])
   2717     AC_EGREP_CPP([gethostbyname_r],[
   2718       $curl_includes_netdb
   2719     ],[
   2720       AC_MSG_RESULT([yes])
   2721       tst_proto_gethostbyname_r="yes"
   2722     ],[
   2723       AC_MSG_RESULT([no])
   2724       tst_proto_gethostbyname_r="no"
   2725     ])
   2726   fi
   2727   #
   2728   if test "$tst_proto_gethostbyname_r" = "yes"; then
   2729     if test "$tst_nargs_gethostbyname_r" = "unknown"; then
   2730       AC_MSG_CHECKING([if gethostbyname_r takes 3 args.])
   2731       AC_COMPILE_IFELSE([
   2732         AC_LANG_PROGRAM([[
   2733           $curl_includes_netdb
   2734         ]],[[
   2735           if(0 != gethostbyname_r(0, 0, 0))
   2736             return 1;
   2737         ]])
   2738       ],[
   2739         AC_MSG_RESULT([yes])
   2740         tst_compi_gethostbyname_r="yes"
   2741         tst_nargs_gethostbyname_r="3"
   2742       ],[
   2743         AC_MSG_RESULT([no])
   2744         tst_compi_gethostbyname_r="no"
   2745       ])
   2746     fi
   2747     if test "$tst_nargs_gethostbyname_r" = "unknown"; then
   2748       AC_MSG_CHECKING([if gethostbyname_r takes 5 args.])
   2749       AC_COMPILE_IFELSE([
   2750         AC_LANG_PROGRAM([[
   2751           $curl_includes_netdb
   2752         ]],[[
   2753           if(0 != gethostbyname_r(0, 0, 0, 0, 0))
   2754             return 1;
   2755         ]])
   2756       ],[
   2757         AC_MSG_RESULT([yes])
   2758         tst_compi_gethostbyname_r="yes"
   2759         tst_nargs_gethostbyname_r="5"
   2760       ],[
   2761         AC_MSG_RESULT([no])
   2762         tst_compi_gethostbyname_r="no"
   2763       ])
   2764     fi
   2765     if test "$tst_nargs_gethostbyname_r" = "unknown"; then
   2766       AC_MSG_CHECKING([if gethostbyname_r takes 6 args.])
   2767       AC_COMPILE_IFELSE([
   2768         AC_LANG_PROGRAM([[
   2769           $curl_includes_netdb
   2770         ]],[[
   2771           if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0))
   2772             return 1;
   2773         ]])
   2774       ],[
   2775         AC_MSG_RESULT([yes])
   2776         tst_compi_gethostbyname_r="yes"
   2777         tst_nargs_gethostbyname_r="6"
   2778       ],[
   2779         AC_MSG_RESULT([no])
   2780         tst_compi_gethostbyname_r="no"
   2781       ])
   2782     fi
   2783     AC_MSG_CHECKING([if gethostbyname_r is compilable])
   2784     if test "$tst_compi_gethostbyname_r" = "yes"; then
   2785       AC_MSG_RESULT([yes])
   2786     else
   2787       AC_MSG_RESULT([no])
   2788     fi
   2789   fi
   2790   #
   2791   if test "$tst_compi_gethostbyname_r" = "yes"; then
   2792     AC_MSG_CHECKING([if gethostbyname_r usage allowed])
   2793     if test "x$curl_disallow_gethostbyname_r" != "xyes"; then
   2794       AC_MSG_RESULT([yes])
   2795       tst_allow_gethostbyname_r="yes"
   2796     else
   2797       AC_MSG_RESULT([no])
   2798       tst_allow_gethostbyname_r="no"
   2799     fi
   2800   fi
   2801   #
   2802   AC_MSG_CHECKING([if gethostbyname_r might be used])
   2803   if test "$tst_links_gethostbyname_r" = "yes" &&
   2804      test "$tst_proto_gethostbyname_r" = "yes" &&
   2805      test "$tst_compi_gethostbyname_r" = "yes" &&
   2806      test "$tst_allow_gethostbyname_r" = "yes"; then
   2807     AC_MSG_RESULT([yes])
   2808     AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYNAME_R, 1,
   2809       [Define to 1 if you have the gethostbyname_r function.])
   2810     dnl AC_DEFINE_UNQUOTED(GETHOSTBYNAME_R_ARGS, $tst_nargs_gethostbyname_r,
   2811     dnl   [Specifies the number of arguments to gethostbyname_r])
   2812     #
   2813     if test "$tst_nargs_gethostbyname_r" -eq "3"; then
   2814       AC_DEFINE(HAVE_GETHOSTBYNAME_R_3, 1, [gethostbyname_r() takes 3 args])
   2815     elif test "$tst_nargs_gethostbyname_r" -eq "5"; then
   2816       AC_DEFINE(HAVE_GETHOSTBYNAME_R_5, 1, [gethostbyname_r() takes 5 args])
   2817     elif test "$tst_nargs_gethostbyname_r" -eq "6"; then
   2818       AC_DEFINE(HAVE_GETHOSTBYNAME_R_6, 1, [gethostbyname_r() takes 6 args])
   2819     fi
   2820     #
   2821     ac_cv_func_gethostbyname_r="yes"
   2822   else
   2823     AC_MSG_RESULT([no])
   2824     ac_cv_func_gethostbyname_r="no"
   2825   fi
   2826 ])
   2827 
   2828 
   2829 dnl CURL_CHECK_FUNC_GETHOSTNAME
   2830 dnl -------------------------------------------------
   2831 dnl Verify if gethostname is available, prototyped, and
   2832 dnl can be compiled. If all of these are true, and
   2833 dnl usage has not been previously disallowed with
   2834 dnl shell variable curl_disallow_gethostname, then
   2835 dnl HAVE_GETHOSTNAME will be defined.
   2836 
   2837 AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
   2838   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   2839   AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
   2840   AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
   2841   #
   2842   tst_links_gethostname="unknown"
   2843   tst_proto_gethostname="unknown"
   2844   tst_compi_gethostname="unknown"
   2845   tst_allow_gethostname="unknown"
   2846   #
   2847   AC_MSG_CHECKING([if gethostname can be linked])
   2848   AC_LINK_IFELSE([
   2849     AC_LANG_PROGRAM([[
   2850       $curl_includes_winsock2
   2851       $curl_includes_unistd
   2852     ]],[[
   2853       if(0 != gethostname(0, 0))
   2854         return 1;
   2855     ]])
   2856   ],[
   2857     AC_MSG_RESULT([yes])
   2858     tst_links_gethostname="yes"
   2859   ],[
   2860     AC_MSG_RESULT([no])
   2861     tst_links_gethostname="no"
   2862   ])
   2863   #
   2864   if test "$tst_links_gethostname" = "yes"; then
   2865     AC_MSG_CHECKING([if gethostname is prototyped])
   2866     AC_EGREP_CPP([gethostname],[
   2867       $curl_includes_winsock2
   2868       $curl_includes_unistd
   2869     ],[
   2870       AC_MSG_RESULT([yes])
   2871       tst_proto_gethostname="yes"
   2872     ],[
   2873       AC_MSG_RESULT([no])
   2874       tst_proto_gethostname="no"
   2875     ])
   2876   fi
   2877   #
   2878   if test "$tst_proto_gethostname" = "yes"; then
   2879     AC_MSG_CHECKING([if gethostname is compilable])
   2880     AC_COMPILE_IFELSE([
   2881       AC_LANG_PROGRAM([[
   2882         $curl_includes_winsock2
   2883         $curl_includes_unistd
   2884       ]],[[
   2885         if(0 != gethostname(0, 0))
   2886           return 1;
   2887       ]])
   2888     ],[
   2889       AC_MSG_RESULT([yes])
   2890       tst_compi_gethostname="yes"
   2891     ],[
   2892       AC_MSG_RESULT([no])
   2893       tst_compi_gethostname="no"
   2894     ])
   2895   fi
   2896   #
   2897   if test "$tst_compi_gethostname" = "yes"; then
   2898     AC_MSG_CHECKING([for gethostname arg 2 data type])
   2899     tst_gethostname_type_arg2="unknown"
   2900     for tst_arg1 in 'char *' 'unsigned char *' 'void *'; do
   2901       for tst_arg2 in 'int' 'unsigned int' 'size_t'; do
   2902         if test "$tst_gethostname_type_arg2" = "unknown"; then
   2903           AC_COMPILE_IFELSE([
   2904             AC_LANG_PROGRAM([[
   2905               $curl_includes_winsock2
   2906               $curl_includes_unistd
   2907               $curl_preprocess_callconv
   2908               extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
   2909             ]],[[
   2910               if(0 != gethostname(0, 0))
   2911                 return 1;
   2912             ]])
   2913           ],[
   2914             tst_gethostname_type_arg2="$tst_arg2"
   2915           ])
   2916         fi
   2917       done
   2918     done
   2919     AC_MSG_RESULT([$tst_gethostname_type_arg2])
   2920     if test "$tst_gethostname_type_arg2" != "unknown"; then
   2921       AC_DEFINE_UNQUOTED(GETHOSTNAME_TYPE_ARG2, $tst_gethostname_type_arg2,
   2922         [Define to the type of arg 2 for gethostname.])
   2923     fi
   2924   fi
   2925   #
   2926   if test "$tst_compi_gethostname" = "yes"; then
   2927     AC_MSG_CHECKING([if gethostname usage allowed])
   2928     if test "x$curl_disallow_gethostname" != "xyes"; then
   2929       AC_MSG_RESULT([yes])
   2930       tst_allow_gethostname="yes"
   2931     else
   2932       AC_MSG_RESULT([no])
   2933       tst_allow_gethostname="no"
   2934     fi
   2935   fi
   2936   #
   2937   AC_MSG_CHECKING([if gethostname might be used])
   2938   if test "$tst_links_gethostname" = "yes" &&
   2939      test "$tst_proto_gethostname" = "yes" &&
   2940      test "$tst_compi_gethostname" = "yes" &&
   2941      test "$tst_allow_gethostname" = "yes"; then
   2942     AC_MSG_RESULT([yes])
   2943     AC_DEFINE_UNQUOTED(HAVE_GETHOSTNAME, 1,
   2944       [Define to 1 if you have the gethostname function.])
   2945     ac_cv_func_gethostname="yes"
   2946   else
   2947     AC_MSG_RESULT([no])
   2948     ac_cv_func_gethostname="no"
   2949   fi
   2950 ])
   2951 
   2952 
   2953 dnl CURL_CHECK_FUNC_GETIFADDRS
   2954 dnl -------------------------------------------------
   2955 dnl Verify if getifaddrs is available, prototyped, can
   2956 dnl be compiled and seems to work. If all of these are
   2957 dnl true, and usage has not been previously disallowed
   2958 dnl with shell variable curl_disallow_getifaddrs, then
   2959 dnl HAVE_GETIFADDRS will be defined.
   2960 
   2961 AC_DEFUN([CURL_CHECK_FUNC_GETIFADDRS], [
   2962   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   2963   AC_REQUIRE([CURL_INCLUDES_IFADDRS])dnl
   2964   #
   2965   tst_links_getifaddrs="unknown"
   2966   tst_proto_getifaddrs="unknown"
   2967   tst_compi_getifaddrs="unknown"
   2968   tst_works_getifaddrs="unknown"
   2969   tst_allow_getifaddrs="unknown"
   2970   #
   2971   AC_MSG_CHECKING([if getifaddrs can be linked])
   2972   AC_LINK_IFELSE([
   2973     AC_LANG_FUNC_LINK_TRY([getifaddrs])
   2974   ],[
   2975     AC_MSG_RESULT([yes])
   2976     tst_links_getifaddrs="yes"
   2977   ],[
   2978     AC_MSG_RESULT([no])
   2979     tst_links_getifaddrs="no"
   2980   ])
   2981   #
   2982   if test "$tst_links_getifaddrs" = "yes"; then
   2983     AC_MSG_CHECKING([if getifaddrs is prototyped])
   2984     AC_EGREP_CPP([getifaddrs],[
   2985       $curl_includes_ifaddrs
   2986     ],[
   2987       AC_MSG_RESULT([yes])
   2988       tst_proto_getifaddrs="yes"
   2989     ],[
   2990       AC_MSG_RESULT([no])
   2991       tst_proto_getifaddrs="no"
   2992     ])
   2993   fi
   2994   #
   2995   if test "$tst_proto_getifaddrs" = "yes"; then
   2996     AC_MSG_CHECKING([if getifaddrs is compilable])
   2997     AC_COMPILE_IFELSE([
   2998       AC_LANG_PROGRAM([[
   2999         $curl_includes_ifaddrs
   3000       ]],[[
   3001         if(0 != getifaddrs(0))
   3002           return 1;
   3003       ]])
   3004     ],[
   3005       AC_MSG_RESULT([yes])
   3006       tst_compi_getifaddrs="yes"
   3007     ],[
   3008       AC_MSG_RESULT([no])
   3009       tst_compi_getifaddrs="no"
   3010     ])
   3011   fi
   3012   #
   3013   dnl only do runtime verification when not cross-compiling
   3014   if test "x$cross_compiling" != "xyes" &&
   3015     test "$tst_compi_getifaddrs" = "yes"; then
   3016     AC_MSG_CHECKING([if getifaddrs seems to work])
   3017     AC_RUN_IFELSE([
   3018       AC_LANG_PROGRAM([[
   3019         $curl_includes_stdlib
   3020         $curl_includes_ifaddrs
   3021       ]],[[
   3022         struct ifaddrs *ifa = 0;
   3023         int error;
   3024 
   3025         error = getifaddrs(&ifa);
   3026         if(error || !ifa)
   3027           exit(1); /* fail */
   3028         else
   3029           exit(0);
   3030       ]])
   3031     ],[
   3032       AC_MSG_RESULT([yes])
   3033       tst_works_getifaddrs="yes"
   3034     ],[
   3035       AC_MSG_RESULT([no])
   3036       tst_works_getifaddrs="no"
   3037     ])
   3038   fi
   3039   #
   3040   if test "$tst_compi_getifaddrs" = "yes" &&
   3041     test "$tst_works_getifaddrs" != "no"; then
   3042     AC_MSG_CHECKING([if getifaddrs usage allowed])
   3043     if test "x$curl_disallow_getifaddrs" != "xyes"; then
   3044       AC_MSG_RESULT([yes])
   3045       tst_allow_getifaddrs="yes"
   3046     else
   3047       AC_MSG_RESULT([no])
   3048       tst_allow_getifaddrs="no"
   3049     fi
   3050   fi
   3051   #
   3052   AC_MSG_CHECKING([if getifaddrs might be used])
   3053   if test "$tst_links_getifaddrs" = "yes" &&
   3054      test "$tst_proto_getifaddrs" = "yes" &&
   3055      test "$tst_compi_getifaddrs" = "yes" &&
   3056      test "$tst_allow_getifaddrs" = "yes" &&
   3057      test "$tst_works_getifaddrs" != "no"; then
   3058     AC_MSG_RESULT([yes])
   3059     AC_DEFINE_UNQUOTED(HAVE_GETIFADDRS, 1,
   3060       [Define to 1 if you have a working getifaddrs function.])
   3061     ac_cv_func_getifaddrs="yes"
   3062   else
   3063     AC_MSG_RESULT([no])
   3064     ac_cv_func_getifaddrs="no"
   3065   fi
   3066 ])
   3067 
   3068 
   3069 dnl CURL_CHECK_FUNC_GETSERVBYPORT_R
   3070 dnl -------------------------------------------------
   3071 dnl Verify if getservbyport_r is available, prototyped,
   3072 dnl and can be compiled. If all of these are true, and
   3073 dnl usage has not been previously disallowed with
   3074 dnl shell variable curl_disallow_getservbyport_r, then
   3075 dnl HAVE_GETSERVBYPORT_R will be defined.
   3076 
   3077 AC_DEFUN([CURL_CHECK_FUNC_GETSERVBYPORT_R], [
   3078   AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
   3079   #
   3080   tst_links_getservbyport_r="unknown"
   3081   tst_proto_getservbyport_r="unknown"
   3082   tst_compi_getservbyport_r="unknown"
   3083   tst_allow_getservbyport_r="unknown"
   3084   tst_nargs_getservbyport_r="unknown"
   3085   #
   3086   AC_MSG_CHECKING([if getservbyport_r can be linked])
   3087   AC_LINK_IFELSE([
   3088     AC_LANG_FUNC_LINK_TRY([getservbyport_r])
   3089   ],[
   3090     AC_MSG_RESULT([yes])
   3091     tst_links_getservbyport_r="yes"
   3092   ],[
   3093     AC_MSG_RESULT([no])
   3094     tst_links_getservbyport_r="no"
   3095   ])
   3096   #
   3097   if test "$tst_links_getservbyport_r" = "yes"; then
   3098     AC_MSG_CHECKING([if getservbyport_r is prototyped])
   3099     AC_EGREP_CPP([getservbyport_r],[
   3100       $curl_includes_netdb
   3101     ],[
   3102       AC_MSG_RESULT([yes])
   3103       tst_proto_getservbyport_r="yes"
   3104     ],[
   3105       AC_MSG_RESULT([no])
   3106       tst_proto_getservbyport_r="no"
   3107     ])
   3108   fi
   3109   #
   3110   if test "$tst_proto_getservbyport_r" = "yes"; then
   3111     if test "$tst_nargs_getservbyport_r" = "unknown"; then
   3112       AC_MSG_CHECKING([if getservbyport_r takes 4 args.])
   3113       AC_COMPILE_IFELSE([
   3114         AC_LANG_PROGRAM([[
   3115           $curl_includes_netdb
   3116         ]],[[
   3117           if(0 != getservbyport_r(0, 0, 0, 0))
   3118             return 1;
   3119         ]])
   3120       ],[
   3121         AC_MSG_RESULT([yes])
   3122         tst_compi_getservbyport_r="yes"
   3123         tst_nargs_getservbyport_r="4"
   3124       ],[
   3125         AC_MSG_RESULT([no])
   3126         tst_compi_getservbyport_r="no"
   3127       ])
   3128     fi
   3129     if test "$tst_nargs_getservbyport_r" = "unknown"; then
   3130       AC_MSG_CHECKING([if getservbyport_r takes 5 args.])
   3131       AC_COMPILE_IFELSE([
   3132         AC_LANG_PROGRAM([[
   3133           $curl_includes_netdb
   3134         ]],[[
   3135           if(0 != getservbyport_r(0, 0, 0, 0, 0))
   3136             return 1;
   3137         ]])
   3138       ],[
   3139         AC_MSG_RESULT([yes])
   3140         tst_compi_getservbyport_r="yes"
   3141         tst_nargs_getservbyport_r="5"
   3142       ],[
   3143         AC_MSG_RESULT([no])
   3144         tst_compi_getservbyport_r="no"
   3145       ])
   3146     fi
   3147     if test "$tst_nargs_getservbyport_r" = "unknown"; then
   3148       AC_MSG_CHECKING([if getservbyport_r takes 6 args.])
   3149       AC_COMPILE_IFELSE([
   3150         AC_LANG_PROGRAM([[
   3151           $curl_includes_netdb
   3152         ]],[[
   3153           if(0 != getservbyport_r(0, 0, 0, 0, 0, 0))
   3154             return 1;
   3155         ]])
   3156       ],[
   3157         AC_MSG_RESULT([yes])
   3158         tst_compi_getservbyport_r="yes"
   3159         tst_nargs_getservbyport_r="6"
   3160       ],[
   3161         AC_MSG_RESULT([no])
   3162         tst_compi_getservbyport_r="no"
   3163       ])
   3164     fi
   3165     AC_MSG_CHECKING([if getservbyport_r is compilable])
   3166     if test "$tst_compi_getservbyport_r" = "yes"; then
   3167       AC_MSG_RESULT([yes])
   3168     else
   3169       AC_MSG_RESULT([no])
   3170     fi
   3171   fi
   3172   #
   3173   if test "$tst_compi_getservbyport_r" = "yes"; then
   3174     AC_MSG_CHECKING([if getservbyport_r usage allowed])
   3175     if test "x$curl_disallow_getservbyport_r" != "xyes"; then
   3176       AC_MSG_RESULT([yes])
   3177       tst_allow_getservbyport_r="yes"
   3178     else
   3179       AC_MSG_RESULT([no])
   3180       tst_allow_getservbyport_r="no"
   3181     fi
   3182   fi
   3183   #
   3184   AC_MSG_CHECKING([if getservbyport_r might be used])
   3185   if test "$tst_links_getservbyport_r" = "yes" &&
   3186      test "$tst_proto_getservbyport_r" = "yes" &&
   3187      test "$tst_compi_getservbyport_r" = "yes" &&
   3188      test "$tst_allow_getservbyport_r" = "yes"; then
   3189     AC_MSG_RESULT([yes])
   3190     AC_DEFINE_UNQUOTED(HAVE_GETSERVBYPORT_R, 1,
   3191       [Define to 1 if you have the getservbyport_r function.])
   3192     AC_DEFINE_UNQUOTED(GETSERVBYPORT_R_ARGS, $tst_nargs_getservbyport_r,
   3193       [Specifies the number of arguments to getservbyport_r])
   3194     if test "$tst_nargs_getservbyport_r" -eq "4"; then
   3195       AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, sizeof(struct servent_data),
   3196         [Specifies the size of the buffer to pass to getservbyport_r])
   3197     else
   3198       AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, 4096,
   3199         [Specifies the size of the buffer to pass to getservbyport_r])
   3200     fi
   3201     ac_cv_func_getservbyport_r="yes"
   3202   else
   3203     AC_MSG_RESULT([no])
   3204     ac_cv_func_getservbyport_r="no"
   3205   fi
   3206 ])
   3207 
   3208 
   3209 dnl CURL_CHECK_FUNC_GETXATTR
   3210 dnl -------------------------------------------------
   3211 dnl Verify if getxattr is available, prototyped, and
   3212 dnl can be compiled. If all of these are true, and
   3213 dnl usage has not been previously disallowed with
   3214 dnl shell variable curl_disallow_getxattr, then
   3215 dnl HAVE_GETXATTR will be defined.
   3216 
   3217 AC_DEFUN([CURL_CHECK_FUNC_GETXATTR], [
   3218   AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
   3219   #
   3220   tst_links_getxattr="unknown"
   3221   tst_proto_getxattr="unknown"
   3222   tst_compi_getxattr="unknown"
   3223   tst_allow_getxattr="unknown"
   3224   tst_nargs_getxattr="unknown"
   3225   #
   3226   AC_MSG_CHECKING([if getxattr can be linked])
   3227   AC_LINK_IFELSE([
   3228     AC_LANG_FUNC_LINK_TRY([getxattr])
   3229   ],[
   3230     AC_MSG_RESULT([yes])
   3231     tst_links_getxattr="yes"
   3232   ],[
   3233     AC_MSG_RESULT([no])
   3234     tst_links_getxattr="no"
   3235   ])
   3236   #
   3237   if test "$tst_links_getxattr" = "yes"; then
   3238     AC_MSG_CHECKING([if getxattr is prototyped])
   3239     AC_EGREP_CPP([getxattr],[
   3240       $curl_includes_sys_xattr
   3241     ],[
   3242       AC_MSG_RESULT([yes])
   3243       tst_proto_getxattr="yes"
   3244     ],[
   3245       AC_MSG_RESULT([no])
   3246       tst_proto_getxattr="no"
   3247     ])
   3248   fi
   3249   #
   3250   if test "$tst_proto_getxattr" = "yes"; then
   3251     if test "$tst_nargs_getxattr" = "unknown"; then
   3252       AC_MSG_CHECKING([if getxattr takes 4 args.])
   3253       AC_COMPILE_IFELSE([
   3254         AC_LANG_PROGRAM([[
   3255           $curl_includes_sys_xattr
   3256         ]],[[
   3257           if(0 != getxattr(0, 0, 0, 0))
   3258             return 1;
   3259         ]])
   3260       ],[
   3261         AC_MSG_RESULT([yes])
   3262         tst_compi_getxattr="yes"
   3263         tst_nargs_getxattr="4"
   3264       ],[
   3265         AC_MSG_RESULT([no])
   3266         tst_compi_getxattr="no"
   3267       ])
   3268     fi
   3269     if test "$tst_nargs_getxattr" = "unknown"; then
   3270       AC_MSG_CHECKING([if getxattr takes 6 args.])
   3271       AC_COMPILE_IFELSE([
   3272         AC_LANG_PROGRAM([[
   3273           $curl_includes_sys_xattr
   3274         ]],[[
   3275           if(0 != getxattr(0, 0, 0, 0, 0, 0))
   3276             return 1;
   3277         ]])
   3278       ],[
   3279         AC_MSG_RESULT([yes])
   3280         tst_compi_getxattr="yes"
   3281         tst_nargs_getxattr="6"
   3282       ],[
   3283         AC_MSG_RESULT([no])
   3284         tst_compi_getxattr="no"
   3285       ])
   3286     fi
   3287     AC_MSG_CHECKING([if getxattr is compilable])
   3288     if test "$tst_compi_getxattr" = "yes"; then
   3289       AC_MSG_RESULT([yes])
   3290     else
   3291       AC_MSG_RESULT([no])
   3292     fi
   3293   fi
   3294   #
   3295   if test "$tst_compi_getxattr" = "yes"; then
   3296     AC_MSG_CHECKING([if getxattr usage allowed])
   3297     if test "x$curl_disallow_getxattr" != "xyes"; then
   3298       AC_MSG_RESULT([yes])
   3299       tst_allow_getxattr="yes"
   3300     else
   3301       AC_MSG_RESULT([no])
   3302       tst_allow_getxattr="no"
   3303     fi
   3304   fi
   3305   #
   3306   AC_MSG_CHECKING([if getxattr might be used])
   3307   if test "$tst_links_getxattr" = "yes" &&
   3308      test "$tst_proto_getxattr" = "yes" &&
   3309      test "$tst_compi_getxattr" = "yes" &&
   3310      test "$tst_allow_getxattr" = "yes"; then
   3311     AC_MSG_RESULT([yes])
   3312     AC_DEFINE_UNQUOTED(HAVE_GETXATTR, 1,
   3313       [Define to 1 if you have the getxattr function.])
   3314     dnl AC_DEFINE_UNQUOTED(GETXATTR_ARGS, $tst_nargs_getxattr,
   3315     dnl   [Specifies the number of arguments to getxattr])
   3316     #
   3317     if test "$tst_nargs_getxattr" -eq "4"; then
   3318       AC_DEFINE(HAVE_GETXATTR_4, 1, [getxattr() takes 4 args])
   3319     elif test "$tst_nargs_getxattr" -eq "6"; then
   3320       AC_DEFINE(HAVE_GETXATTR_6, 1, [getxattr() takes 6 args])
   3321     fi
   3322     #
   3323     ac_cv_func_getxattr="yes"
   3324   else
   3325     AC_MSG_RESULT([no])
   3326     ac_cv_func_getxattr="no"
   3327   fi
   3328 ])
   3329 
   3330 
   3331 dnl CURL_CHECK_FUNC_GMTIME_R
   3332 dnl -------------------------------------------------
   3333 dnl Verify if gmtime_r is available, prototyped, can
   3334 dnl be compiled and seems to work. If all of these are
   3335 dnl true, and usage has not been previously disallowed
   3336 dnl with shell variable curl_disallow_gmtime_r, then
   3337 dnl HAVE_GMTIME_R will be defined.
   3338 
   3339 AC_DEFUN([CURL_CHECK_FUNC_GMTIME_R], [
   3340   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   3341   AC_REQUIRE([CURL_INCLUDES_TIME])dnl
   3342   #
   3343   tst_links_gmtime_r="unknown"
   3344   tst_proto_gmtime_r="unknown"
   3345   tst_compi_gmtime_r="unknown"
   3346   tst_works_gmtime_r="unknown"
   3347   tst_allow_gmtime_r="unknown"
   3348   #
   3349   AC_MSG_CHECKING([if gmtime_r can be linked])
   3350   AC_LINK_IFELSE([
   3351     AC_LANG_FUNC_LINK_TRY([gmtime_r])
   3352   ],[
   3353     AC_MSG_RESULT([yes])
   3354     tst_links_gmtime_r="yes"
   3355   ],[
   3356     AC_MSG_RESULT([no])
   3357     tst_links_gmtime_r="no"
   3358   ])
   3359   #
   3360   if test "$tst_links_gmtime_r" = "yes"; then
   3361     AC_MSG_CHECKING([if gmtime_r is prototyped])
   3362     AC_EGREP_CPP([gmtime_r],[
   3363       $curl_includes_time
   3364     ],[
   3365       AC_MSG_RESULT([yes])
   3366       tst_proto_gmtime_r="yes"
   3367     ],[
   3368       AC_MSG_RESULT([no])
   3369       tst_proto_gmtime_r="no"
   3370     ])
   3371   fi
   3372   #
   3373   if test "$tst_proto_gmtime_r" = "yes"; then
   3374     AC_MSG_CHECKING([if gmtime_r is compilable])
   3375     AC_COMPILE_IFELSE([
   3376       AC_LANG_PROGRAM([[
   3377         $curl_includes_time
   3378       ]],[[
   3379         if(0 != gmtime_r(0, 0))
   3380           return 1;
   3381       ]])
   3382     ],[
   3383       AC_MSG_RESULT([yes])
   3384       tst_compi_gmtime_r="yes"
   3385     ],[
   3386       AC_MSG_RESULT([no])
   3387       tst_compi_gmtime_r="no"
   3388     ])
   3389   fi
   3390   #
   3391   dnl only do runtime verification when not cross-compiling
   3392   if test "x$cross_compiling" != "xyes" &&
   3393     test "$tst_compi_gmtime_r" = "yes"; then
   3394     AC_MSG_CHECKING([if gmtime_r seems to work])
   3395     AC_RUN_IFELSE([
   3396       AC_LANG_PROGRAM([[
   3397         $curl_includes_stdlib
   3398         $curl_includes_time
   3399       ]],[[
   3400         time_t local = 1170352587;
   3401         struct tm *gmt = 0;
   3402         struct tm result;
   3403         gmt = gmtime_r(&local, &result);
   3404         if(gmt)
   3405           exit(0);
   3406         else
   3407           exit(1);
   3408       ]])
   3409     ],[
   3410       AC_MSG_RESULT([yes])
   3411       tst_works_gmtime_r="yes"
   3412     ],[
   3413       AC_MSG_RESULT([no])
   3414       tst_works_gmtime_r="no"
   3415     ])
   3416   fi
   3417   #
   3418   if test "$tst_compi_gmtime_r" = "yes" &&
   3419     test "$tst_works_gmtime_r" != "no"; then
   3420     AC_MSG_CHECKING([if gmtime_r usage allowed])
   3421     if test "x$curl_disallow_gmtime_r" != "xyes"; then
   3422       AC_MSG_RESULT([yes])
   3423       tst_allow_gmtime_r="yes"
   3424     else
   3425       AC_MSG_RESULT([no])
   3426       tst_allow_gmtime_r="no"
   3427     fi
   3428   fi
   3429   #
   3430   AC_MSG_CHECKING([if gmtime_r might be used])
   3431   if test "$tst_links_gmtime_r" = "yes" &&
   3432      test "$tst_proto_gmtime_r" = "yes" &&
   3433      test "$tst_compi_gmtime_r" = "yes" &&
   3434      test "$tst_allow_gmtime_r" = "yes" &&
   3435      test "$tst_works_gmtime_r" != "no"; then
   3436     AC_MSG_RESULT([yes])
   3437     AC_DEFINE_UNQUOTED(HAVE_GMTIME_R, 1,
   3438       [Define to 1 if you have a working gmtime_r function.])
   3439     ac_cv_func_gmtime_r="yes"
   3440   else
   3441     AC_MSG_RESULT([no])
   3442     ac_cv_func_gmtime_r="no"
   3443   fi
   3444 ])
   3445 
   3446 
   3447 dnl CURL_CHECK_FUNC_INET_NTOA_R
   3448 dnl -------------------------------------------------
   3449 dnl Verify if inet_ntoa_r is available, prototyped,
   3450 dnl and can be compiled. If all of these are true, and
   3451 dnl usage has not been previously disallowed with
   3452 dnl shell variable curl_disallow_inet_ntoa_r, then
   3453 dnl HAVE_INET_NTOA_R will be defined.
   3454 
   3455 AC_DEFUN([CURL_CHECK_FUNC_INET_NTOA_R], [
   3456   AC_REQUIRE([CURL_INCLUDES_ARPA_INET])dnl
   3457   #
   3458   tst_links_inet_ntoa_r="unknown"
   3459   tst_proto_inet_ntoa_r="unknown"
   3460   tst_compi_inet_ntoa_r="unknown"
   3461   tst_allow_inet_ntoa_r="unknown"
   3462   tst_nargs_inet_ntoa_r="unknown"
   3463   #
   3464   AC_MSG_CHECKING([if inet_ntoa_r can be linked])
   3465   AC_LINK_IFELSE([
   3466     AC_LANG_FUNC_LINK_TRY([inet_ntoa_r])
   3467   ],[
   3468     AC_MSG_RESULT([yes])
   3469     tst_links_inet_ntoa_r="yes"
   3470   ],[
   3471     AC_MSG_RESULT([no])
   3472     tst_links_inet_ntoa_r="no"
   3473   ])
   3474   #
   3475   if test "$tst_links_inet_ntoa_r" = "yes"; then
   3476     AC_MSG_CHECKING([if inet_ntoa_r is prototyped])
   3477     AC_EGREP_CPP([inet_ntoa_r],[
   3478       $curl_includes_arpa_inet
   3479     ],[
   3480       AC_MSG_RESULT([yes])
   3481       tst_proto_inet_ntoa_r="yes"
   3482     ],[
   3483       AC_MSG_RESULT([no])
   3484       tst_proto_inet_ntoa_r="no"
   3485     ])
   3486   fi
   3487   #
   3488   if test "$tst_proto_inet_ntoa_r" = "yes"; then
   3489     if test "$tst_nargs_inet_ntoa_r" = "unknown"; then
   3490       AC_MSG_CHECKING([if inet_ntoa_r takes 2 args.])
   3491       AC_COMPILE_IFELSE([
   3492         AC_LANG_PROGRAM([[
   3493           $curl_includes_arpa_inet
   3494         ]],[[
   3495           struct in_addr addr;
   3496           if(0 != inet_ntoa_r(addr, 0))
   3497             return 1;
   3498         ]])
   3499       ],[
   3500         AC_MSG_RESULT([yes])
   3501         tst_compi_inet_ntoa_r="yes"
   3502         tst_nargs_inet_ntoa_r="2"
   3503       ],[
   3504         AC_MSG_RESULT([no])
   3505         tst_compi_inet_ntoa_r="no"
   3506       ])
   3507     fi
   3508     if test "$tst_nargs_inet_ntoa_r" = "unknown"; then
   3509       AC_MSG_CHECKING([if inet_ntoa_r takes 3 args.])
   3510       AC_COMPILE_IFELSE([
   3511         AC_LANG_PROGRAM([[
   3512           $curl_includes_arpa_inet
   3513         ]],[[
   3514           struct in_addr addr;
   3515           if(0 != inet_ntoa_r(addr, 0, 0))
   3516             return 1;
   3517         ]])
   3518       ],[
   3519         AC_MSG_RESULT([yes])
   3520         tst_compi_inet_ntoa_r="yes"
   3521         tst_nargs_inet_ntoa_r="3"
   3522       ],[
   3523         AC_MSG_RESULT([no])
   3524         tst_compi_inet_ntoa_r="no"
   3525       ])
   3526     fi
   3527     AC_MSG_CHECKING([if inet_ntoa_r is compilable])
   3528     if test "$tst_compi_inet_ntoa_r" = "yes"; then
   3529       AC_MSG_RESULT([yes])
   3530     else
   3531       AC_MSG_RESULT([no])
   3532     fi
   3533   fi
   3534   #
   3535   if test "$tst_compi_inet_ntoa_r" = "yes"; then
   3536     AC_MSG_CHECKING([if inet_ntoa_r usage allowed])
   3537     if test "x$curl_disallow_inet_ntoa_r" != "xyes"; then
   3538       AC_MSG_RESULT([yes])
   3539       tst_allow_inet_ntoa_r="yes"
   3540     else
   3541       AC_MSG_RESULT([no])
   3542       tst_allow_inet_ntoa_r="no"
   3543     fi
   3544   fi
   3545   #
   3546   AC_MSG_CHECKING([if inet_ntoa_r might be used])
   3547   if test "$tst_links_inet_ntoa_r" = "yes" &&
   3548      test "$tst_proto_inet_ntoa_r" = "yes" &&
   3549      test "$tst_compi_inet_ntoa_r" = "yes" &&
   3550      test "$tst_allow_inet_ntoa_r" = "yes"; then
   3551     AC_MSG_RESULT([yes])
   3552     AC_DEFINE_UNQUOTED(HAVE_INET_NTOA_R, 1,
   3553       [Define to 1 if you have the inet_ntoa_r function.])
   3554     dnl AC_DEFINE_UNQUOTED(INET_NTOA_R_ARGS, $tst_nargs_inet_ntoa_r,
   3555     dnl   [Specifies the number of arguments to inet_ntoa_r])
   3556     #
   3557     if test "$tst_nargs_inet_ntoa_r" -eq "2"; then
   3558       AC_DEFINE(HAVE_INET_NTOA_R_2, 1, [inet_ntoa_r() takes 2 args])
   3559     elif test "$tst_nargs_inet_ntoa_r" -eq "3"; then
   3560       AC_DEFINE(HAVE_INET_NTOA_R_3, 1, [inet_ntoa_r() takes 3 args])
   3561     fi
   3562     #
   3563     ac_cv_func_inet_ntoa_r="yes"
   3564   else
   3565     AC_MSG_RESULT([no])
   3566     ac_cv_func_inet_ntoa_r="no"
   3567   fi
   3568 ])
   3569 
   3570 
   3571 dnl CURL_CHECK_FUNC_INET_NTOP
   3572 dnl -------------------------------------------------
   3573 dnl Verify if inet_ntop is available, prototyped, can
   3574 dnl be compiled and seems to work. If all of these are
   3575 dnl true, and usage has not been previously disallowed
   3576 dnl with shell variable curl_disallow_inet_ntop, then
   3577 dnl HAVE_INET_NTOP will be defined.
   3578 
   3579 AC_DEFUN([CURL_CHECK_FUNC_INET_NTOP], [
   3580   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   3581   AC_REQUIRE([CURL_INCLUDES_ARPA_INET])dnl
   3582   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   3583   #
   3584   tst_links_inet_ntop="unknown"
   3585   tst_proto_inet_ntop="unknown"
   3586   tst_compi_inet_ntop="unknown"
   3587   tst_works_inet_ntop="unknown"
   3588   tst_allow_inet_ntop="unknown"
   3589   #
   3590   AC_MSG_CHECKING([if inet_ntop can be linked])
   3591   AC_LINK_IFELSE([
   3592     AC_LANG_FUNC_LINK_TRY([inet_ntop])
   3593   ],[
   3594     AC_MSG_RESULT([yes])
   3595     tst_links_inet_ntop="yes"
   3596   ],[
   3597     AC_MSG_RESULT([no])
   3598     tst_links_inet_ntop="no"
   3599   ])
   3600   #
   3601   if test "$tst_links_inet_ntop" = "yes"; then
   3602     AC_MSG_CHECKING([if inet_ntop is prototyped])
   3603     AC_EGREP_CPP([inet_ntop],[
   3604       $curl_includes_arpa_inet
   3605     ],[
   3606       AC_MSG_RESULT([yes])
   3607       tst_proto_inet_ntop="yes"
   3608     ],[
   3609       AC_MSG_RESULT([no])
   3610       tst_proto_inet_ntop="no"
   3611     ])
   3612   fi
   3613   #
   3614   if test "$tst_proto_inet_ntop" = "yes"; then
   3615     AC_MSG_CHECKING([if inet_ntop is compilable])
   3616     AC_COMPILE_IFELSE([
   3617       AC_LANG_PROGRAM([[
   3618         $curl_includes_arpa_inet
   3619       ]],[[
   3620         if(0 != inet_ntop(0, 0, 0, 0))
   3621           return 1;
   3622       ]])
   3623     ],[
   3624       AC_MSG_RESULT([yes])
   3625       tst_compi_inet_ntop="yes"
   3626     ],[
   3627       AC_MSG_RESULT([no])
   3628       tst_compi_inet_ntop="no"
   3629     ])
   3630   fi
   3631   #
   3632   dnl only do runtime verification when not cross-compiling
   3633   if test "x$cross_compiling" != "xyes" &&
   3634     test "$tst_compi_inet_ntop" = "yes"; then
   3635     AC_MSG_CHECKING([if inet_ntop seems to work])
   3636     AC_RUN_IFELSE([
   3637       AC_LANG_PROGRAM([[
   3638         $curl_includes_stdlib
   3639         $curl_includes_arpa_inet
   3640         $curl_includes_string
   3641       ]],[[
   3642         char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
   3643         char ipv4res[sizeof "255.255.255.255"];
   3644         unsigned char ipv6a[26];
   3645         unsigned char ipv4a[5];
   3646         char *ipv6ptr = 0;
   3647         char *ipv4ptr = 0;
   3648         /* - */
   3649         ipv4res[0] = '\0';
   3650         ipv4a[0] = 0xc0;
   3651         ipv4a[1] = 0xa8;
   3652         ipv4a[2] = 0x64;
   3653         ipv4a[3] = 0x01;
   3654         ipv4a[4] = 0x01;
   3655         /* - */
   3656         ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res));
   3657         if(!ipv4ptr)
   3658           exit(1); /* fail */
   3659         if(ipv4ptr != ipv4res)
   3660           exit(1); /* fail */
   3661         if(!ipv4ptr[0])
   3662           exit(1); /* fail */
   3663         if(memcmp(ipv4res, "192.168.100.1", 13) != 0)
   3664           exit(1); /* fail */
   3665         /* - */
   3666         ipv6res[0] = '\0';
   3667         memset(ipv6a, 0, sizeof(ipv6a));
   3668         ipv6a[0] = 0xfe;
   3669         ipv6a[1] = 0x80;
   3670         ipv6a[8] = 0x02;
   3671         ipv6a[9] = 0x14;
   3672         ipv6a[10] = 0x4f;
   3673         ipv6a[11] = 0xff;
   3674         ipv6a[12] = 0xfe;
   3675         ipv6a[13] = 0x0b;
   3676         ipv6a[14] = 0x76;
   3677         ipv6a[15] = 0xc8;
   3678         ipv6a[25] = 0x01;
   3679         /* - */
   3680         ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res));
   3681         if(!ipv6ptr)
   3682           exit(1); /* fail */
   3683         if(ipv6ptr != ipv6res)
   3684           exit(1); /* fail */
   3685         if(!ipv6ptr[0])
   3686           exit(1); /* fail */
   3687         if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0)
   3688           exit(1); /* fail */
   3689         /* - */
   3690         exit(0);
   3691       ]])
   3692     ],[
   3693       AC_MSG_RESULT([yes])
   3694       tst_works_inet_ntop="yes"
   3695     ],[
   3696       AC_MSG_RESULT([no])
   3697       tst_works_inet_ntop="no"
   3698     ])
   3699   fi
   3700   #
   3701   if test "$tst_compi_inet_ntop" = "yes" &&
   3702     test "$tst_works_inet_ntop" != "no"; then
   3703     AC_MSG_CHECKING([if inet_ntop usage allowed])
   3704     if test "x$curl_disallow_inet_ntop" != "xyes"; then
   3705       AC_MSG_RESULT([yes])
   3706       tst_allow_inet_ntop="yes"
   3707     else
   3708       AC_MSG_RESULT([no])
   3709       tst_allow_inet_ntop="no"
   3710     fi
   3711   fi
   3712   #
   3713   AC_MSG_CHECKING([if inet_ntop might be used])
   3714   if test "$tst_links_inet_ntop" = "yes" &&
   3715      test "$tst_proto_inet_ntop" = "yes" &&
   3716      test "$tst_compi_inet_ntop" = "yes" &&
   3717      test "$tst_allow_inet_ntop" = "yes" &&
   3718      test "$tst_works_inet_ntop" != "no"; then
   3719     AC_MSG_RESULT([yes])
   3720     AC_DEFINE_UNQUOTED(HAVE_INET_NTOP, 1,
   3721       [Define to 1 if you have a IPv6 capable working inet_ntop function.])
   3722     ac_cv_func_inet_ntop="yes"
   3723   else
   3724     AC_MSG_RESULT([no])
   3725     ac_cv_func_inet_ntop="no"
   3726   fi
   3727 ])
   3728 
   3729 
   3730 dnl CURL_CHECK_FUNC_INET_PTON
   3731 dnl -------------------------------------------------
   3732 dnl Verify if inet_pton is available, prototyped, can
   3733 dnl be compiled and seems to work. If all of these are
   3734 dnl true, and usage has not been previously disallowed
   3735 dnl with shell variable curl_disallow_inet_pton, then
   3736 dnl HAVE_INET_PTON will be defined.
   3737 
   3738 AC_DEFUN([CURL_CHECK_FUNC_INET_PTON], [
   3739   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   3740   AC_REQUIRE([CURL_INCLUDES_ARPA_INET])dnl
   3741   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   3742   #
   3743   tst_links_inet_pton="unknown"
   3744   tst_proto_inet_pton="unknown"
   3745   tst_compi_inet_pton="unknown"
   3746   tst_works_inet_pton="unknown"
   3747   tst_allow_inet_pton="unknown"
   3748   #
   3749   AC_MSG_CHECKING([if inet_pton can be linked])
   3750   AC_LINK_IFELSE([
   3751     AC_LANG_FUNC_LINK_TRY([inet_pton])
   3752   ],[
   3753     AC_MSG_RESULT([yes])
   3754     tst_links_inet_pton="yes"
   3755   ],[
   3756     AC_MSG_RESULT([no])
   3757     tst_links_inet_pton="no"
   3758   ])
   3759   #
   3760   if test "$tst_links_inet_pton" = "yes"; then
   3761     AC_MSG_CHECKING([if inet_pton is prototyped])
   3762     AC_EGREP_CPP([inet_pton],[
   3763       $curl_includes_arpa_inet
   3764     ],[
   3765       AC_MSG_RESULT([yes])
   3766       tst_proto_inet_pton="yes"
   3767     ],[
   3768       AC_MSG_RESULT([no])
   3769       tst_proto_inet_pton="no"
   3770     ])
   3771   fi
   3772   #
   3773   if test "$tst_proto_inet_pton" = "yes"; then
   3774     AC_MSG_CHECKING([if inet_pton is compilable])
   3775     AC_COMPILE_IFELSE([
   3776       AC_LANG_PROGRAM([[
   3777         $curl_includes_arpa_inet
   3778       ]],[[
   3779         if(0 != inet_pton(0, 0, 0))
   3780           return 1;
   3781       ]])
   3782     ],[
   3783       AC_MSG_RESULT([yes])
   3784       tst_compi_inet_pton="yes"
   3785     ],[
   3786       AC_MSG_RESULT([no])
   3787       tst_compi_inet_pton="no"
   3788     ])
   3789   fi
   3790   #
   3791   dnl only do runtime verification when not cross-compiling
   3792   if test "x$cross_compiling" != "xyes" &&
   3793     test "$tst_compi_inet_pton" = "yes"; then
   3794     AC_MSG_CHECKING([if inet_pton seems to work])
   3795     AC_RUN_IFELSE([
   3796       AC_LANG_PROGRAM([[
   3797         $curl_includes_stdlib
   3798         $curl_includes_arpa_inet
   3799         $curl_includes_string
   3800       ]],[[
   3801         unsigned char ipv6a[16+1];
   3802         unsigned char ipv4a[4+1];
   3803         const char *ipv6src = "fe80::214:4fff:fe0b:76c8";
   3804         const char *ipv4src = "192.168.100.1";
   3805         /* - */
   3806         memset(ipv4a, 1, sizeof(ipv4a));
   3807         if(1 != inet_pton(AF_INET, ipv4src, ipv4a))
   3808           exit(1); /* fail */
   3809         /* - */
   3810         if( (ipv4a[0] != 0xc0) ||
   3811             (ipv4a[1] != 0xa8) ||
   3812             (ipv4a[2] != 0x64) ||
   3813             (ipv4a[3] != 0x01) ||
   3814             (ipv4a[4] != 0x01) )
   3815           exit(1); /* fail */
   3816         /* - */
   3817         memset(ipv6a, 1, sizeof(ipv6a));
   3818         if(1 != inet_pton(AF_INET6, ipv6src, ipv6a))
   3819           exit(1); /* fail */
   3820         /* - */
   3821         if( (ipv6a[0]  != 0xfe) ||
   3822             (ipv6a[1]  != 0x80) ||
   3823             (ipv6a[8]  != 0x02) ||
   3824             (ipv6a[9]  != 0x14) ||
   3825             (ipv6a[10] != 0x4f) ||
   3826             (ipv6a[11] != 0xff) ||
   3827             (ipv6a[12] != 0xfe) ||
   3828             (ipv6a[13] != 0x0b) ||
   3829             (ipv6a[14] != 0x76) ||
   3830             (ipv6a[15] != 0xc8) ||
   3831             (ipv6a[16] != 0x01) )
   3832           exit(1); /* fail */
   3833         /* - */
   3834         if( (ipv6a[2]  != 0x0) ||
   3835             (ipv6a[3]  != 0x0) ||
   3836             (ipv6a[4]  != 0x0) ||
   3837             (ipv6a[5]  != 0x0) ||
   3838             (ipv6a[6]  != 0x0) ||
   3839             (ipv6a[7]  != 0x0) )
   3840           exit(1); /* fail */
   3841         /* - */
   3842         exit(0);
   3843       ]])
   3844     ],[
   3845       AC_MSG_RESULT([yes])
   3846       tst_works_inet_pton="yes"
   3847     ],[
   3848       AC_MSG_RESULT([no])
   3849       tst_works_inet_pton="no"
   3850     ])
   3851   fi
   3852   #
   3853   if test "$tst_compi_inet_pton" = "yes" &&
   3854     test "$tst_works_inet_pton" != "no"; then
   3855     AC_MSG_CHECKING([if inet_pton usage allowed])
   3856     if test "x$curl_disallow_inet_pton" != "xyes"; then
   3857       AC_MSG_RESULT([yes])
   3858       tst_allow_inet_pton="yes"
   3859     else
   3860       AC_MSG_RESULT([no])
   3861       tst_allow_inet_pton="no"
   3862     fi
   3863   fi
   3864   #
   3865   AC_MSG_CHECKING([if inet_pton might be used])
   3866   if test "$tst_links_inet_pton" = "yes" &&
   3867      test "$tst_proto_inet_pton" = "yes" &&
   3868      test "$tst_compi_inet_pton" = "yes" &&
   3869      test "$tst_allow_inet_pton" = "yes" &&
   3870      test "$tst_works_inet_pton" != "no"; then
   3871     AC_MSG_RESULT([yes])
   3872     AC_DEFINE_UNQUOTED(HAVE_INET_PTON, 1,
   3873       [Define to 1 if you have a IPv6 capable working inet_pton function.])
   3874     ac_cv_func_inet_pton="yes"
   3875   else
   3876     AC_MSG_RESULT([no])
   3877     ac_cv_func_inet_pton="no"
   3878   fi
   3879 ])
   3880 
   3881 
   3882 dnl CURL_CHECK_FUNC_IOCTL
   3883 dnl -------------------------------------------------
   3884 dnl Verify if ioctl is available, prototyped, and
   3885 dnl can be compiled. If all of these are true, and
   3886 dnl usage has not been previously disallowed with
   3887 dnl shell variable curl_disallow_ioctl, then
   3888 dnl HAVE_IOCTL will be defined.
   3889 
   3890 AC_DEFUN([CURL_CHECK_FUNC_IOCTL], [
   3891   AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
   3892   #
   3893   tst_links_ioctl="unknown"
   3894   tst_proto_ioctl="unknown"
   3895   tst_compi_ioctl="unknown"
   3896   tst_allow_ioctl="unknown"
   3897   #
   3898   AC_MSG_CHECKING([if ioctl can be linked])
   3899   AC_LINK_IFELSE([
   3900     AC_LANG_FUNC_LINK_TRY([ioctl])
   3901   ],[
   3902     AC_MSG_RESULT([yes])
   3903     tst_links_ioctl="yes"
   3904   ],[
   3905     AC_MSG_RESULT([no])
   3906     tst_links_ioctl="no"
   3907   ])
   3908   #
   3909   if test "$tst_links_ioctl" = "yes"; then
   3910     AC_MSG_CHECKING([if ioctl is prototyped])
   3911     AC_EGREP_CPP([ioctl],[
   3912       $curl_includes_stropts
   3913     ],[
   3914       AC_MSG_RESULT([yes])
   3915       tst_proto_ioctl="yes"
   3916     ],[
   3917       AC_MSG_RESULT([no])
   3918       tst_proto_ioctl="no"
   3919     ])
   3920   fi
   3921   #
   3922   if test "$tst_proto_ioctl" = "yes"; then
   3923     AC_MSG_CHECKING([if ioctl is compilable])
   3924     AC_COMPILE_IFELSE([
   3925       AC_LANG_PROGRAM([[
   3926         $curl_includes_stropts
   3927       ]],[[
   3928         if(0 != ioctl(0, 0, 0))
   3929           return 1;
   3930       ]])
   3931     ],[
   3932       AC_MSG_RESULT([yes])
   3933       tst_compi_ioctl="yes"
   3934     ],[
   3935       AC_MSG_RESULT([no])
   3936       tst_compi_ioctl="no"
   3937     ])
   3938   fi
   3939   #
   3940   if test "$tst_compi_ioctl" = "yes"; then
   3941     AC_MSG_CHECKING([if ioctl usage allowed])
   3942     if test "x$curl_disallow_ioctl" != "xyes"; then
   3943       AC_MSG_RESULT([yes])
   3944       tst_allow_ioctl="yes"
   3945     else
   3946       AC_MSG_RESULT([no])
   3947       tst_allow_ioctl="no"
   3948     fi
   3949   fi
   3950   #
   3951   AC_MSG_CHECKING([if ioctl might be used])
   3952   if test "$tst_links_ioctl" = "yes" &&
   3953      test "$tst_proto_ioctl" = "yes" &&
   3954      test "$tst_compi_ioctl" = "yes" &&
   3955      test "$tst_allow_ioctl" = "yes"; then
   3956     AC_MSG_RESULT([yes])
   3957     AC_DEFINE_UNQUOTED(HAVE_IOCTL, 1,
   3958       [Define to 1 if you have the ioctl function.])
   3959     ac_cv_func_ioctl="yes"
   3960     CURL_CHECK_FUNC_IOCTL_FIONBIO
   3961     CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
   3962   else
   3963     AC_MSG_RESULT([no])
   3964     ac_cv_func_ioctl="no"
   3965   fi
   3966 ])
   3967 
   3968 
   3969 dnl CURL_CHECK_FUNC_IOCTL_FIONBIO
   3970 dnl -------------------------------------------------
   3971 dnl Verify if ioctl with the FIONBIO command is
   3972 dnl available, can be compiled, and seems to work. If
   3973 dnl all of these are true, then HAVE_IOCTL_FIONBIO
   3974 dnl will be defined.
   3975 
   3976 AC_DEFUN([CURL_CHECK_FUNC_IOCTL_FIONBIO], [
   3977   #
   3978   tst_compi_ioctl_fionbio="unknown"
   3979   tst_allow_ioctl_fionbio="unknown"
   3980   #
   3981   if test "$ac_cv_func_ioctl" = "yes"; then
   3982     AC_MSG_CHECKING([if ioctl FIONBIO is compilable])
   3983     AC_COMPILE_IFELSE([
   3984       AC_LANG_PROGRAM([[
   3985         $curl_includes_stropts
   3986       ]],[[
   3987         int flags = 0;
   3988         if(0 != ioctl(0, FIONBIO, &flags))
   3989           return 1;
   3990       ]])
   3991     ],[
   3992       AC_MSG_RESULT([yes])
   3993       tst_compi_ioctl_fionbio="yes"
   3994     ],[
   3995       AC_MSG_RESULT([no])
   3996       tst_compi_ioctl_fionbio="no"
   3997     ])
   3998   fi
   3999   #
   4000   if test "$tst_compi_ioctl_fionbio" = "yes"; then
   4001     AC_MSG_CHECKING([if ioctl FIONBIO usage allowed])
   4002     if test "x$curl_disallow_ioctl_fionbio" != "xyes"; then
   4003       AC_MSG_RESULT([yes])
   4004       tst_allow_ioctl_fionbio="yes"
   4005     else
   4006       AC_MSG_RESULT([no])
   4007       tst_allow_ioctl_fionbio="no"
   4008     fi
   4009   fi
   4010   #
   4011   AC_MSG_CHECKING([if ioctl FIONBIO might be used])
   4012   if test "$tst_compi_ioctl_fionbio" = "yes" &&
   4013      test "$tst_allow_ioctl_fionbio" = "yes"; then
   4014     AC_MSG_RESULT([yes])
   4015     AC_DEFINE_UNQUOTED(HAVE_IOCTL_FIONBIO, 1,
   4016       [Define to 1 if you have a working ioctl FIONBIO function.])
   4017     ac_cv_func_ioctl_fionbio="yes"
   4018   else
   4019     AC_MSG_RESULT([no])
   4020     ac_cv_func_ioctl_fionbio="no"
   4021   fi
   4022 ])
   4023 
   4024 
   4025 dnl CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
   4026 dnl -------------------------------------------------
   4027 dnl Verify if ioctl with the SIOCGIFADDR command is available,
   4028 dnl struct ifreq is defined, they can be compiled, and seem to
   4029 dnl work. If all of these are true, then HAVE_IOCTL_SIOCGIFADDR
   4030 dnl will be defined.
   4031 
   4032 AC_DEFUN([CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR], [
   4033   #
   4034   tst_compi_ioctl_siocgifaddr="unknown"
   4035   tst_allow_ioctl_siocgifaddr="unknown"
   4036   #
   4037   if test "$ac_cv_func_ioctl" = "yes"; then
   4038     AC_MSG_CHECKING([if ioctl SIOCGIFADDR is compilable])
   4039     AC_COMPILE_IFELSE([
   4040       AC_LANG_PROGRAM([[
   4041         $curl_includes_stropts
   4042         #include <net/if.h>
   4043       ]],[[
   4044         struct ifreq ifr;
   4045         if(0 != ioctl(0, SIOCGIFADDR, &ifr))
   4046           return 1;
   4047       ]])
   4048     ],[
   4049       AC_MSG_RESULT([yes])
   4050       tst_compi_ioctl_siocgifaddr="yes"
   4051     ],[
   4052       AC_MSG_RESULT([no])
   4053       tst_compi_ioctl_siocgifaddr="no"
   4054     ])
   4055   fi
   4056   #
   4057   if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then
   4058     AC_MSG_CHECKING([if ioctl SIOCGIFADDR usage allowed])
   4059     if test "x$curl_disallow_ioctl_siocgifaddr" != "xyes"; then
   4060       AC_MSG_RESULT([yes])
   4061       tst_allow_ioctl_siocgifaddr="yes"
   4062     else
   4063       AC_MSG_RESULT([no])
   4064       tst_allow_ioctl_siocgifaddr="no"
   4065     fi
   4066   fi
   4067   #
   4068   AC_MSG_CHECKING([if ioctl SIOCGIFADDR might be used])
   4069   if test "$tst_compi_ioctl_siocgifaddr" = "yes" &&
   4070      test "$tst_allow_ioctl_siocgifaddr" = "yes"; then
   4071     AC_MSG_RESULT([yes])
   4072     AC_DEFINE_UNQUOTED(HAVE_IOCTL_SIOCGIFADDR, 1,
   4073       [Define to 1 if you have a working ioctl SIOCGIFADDR function.])
   4074     ac_cv_func_ioctl_siocgifaddr="yes"
   4075   else
   4076     AC_MSG_RESULT([no])
   4077     ac_cv_func_ioctl_siocgifaddr="no"
   4078   fi
   4079 ])
   4080 
   4081 
   4082 dnl CURL_CHECK_FUNC_IOCTLSOCKET
   4083 dnl -------------------------------------------------
   4084 dnl Verify if ioctlsocket is available, prototyped, and
   4085 dnl can be compiled. If all of these are true, and
   4086 dnl usage has not been previously disallowed with
   4087 dnl shell variable curl_disallow_ioctlsocket, then
   4088 dnl HAVE_IOCTLSOCKET will be defined.
   4089 
   4090 AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
   4091   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   4092   #
   4093   tst_links_ioctlsocket="unknown"
   4094   tst_proto_ioctlsocket="unknown"
   4095   tst_compi_ioctlsocket="unknown"
   4096   tst_allow_ioctlsocket="unknown"
   4097   #
   4098   AC_MSG_CHECKING([if ioctlsocket can be linked])
   4099   AC_LINK_IFELSE([
   4100     AC_LANG_PROGRAM([[
   4101       $curl_includes_winsock2
   4102     ]],[[
   4103       if(0 != ioctlsocket(0, 0, 0))
   4104         return 1;
   4105     ]])
   4106   ],[
   4107     AC_MSG_RESULT([yes])
   4108     tst_links_ioctlsocket="yes"
   4109   ],[
   4110     AC_MSG_RESULT([no])
   4111     tst_links_ioctlsocket="no"
   4112   ])
   4113   #
   4114   if test "$tst_links_ioctlsocket" = "yes"; then
   4115     AC_MSG_CHECKING([if ioctlsocket is prototyped])
   4116     AC_EGREP_CPP([ioctlsocket],[
   4117       $curl_includes_winsock2
   4118     ],[
   4119       AC_MSG_RESULT([yes])
   4120       tst_proto_ioctlsocket="yes"
   4121     ],[
   4122       AC_MSG_RESULT([no])
   4123       tst_proto_ioctlsocket="no"
   4124     ])
   4125   fi
   4126   #
   4127   if test "$tst_proto_ioctlsocket" = "yes"; then
   4128     AC_MSG_CHECKING([if ioctlsocket is compilable])
   4129     AC_COMPILE_IFELSE([
   4130       AC_LANG_PROGRAM([[
   4131         $curl_includes_winsock2
   4132       ]],[[
   4133         if(0 != ioctlsocket(0, 0, 0))
   4134           return 1;
   4135       ]])
   4136     ],[
   4137       AC_MSG_RESULT([yes])
   4138       tst_compi_ioctlsocket="yes"
   4139     ],[
   4140       AC_MSG_RESULT([no])
   4141       tst_compi_ioctlsocket="no"
   4142     ])
   4143   fi
   4144   #
   4145   if test "$tst_compi_ioctlsocket" = "yes"; then
   4146     AC_MSG_CHECKING([if ioctlsocket usage allowed])
   4147     if test "x$curl_disallow_ioctlsocket" != "xyes"; then
   4148       AC_MSG_RESULT([yes])
   4149       tst_allow_ioctlsocket="yes"
   4150     else
   4151       AC_MSG_RESULT([no])
   4152       tst_allow_ioctlsocket="no"
   4153     fi
   4154   fi
   4155   #
   4156   AC_MSG_CHECKING([if ioctlsocket might be used])
   4157   if test "$tst_links_ioctlsocket" = "yes" &&
   4158      test "$tst_proto_ioctlsocket" = "yes" &&
   4159      test "$tst_compi_ioctlsocket" = "yes" &&
   4160      test "$tst_allow_ioctlsocket" = "yes"; then
   4161     AC_MSG_RESULT([yes])
   4162     AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET, 1,
   4163       [Define to 1 if you have the ioctlsocket function.])
   4164     ac_cv_func_ioctlsocket="yes"
   4165     CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO
   4166   else
   4167     AC_MSG_RESULT([no])
   4168     ac_cv_func_ioctlsocket="no"
   4169   fi
   4170 ])
   4171 
   4172 
   4173 dnl CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO
   4174 dnl -------------------------------------------------
   4175 dnl Verify if ioctlsocket with the FIONBIO command is
   4176 dnl available, can be compiled, and seems to work. If
   4177 dnl all of these are true, then HAVE_IOCTLSOCKET_FIONBIO
   4178 dnl will be defined.
   4179 
   4180 AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO], [
   4181   #
   4182   tst_compi_ioctlsocket_fionbio="unknown"
   4183   tst_allow_ioctlsocket_fionbio="unknown"
   4184   #
   4185   if test "$ac_cv_func_ioctlsocket" = "yes"; then
   4186     AC_MSG_CHECKING([if ioctlsocket FIONBIO is compilable])
   4187     AC_COMPILE_IFELSE([
   4188       AC_LANG_PROGRAM([[
   4189         $curl_includes_winsock2
   4190       ]],[[
   4191         int flags = 0;
   4192         if(0 != ioctlsocket(0, FIONBIO, &flags))
   4193           return 1;
   4194       ]])
   4195     ],[
   4196       AC_MSG_RESULT([yes])
   4197       tst_compi_ioctlsocket_fionbio="yes"
   4198     ],[
   4199       AC_MSG_RESULT([no])
   4200       tst_compi_ioctlsocket_fionbio="no"
   4201     ])
   4202   fi
   4203   #
   4204   if test "$tst_compi_ioctlsocket_fionbio" = "yes"; then
   4205     AC_MSG_CHECKING([if ioctlsocket FIONBIO usage allowed])
   4206     if test "x$curl_disallow_ioctlsocket_fionbio" != "xyes"; then
   4207       AC_MSG_RESULT([yes])
   4208       tst_allow_ioctlsocket_fionbio="yes"
   4209     else
   4210       AC_MSG_RESULT([no])
   4211       tst_allow_ioctlsocket_fionbio="no"
   4212     fi
   4213   fi
   4214   #
   4215   AC_MSG_CHECKING([if ioctlsocket FIONBIO might be used])
   4216   if test "$tst_compi_ioctlsocket_fionbio" = "yes" &&
   4217      test "$tst_allow_ioctlsocket_fionbio" = "yes"; then
   4218     AC_MSG_RESULT([yes])
   4219     AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_FIONBIO, 1,
   4220       [Define to 1 if you have a working ioctlsocket FIONBIO function.])
   4221     ac_cv_func_ioctlsocket_fionbio="yes"
   4222   else
   4223     AC_MSG_RESULT([no])
   4224     ac_cv_func_ioctlsocket_fionbio="no"
   4225   fi
   4226 ])
   4227 
   4228 
   4229 dnl CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
   4230 dnl -------------------------------------------------
   4231 dnl Verify if IoctlSocket is available, prototyped, and
   4232 dnl can be compiled. If all of these are true, and
   4233 dnl usage has not been previously disallowed with
   4234 dnl shell variable curl_disallow_ioctlsocket_camel,
   4235 dnl then HAVE_IOCTLSOCKET_CAMEL will be defined.
   4236 
   4237 AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
   4238   AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
   4239   #
   4240   tst_links_ioctlsocket_camel="unknown"
   4241   tst_proto_ioctlsocket_camel="unknown"
   4242   tst_compi_ioctlsocket_camel="unknown"
   4243   tst_allow_ioctlsocket_camel="unknown"
   4244   #
   4245   AC_MSG_CHECKING([if IoctlSocket can be linked])
   4246   AC_LINK_IFELSE([
   4247     AC_LANG_FUNC_LINK_TRY([IoctlSocket])
   4248   ],[
   4249     AC_MSG_RESULT([yes])
   4250     tst_links_ioctlsocket_camel="yes"
   4251   ],[
   4252     AC_MSG_RESULT([no])
   4253     tst_links_ioctlsocket_camel="no"
   4254   ])
   4255   #
   4256   if test "$tst_links_ioctlsocket_camel" = "yes"; then
   4257     AC_MSG_CHECKING([if IoctlSocket is prototyped])
   4258     AC_EGREP_CPP([IoctlSocket],[
   4259       $curl_includes_stropts
   4260     ],[
   4261       AC_MSG_RESULT([yes])
   4262       tst_proto_ioctlsocket_camel="yes"
   4263     ],[
   4264       AC_MSG_RESULT([no])
   4265       tst_proto_ioctlsocket_camel="no"
   4266     ])
   4267   fi
   4268   #
   4269   if test "$tst_proto_ioctlsocket_camel" = "yes"; then
   4270     AC_MSG_CHECKING([if IoctlSocket is compilable])
   4271     AC_COMPILE_IFELSE([
   4272       AC_LANG_PROGRAM([[
   4273         $curl_includes_stropts
   4274       ]],[[
   4275         if(0 != IoctlSocket(0, 0, 0))
   4276           return 1;
   4277       ]])
   4278     ],[
   4279       AC_MSG_RESULT([yes])
   4280       tst_compi_ioctlsocket_camel="yes"
   4281     ],[
   4282       AC_MSG_RESULT([no])
   4283       tst_compi_ioctlsocket_camel="no"
   4284     ])
   4285   fi
   4286   #
   4287   if test "$tst_compi_ioctlsocket_camel" = "yes"; then
   4288     AC_MSG_CHECKING([if IoctlSocket usage allowed])
   4289     if test "x$curl_disallow_ioctlsocket_camel" != "xyes"; then
   4290       AC_MSG_RESULT([yes])
   4291       tst_allow_ioctlsocket_camel="yes"
   4292     else
   4293       AC_MSG_RESULT([no])
   4294       tst_allow_ioctlsocket_camel="no"
   4295     fi
   4296   fi
   4297   #
   4298   AC_MSG_CHECKING([if IoctlSocket might be used])
   4299   if test "$tst_links_ioctlsocket_camel" = "yes" &&
   4300      test "$tst_proto_ioctlsocket_camel" = "yes" &&
   4301      test "$tst_compi_ioctlsocket_camel" = "yes" &&
   4302      test "$tst_allow_ioctlsocket_camel" = "yes"; then
   4303     AC_MSG_RESULT([yes])
   4304     AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_CAMEL, 1,
   4305       [Define to 1 if you have the IoctlSocket camel case function.])
   4306     ac_cv_func_ioctlsocket_camel="yes"
   4307     CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO
   4308   else
   4309     AC_MSG_RESULT([no])
   4310     ac_cv_func_ioctlsocket_camel="no"
   4311   fi
   4312 ])
   4313 
   4314 
   4315 dnl CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO
   4316 dnl -------------------------------------------------
   4317 dnl Verify if IoctlSocket with FIONBIO command is available,
   4318 dnl can be compiled, and seems to work. If all of these are
   4319 dnl true, then HAVE_IOCTLSOCKET_CAMEL_FIONBIO will be defined.
   4320 
   4321 AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [
   4322   #
   4323   tst_compi_ioctlsocket_camel_fionbio="unknown"
   4324   tst_allow_ioctlsocket_camel_fionbio="unknown"
   4325   #
   4326   if test "$ac_cv_func_ioctlsocket_camel" = "yes"; then
   4327     AC_MSG_CHECKING([if IoctlSocket FIONBIO is compilable])
   4328     AC_COMPILE_IFELSE([
   4329       AC_LANG_PROGRAM([[
   4330         $curl_includes_stropts
   4331       ]],[[
   4332         long flags = 0;
   4333         if(0 != ioctlsocket(0, FIONBIO, &flags))
   4334           return 1;
   4335       ]])
   4336     ],[
   4337       AC_MSG_RESULT([yes])
   4338       tst_compi_ioctlsocket_camel_fionbio="yes"
   4339     ],[
   4340       AC_MSG_RESULT([no])
   4341       tst_compi_ioctlsocket_camel_fionbio="no"
   4342     ])
   4343   fi
   4344   #
   4345   if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes"; then
   4346     AC_MSG_CHECKING([if IoctlSocket FIONBIO usage allowed])
   4347     if test "x$curl_disallow_ioctlsocket_camel_fionbio" != "xyes"; then
   4348       AC_MSG_RESULT([yes])
   4349       tst_allow_ioctlsocket_camel_fionbio="yes"
   4350     else
   4351       AC_MSG_RESULT([no])
   4352       tst_allow_ioctlsocket_camel_fionbio="no"
   4353     fi
   4354   fi
   4355   #
   4356   AC_MSG_CHECKING([if IoctlSocket FIONBIO might be used])
   4357   if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes" &&
   4358      test "$tst_allow_ioctlsocket_camel_fionbio" = "yes"; then
   4359     AC_MSG_RESULT([yes])
   4360     AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_CAMEL_FIONBIO, 1,
   4361       [Define to 1 if you have a working IoctlSocket camel case FIONBIO function.])
   4362     ac_cv_func_ioctlsocket_camel_fionbio="yes"
   4363   else
   4364     AC_MSG_RESULT([no])
   4365     ac_cv_func_ioctlsocket_camel_fionbio="no"
   4366   fi
   4367 ])
   4368 
   4369 
   4370 dnl CURL_CHECK_FUNC_LISTXATTR
   4371 dnl -------------------------------------------------
   4372 dnl Verify if listxattr is available, prototyped, and
   4373 dnl can be compiled. If all of these are true, and
   4374 dnl usage has not been previously disallowed with
   4375 dnl shell variable curl_disallow_listxattr, then
   4376 dnl HAVE_LISTXATTR will be defined.
   4377 
   4378 AC_DEFUN([CURL_CHECK_FUNC_LISTXATTR], [
   4379   AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
   4380   #
   4381   tst_links_listxattr="unknown"
   4382   tst_proto_listxattr="unknown"
   4383   tst_compi_listxattr="unknown"
   4384   tst_allow_listxattr="unknown"
   4385   tst_nargs_listxattr="unknown"
   4386   #
   4387   AC_MSG_CHECKING([if listxattr can be linked])
   4388   AC_LINK_IFELSE([
   4389     AC_LANG_FUNC_LINK_TRY([listxattr])
   4390   ],[
   4391     AC_MSG_RESULT([yes])
   4392     tst_links_listxattr="yes"
   4393   ],[
   4394     AC_MSG_RESULT([no])
   4395     tst_links_listxattr="no"
   4396   ])
   4397   #
   4398   if test "$tst_links_listxattr" = "yes"; then
   4399     AC_MSG_CHECKING([if listxattr is prototyped])
   4400     AC_EGREP_CPP([listxattr],[
   4401       $curl_includes_sys_xattr
   4402     ],[
   4403       AC_MSG_RESULT([yes])
   4404       tst_proto_listxattr="yes"
   4405     ],[
   4406       AC_MSG_RESULT([no])
   4407       tst_proto_listxattr="no"
   4408     ])
   4409   fi
   4410   #
   4411   if test "$tst_proto_listxattr" = "yes"; then
   4412     if test "$tst_nargs_listxattr" = "unknown"; then
   4413       AC_MSG_CHECKING([if listxattr takes 3 args.])
   4414       AC_COMPILE_IFELSE([
   4415         AC_LANG_PROGRAM([[
   4416           $curl_includes_sys_xattr
   4417         ]],[[
   4418           if(0 != listxattr(0, 0, 0))
   4419             return 1;
   4420         ]])
   4421       ],[
   4422         AC_MSG_RESULT([yes])
   4423         tst_compi_listxattr="yes"
   4424         tst_nargs_listxattr="3"
   4425       ],[
   4426         AC_MSG_RESULT([no])
   4427         tst_compi_listxattr="no"
   4428       ])
   4429     fi
   4430     if test "$tst_nargs_listxattr" = "unknown"; then
   4431       AC_MSG_CHECKING([if listxattr takes 4 args.])
   4432       AC_COMPILE_IFELSE([
   4433         AC_LANG_PROGRAM([[
   4434           $curl_includes_sys_xattr
   4435         ]],[[
   4436           if(0 != listxattr(0, 0, 0, 0))
   4437             return 1;
   4438         ]])
   4439       ],[
   4440         AC_MSG_RESULT([yes])
   4441         tst_compi_listxattr="yes"
   4442         tst_nargs_listxattr="4"
   4443       ],[
   4444         AC_MSG_RESULT([no])
   4445         tst_compi_listxattr="no"
   4446       ])
   4447     fi
   4448     AC_MSG_CHECKING([if listxattr is compilable])
   4449     if test "$tst_compi_listxattr" = "yes"; then
   4450       AC_MSG_RESULT([yes])
   4451     else
   4452       AC_MSG_RESULT([no])
   4453     fi
   4454   fi
   4455   #
   4456   if test "$tst_compi_listxattr" = "yes"; then
   4457     AC_MSG_CHECKING([if listxattr usage allowed])
   4458     if test "x$curl_disallow_listxattr" != "xyes"; then
   4459       AC_MSG_RESULT([yes])
   4460       tst_allow_listxattr="yes"
   4461     else
   4462       AC_MSG_RESULT([no])
   4463       tst_allow_listxattr="no"
   4464     fi
   4465   fi
   4466   #
   4467   AC_MSG_CHECKING([if listxattr might be used])
   4468   if test "$tst_links_listxattr" = "yes" &&
   4469      test "$tst_proto_listxattr" = "yes" &&
   4470      test "$tst_compi_listxattr" = "yes" &&
   4471      test "$tst_allow_listxattr" = "yes"; then
   4472     AC_MSG_RESULT([yes])
   4473     AC_DEFINE_UNQUOTED(HAVE_LISTXATTR, 1,
   4474       [Define to 1 if you have the listxattr function.])
   4475     dnl AC_DEFINE_UNQUOTED(LISTXATTR_ARGS, $tst_nargs_listxattr,
   4476     dnl   [Specifies the number of arguments to listxattr])
   4477     #
   4478     if test "$tst_nargs_listxattr" -eq "3"; then
   4479       AC_DEFINE(HAVE_LISTXATTR_3, 1, [listxattr() takes 3 args])
   4480     elif test "$tst_nargs_listxattr" -eq "4"; then
   4481       AC_DEFINE(HAVE_LISTXATTR_4, 1, [listxattr() takes 4 args])
   4482     fi
   4483     #
   4484     ac_cv_func_listxattr="yes"
   4485   else
   4486     AC_MSG_RESULT([no])
   4487     ac_cv_func_listxattr="no"
   4488   fi
   4489 ])
   4490 
   4491 
   4492 dnl CURL_CHECK_FUNC_LOCALTIME_R
   4493 dnl -------------------------------------------------
   4494 dnl Verify if localtime_r is available, prototyped, can
   4495 dnl be compiled and seems to work. If all of these are
   4496 dnl true, and usage has not been previously disallowed
   4497 dnl with shell variable curl_disallow_localtime_r, then
   4498 dnl HAVE_LOCALTIME_R will be defined.
   4499 
   4500 AC_DEFUN([CURL_CHECK_FUNC_LOCALTIME_R], [
   4501   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   4502   AC_REQUIRE([CURL_INCLUDES_TIME])dnl
   4503   #
   4504   tst_links_localtime_r="unknown"
   4505   tst_proto_localtime_r="unknown"
   4506   tst_compi_localtime_r="unknown"
   4507   tst_works_localtime_r="unknown"
   4508   tst_allow_localtime_r="unknown"
   4509   #
   4510   AC_MSG_CHECKING([if localtime_r can be linked])
   4511   AC_LINK_IFELSE([
   4512     AC_LANG_FUNC_LINK_TRY([localtime_r])
   4513   ],[
   4514     AC_MSG_RESULT([yes])
   4515     tst_links_localtime_r="yes"
   4516   ],[
   4517     AC_MSG_RESULT([no])
   4518     tst_links_localtime_r="no"
   4519   ])
   4520   #
   4521   if test "$tst_links_localtime_r" = "yes"; then
   4522     AC_MSG_CHECKING([if localtime_r is prototyped])
   4523     AC_EGREP_CPP([localtime_r],[
   4524       $curl_includes_time
   4525     ],[
   4526       AC_MSG_RESULT([yes])
   4527       tst_proto_localtime_r="yes"
   4528     ],[
   4529       AC_MSG_RESULT([no])
   4530       tst_proto_localtime_r="no"
   4531     ])
   4532   fi
   4533   #
   4534   if test "$tst_proto_localtime_r" = "yes"; then
   4535     AC_MSG_CHECKING([if localtime_r is compilable])
   4536     AC_COMPILE_IFELSE([
   4537       AC_LANG_PROGRAM([[
   4538         $curl_includes_time
   4539       ]],[[
   4540         if(0 != localtime_r(0, 0))
   4541           return 1;
   4542       ]])
   4543     ],[
   4544       AC_MSG_RESULT([yes])
   4545       tst_compi_localtime_r="yes"
   4546     ],[
   4547       AC_MSG_RESULT([no])
   4548       tst_compi_localtime_r="no"
   4549     ])
   4550   fi
   4551   #
   4552   dnl only do runtime verification when not cross-compiling
   4553   if test "x$cross_compiling" != "xyes" &&
   4554     test "$tst_compi_localtime_r" = "yes"; then
   4555     AC_MSG_CHECKING([if localtime_r seems to work])
   4556     AC_RUN_IFELSE([
   4557       AC_LANG_PROGRAM([[
   4558         $curl_includes_stdlib
   4559         $curl_includes_time
   4560       ]],[[
   4561         time_t clock = 1170352587;
   4562         struct tm *tmp = 0;
   4563         struct tm result;
   4564         tmp = localtime_r(&clock, &result);
   4565         if(tmp)
   4566           exit(0);
   4567         else
   4568           exit(1);
   4569       ]])
   4570     ],[
   4571       AC_MSG_RESULT([yes])
   4572       tst_works_localtime_r="yes"
   4573     ],[
   4574       AC_MSG_RESULT([no])
   4575       tst_works_localtime_r="no"
   4576     ])
   4577   fi
   4578   #
   4579   if test "$tst_compi_localtime_r" = "yes" &&
   4580     test "$tst_works_localtime_r" != "no"; then
   4581     AC_MSG_CHECKING([if localtime_r usage allowed])
   4582     if test "x$curl_disallow_localtime_r" != "xyes"; then
   4583       AC_MSG_RESULT([yes])
   4584       tst_allow_localtime_r="yes"
   4585     else
   4586       AC_MSG_RESULT([no])
   4587       tst_allow_localtime_r="no"
   4588     fi
   4589   fi
   4590   #
   4591   AC_MSG_CHECKING([if localtime_r might be used])
   4592   if test "$tst_links_localtime_r" = "yes" &&
   4593      test "$tst_proto_localtime_r" = "yes" &&
   4594      test "$tst_compi_localtime_r" = "yes" &&
   4595      test "$tst_allow_localtime_r" = "yes" &&
   4596      test "$tst_works_localtime_r" != "no"; then
   4597     AC_MSG_RESULT([yes])
   4598     AC_DEFINE_UNQUOTED(HAVE_LOCALTIME_R, 1,
   4599       [Define to 1 if you have a working localtime_r function.])
   4600     ac_cv_func_localtime_r="yes"
   4601   else
   4602     AC_MSG_RESULT([no])
   4603     ac_cv_func_localtime_r="no"
   4604   fi
   4605 ])
   4606 
   4607 
   4608 dnl CURL_CHECK_FUNC_MEMRCHR
   4609 dnl -------------------------------------------------
   4610 dnl Verify if memrchr is available, prototyped, and
   4611 dnl can be compiled. If all of these are true, and
   4612 dnl usage has not been previously disallowed with
   4613 dnl shell variable curl_disallow_memrchr, then
   4614 dnl HAVE_MEMRCHR will be defined.
   4615 
   4616 AC_DEFUN([CURL_CHECK_FUNC_MEMRCHR], [
   4617   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   4618   #
   4619   tst_links_memrchr="unknown"
   4620   tst_macro_memrchr="unknown"
   4621   tst_proto_memrchr="unknown"
   4622   tst_compi_memrchr="unknown"
   4623   tst_allow_memrchr="unknown"
   4624   #
   4625   AC_MSG_CHECKING([if memrchr can be linked])
   4626   AC_LINK_IFELSE([
   4627     AC_LANG_FUNC_LINK_TRY([memrchr])
   4628   ],[
   4629     AC_MSG_RESULT([yes])
   4630     tst_links_memrchr="yes"
   4631   ],[
   4632     AC_MSG_RESULT([no])
   4633     tst_links_memrchr="no"
   4634   ])
   4635   #
   4636   if test "$tst_links_memrchr" = "no"; then
   4637     AC_MSG_CHECKING([if memrchr seems a macro])
   4638     AC_LINK_IFELSE([
   4639       AC_LANG_PROGRAM([[
   4640         $curl_includes_string
   4641       ]],[[
   4642         if(0 != memrchr(0, 0, 0))
   4643           return 1;
   4644       ]])
   4645     ],[
   4646       AC_MSG_RESULT([yes])
   4647       tst_macro_memrchr="yes"
   4648     ],[
   4649       AC_MSG_RESULT([no])
   4650       tst_macro_memrchr="no"
   4651     ])
   4652   fi
   4653   #
   4654   if test "$tst_links_memrchr" = "yes"; then
   4655     AC_MSG_CHECKING([if memrchr is prototyped])
   4656     AC_EGREP_CPP([memrchr],[
   4657       $curl_includes_string
   4658     ],[
   4659       AC_MSG_RESULT([yes])
   4660       tst_proto_memrchr="yes"
   4661     ],[
   4662       AC_MSG_RESULT([no])
   4663       tst_proto_memrchr="no"
   4664     ])
   4665   fi
   4666   #
   4667   if test "$tst_proto_memrchr" = "yes" ||
   4668      test "$tst_macro_memrchr" = "yes"; then
   4669     AC_MSG_CHECKING([if memrchr is compilable])
   4670     AC_COMPILE_IFELSE([
   4671       AC_LANG_PROGRAM([[
   4672         $curl_includes_string
   4673       ]],[[
   4674         if(0 != memrchr(0, 0, 0))
   4675           return 1;
   4676       ]])
   4677     ],[
   4678       AC_MSG_RESULT([yes])
   4679       tst_compi_memrchr="yes"
   4680     ],[
   4681       AC_MSG_RESULT([no])
   4682       tst_compi_memrchr="no"
   4683     ])
   4684   fi
   4685   #
   4686   if test "$tst_compi_memrchr" = "yes"; then
   4687     AC_MSG_CHECKING([if memrchr usage allowed])
   4688     if test "x$curl_disallow_memrchr" != "xyes"; then
   4689       AC_MSG_RESULT([yes])
   4690       tst_allow_memrchr="yes"
   4691     else
   4692       AC_MSG_RESULT([no])
   4693       tst_allow_memrchr="no"
   4694     fi
   4695   fi
   4696   #
   4697   AC_MSG_CHECKING([if memrchr might be used])
   4698   if (test "$tst_proto_memrchr" = "yes" ||
   4699       test "$tst_macro_memrchr" = "yes") &&
   4700      test "$tst_compi_memrchr" = "yes" &&
   4701      test "$tst_allow_memrchr" = "yes"; then
   4702     AC_MSG_RESULT([yes])
   4703     AC_DEFINE_UNQUOTED(HAVE_MEMRCHR, 1,
   4704       [Define to 1 if you have the memrchr function or macro.])
   4705     ac_cv_func_memrchr="yes"
   4706   else
   4707     AC_MSG_RESULT([no])
   4708     ac_cv_func_memrchr="no"
   4709   fi
   4710 ])
   4711 
   4712 
   4713 dnl CURL_CHECK_FUNC_POLL
   4714 dnl -------------------------------------------------
   4715 dnl Verify if poll is available, prototyped, can
   4716 dnl be compiled and seems to work. If all of these are
   4717 dnl true, and usage has not been previously disallowed
   4718 dnl with shell variable curl_disallow_poll, then
   4719 dnl HAVE_POLL will be defined.
   4720 
   4721 AC_DEFUN([CURL_CHECK_FUNC_POLL], [
   4722   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   4723   AC_REQUIRE([CURL_INCLUDES_POLL])dnl
   4724   #
   4725   tst_links_poll="unknown"
   4726   tst_proto_poll="unknown"
   4727   tst_compi_poll="unknown"
   4728   tst_works_poll="unknown"
   4729   tst_allow_poll="unknown"
   4730   #
   4731   case $host_os in
   4732     darwin[[123456789]].*|darwin10.*|darwin11.*|darwin12.*|interix*)
   4733       dnl poll() does not work on these platforms
   4734       dnl Interix: "does provide poll(), but the implementing developer must
   4735       dnl have been in a bad mood, because poll() only works on the /proc
   4736       dnl filesystem here"
   4737       curl_disallow_poll="yes"
   4738       ;;
   4739   esac
   4740   #
   4741   AC_MSG_CHECKING([if poll can be linked])
   4742   AC_LINK_IFELSE([
   4743     AC_LANG_PROGRAM([[
   4744       $curl_includes_poll
   4745     ]],[[
   4746       if(0 != poll(0, 0, 0))
   4747         return 1;
   4748     ]])
   4749   ],[
   4750     AC_MSG_RESULT([yes])
   4751     tst_links_poll="yes"
   4752   ],[
   4753     AC_MSG_RESULT([no])
   4754     tst_links_poll="no"
   4755   ])
   4756   #
   4757   if test "$tst_links_poll" = "yes"; then
   4758     AC_MSG_CHECKING([if poll is prototyped])
   4759     AC_EGREP_CPP([poll],[
   4760       $curl_includes_poll
   4761     ],[
   4762       AC_MSG_RESULT([yes])
   4763       tst_proto_poll="yes"
   4764     ],[
   4765       AC_MSG_RESULT([no])
   4766       tst_proto_poll="no"
   4767     ])
   4768   fi
   4769   #
   4770   if test "$tst_proto_poll" = "yes"; then
   4771     AC_MSG_CHECKING([if poll is compilable])
   4772     AC_COMPILE_IFELSE([
   4773       AC_LANG_PROGRAM([[
   4774         $curl_includes_poll
   4775       ]],[[
   4776         if(0 != poll(0, 0, 0))
   4777           return 1;
   4778       ]])
   4779     ],[
   4780       AC_MSG_RESULT([yes])
   4781       tst_compi_poll="yes"
   4782     ],[
   4783       AC_MSG_RESULT([no])
   4784       tst_compi_poll="no"
   4785     ])
   4786   fi
   4787   #
   4788   dnl only do runtime verification when not cross-compiling
   4789   if test "x$cross_compiling" != "xyes" &&
   4790     test "$tst_compi_poll" = "yes"; then
   4791     AC_MSG_CHECKING([if poll seems to work])
   4792     AC_RUN_IFELSE([
   4793       AC_LANG_PROGRAM([[
   4794         $curl_includes_stdlib
   4795         $curl_includes_poll
   4796       ]],[[
   4797         if(0 != poll(0, 0, 10))
   4798           exit(1); /* fail */
   4799         else
   4800           exit(0);
   4801       ]])
   4802     ],[
   4803       AC_MSG_RESULT([yes])
   4804       tst_works_poll="yes"
   4805     ],[
   4806       AC_MSG_RESULT([no])
   4807       tst_works_poll="no"
   4808     ])
   4809   fi
   4810   #
   4811   if test "$tst_compi_poll" = "yes" &&
   4812     test "$tst_works_poll" != "no"; then
   4813     AC_MSG_CHECKING([if poll usage allowed])
   4814     if test "x$curl_disallow_poll" != "xyes"; then
   4815       AC_MSG_RESULT([yes])
   4816       tst_allow_poll="yes"
   4817     else
   4818       AC_MSG_RESULT([no])
   4819       tst_allow_poll="no"
   4820     fi
   4821   fi
   4822   #
   4823   AC_MSG_CHECKING([if poll might be used])
   4824   if test "$tst_links_poll" = "yes" &&
   4825      test "$tst_proto_poll" = "yes" &&
   4826      test "$tst_compi_poll" = "yes" &&
   4827      test "$tst_allow_poll" = "yes" &&
   4828      test "$tst_works_poll" != "no"; then
   4829     AC_MSG_RESULT([yes])
   4830     AC_DEFINE_UNQUOTED(HAVE_POLL, 1,
   4831       [Define to 1 if you have a working poll function.])
   4832     AC_DEFINE_UNQUOTED(HAVE_POLL_FINE, 1,
   4833       [If you have a fine poll])
   4834     ac_cv_func_poll="yes"
   4835   else
   4836     AC_MSG_RESULT([no])
   4837     ac_cv_func_poll="no"
   4838   fi
   4839 ])
   4840 
   4841 
   4842 dnl CURL_CHECK_FUNC_REMOVEXATTR
   4843 dnl -------------------------------------------------
   4844 dnl Verify if removexattr is available, prototyped, and
   4845 dnl can be compiled. If all of these are true, and
   4846 dnl usage has not been previously disallowed with
   4847 dnl shell variable curl_disallow_removexattr, then
   4848 dnl HAVE_REMOVEXATTR will be defined.
   4849 
   4850 AC_DEFUN([CURL_CHECK_FUNC_REMOVEXATTR], [
   4851   AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
   4852   #
   4853   tst_links_removexattr="unknown"
   4854   tst_proto_removexattr="unknown"
   4855   tst_compi_removexattr="unknown"
   4856   tst_allow_removexattr="unknown"
   4857   tst_nargs_removexattr="unknown"
   4858   #
   4859   AC_MSG_CHECKING([if removexattr can be linked])
   4860   AC_LINK_IFELSE([
   4861     AC_LANG_FUNC_LINK_TRY([removexattr])
   4862   ],[
   4863     AC_MSG_RESULT([yes])
   4864     tst_links_removexattr="yes"
   4865   ],[
   4866     AC_MSG_RESULT([no])
   4867     tst_links_removexattr="no"
   4868   ])
   4869   #
   4870   if test "$tst_links_removexattr" = "yes"; then
   4871     AC_MSG_CHECKING([if removexattr is prototyped])
   4872     AC_EGREP_CPP([removexattr],[
   4873       $curl_includes_sys_xattr
   4874     ],[
   4875       AC_MSG_RESULT([yes])
   4876       tst_proto_removexattr="yes"
   4877     ],[
   4878       AC_MSG_RESULT([no])
   4879       tst_proto_removexattr="no"
   4880     ])
   4881   fi
   4882   #
   4883   if test "$tst_proto_removexattr" = "yes"; then
   4884     if test "$tst_nargs_removexattr" = "unknown"; then
   4885       AC_MSG_CHECKING([if removexattr takes 2 args.])
   4886       AC_COMPILE_IFELSE([
   4887         AC_LANG_PROGRAM([[
   4888           $curl_includes_sys_xattr
   4889         ]],[[
   4890           if(0 != removexattr(0, 0))
   4891             return 1;
   4892         ]])
   4893       ],[
   4894         AC_MSG_RESULT([yes])
   4895         tst_compi_removexattr="yes"
   4896         tst_nargs_removexattr="2"
   4897       ],[
   4898         AC_MSG_RESULT([no])
   4899         tst_compi_removexattr="no"
   4900       ])
   4901     fi
   4902     if test "$tst_nargs_removexattr" = "unknown"; then
   4903       AC_MSG_CHECKING([if removexattr takes 3 args.])
   4904       AC_COMPILE_IFELSE([
   4905         AC_LANG_PROGRAM([[
   4906           $curl_includes_sys_xattr
   4907         ]],[[
   4908           if(0 != removexattr(0, 0, 0))
   4909             return 1;
   4910         ]])
   4911       ],[
   4912         AC_MSG_RESULT([yes])
   4913         tst_compi_removexattr="yes"
   4914         tst_nargs_removexattr="3"
   4915       ],[
   4916         AC_MSG_RESULT([no])
   4917         tst_compi_removexattr="no"
   4918       ])
   4919     fi
   4920     AC_MSG_CHECKING([if removexattr is compilable])
   4921     if test "$tst_compi_removexattr" = "yes"; then
   4922       AC_MSG_RESULT([yes])
   4923     else
   4924       AC_MSG_RESULT([no])
   4925     fi
   4926   fi
   4927   #
   4928   if test "$tst_compi_removexattr" = "yes"; then
   4929     AC_MSG_CHECKING([if removexattr usage allowed])
   4930     if test "x$curl_disallow_removexattr" != "xyes"; then
   4931       AC_MSG_RESULT([yes])
   4932       tst_allow_removexattr="yes"
   4933     else
   4934       AC_MSG_RESULT([no])
   4935       tst_allow_removexattr="no"
   4936     fi
   4937   fi
   4938   #
   4939   AC_MSG_CHECKING([if removexattr might be used])
   4940   if test "$tst_links_removexattr" = "yes" &&
   4941      test "$tst_proto_removexattr" = "yes" &&
   4942      test "$tst_compi_removexattr" = "yes" &&
   4943      test "$tst_allow_removexattr" = "yes"; then
   4944     AC_MSG_RESULT([yes])
   4945     AC_DEFINE_UNQUOTED(HAVE_REMOVEXATTR, 1,
   4946       [Define to 1 if you have the removexattr function.])
   4947     dnl AC_DEFINE_UNQUOTED(REMOVEXATTR_ARGS, $tst_nargs_removexattr,
   4948     dnl   [Specifies the number of arguments to removexattr])
   4949     #
   4950     if test "$tst_nargs_removexattr" -eq "2"; then
   4951       AC_DEFINE(HAVE_REMOVEXATTR_2, 1, [removexattr() takes 2 args])
   4952     elif test "$tst_nargs_removexattr" -eq "3"; then
   4953       AC_DEFINE(HAVE_REMOVEXATTR_3, 1, [removexattr() takes 3 args])
   4954     fi
   4955     #
   4956     ac_cv_func_removexattr="yes"
   4957   else
   4958     AC_MSG_RESULT([no])
   4959     ac_cv_func_removexattr="no"
   4960   fi
   4961 ])
   4962 
   4963 
   4964 dnl CURL_CHECK_FUNC_SETSOCKOPT
   4965 dnl -------------------------------------------------
   4966 dnl Verify if setsockopt is available, prototyped, and
   4967 dnl can be compiled. If all of these are true, and
   4968 dnl usage has not been previously disallowed with
   4969 dnl shell variable curl_disallow_setsockopt, then
   4970 dnl HAVE_SETSOCKOPT will be defined.
   4971 
   4972 AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT], [
   4973   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   4974   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
   4975   #
   4976   tst_links_setsockopt="unknown"
   4977   tst_proto_setsockopt="unknown"
   4978   tst_compi_setsockopt="unknown"
   4979   tst_allow_setsockopt="unknown"
   4980   #
   4981   AC_MSG_CHECKING([if setsockopt can be linked])
   4982   AC_LINK_IFELSE([
   4983     AC_LANG_PROGRAM([[
   4984       $curl_includes_winsock2
   4985       $curl_includes_sys_socket
   4986     ]],[[
   4987       if(0 != setsockopt(0, 0, 0, 0, 0))
   4988         return 1;
   4989     ]])
   4990   ],[
   4991     AC_MSG_RESULT([yes])
   4992     tst_links_setsockopt="yes"
   4993   ],[
   4994     AC_MSG_RESULT([no])
   4995     tst_links_setsockopt="no"
   4996   ])
   4997   #
   4998   if test "$tst_links_setsockopt" = "yes"; then
   4999     AC_MSG_CHECKING([if setsockopt is prototyped])
   5000     AC_EGREP_CPP([setsockopt],[
   5001       $curl_includes_winsock2
   5002       $curl_includes_sys_socket
   5003     ],[
   5004       AC_MSG_RESULT([yes])
   5005       tst_proto_setsockopt="yes"
   5006     ],[
   5007       AC_MSG_RESULT([no])
   5008       tst_proto_setsockopt="no"
   5009     ])
   5010   fi
   5011   #
   5012   if test "$tst_proto_setsockopt" = "yes"; then
   5013     AC_MSG_CHECKING([if setsockopt is compilable])
   5014     AC_COMPILE_IFELSE([
   5015       AC_LANG_PROGRAM([[
   5016         $curl_includes_winsock2
   5017         $curl_includes_sys_socket
   5018       ]],[[
   5019         if(0 != setsockopt(0, 0, 0, 0, 0))
   5020           return 1;
   5021       ]])
   5022     ],[
   5023       AC_MSG_RESULT([yes])
   5024       tst_compi_setsockopt="yes"
   5025     ],[
   5026       AC_MSG_RESULT([no])
   5027       tst_compi_setsockopt="no"
   5028     ])
   5029   fi
   5030   #
   5031   if test "$tst_compi_setsockopt" = "yes"; then
   5032     AC_MSG_CHECKING([if setsockopt usage allowed])
   5033     if test "x$curl_disallow_setsockopt" != "xyes"; then
   5034       AC_MSG_RESULT([yes])
   5035       tst_allow_setsockopt="yes"
   5036     else
   5037       AC_MSG_RESULT([no])
   5038       tst_allow_setsockopt="no"
   5039     fi
   5040   fi
   5041   #
   5042   AC_MSG_CHECKING([if setsockopt might be used])
   5043   if test "$tst_links_setsockopt" = "yes" &&
   5044      test "$tst_proto_setsockopt" = "yes" &&
   5045      test "$tst_compi_setsockopt" = "yes" &&
   5046      test "$tst_allow_setsockopt" = "yes"; then
   5047     AC_MSG_RESULT([yes])
   5048     AC_DEFINE_UNQUOTED(HAVE_SETSOCKOPT, 1,
   5049       [Define to 1 if you have the setsockopt function.])
   5050     ac_cv_func_setsockopt="yes"
   5051     CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
   5052   else
   5053     AC_MSG_RESULT([no])
   5054     ac_cv_func_setsockopt="no"
   5055   fi
   5056 ])
   5057 
   5058 
   5059 dnl CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
   5060 dnl -------------------------------------------------
   5061 dnl Verify if setsockopt with the SO_NONBLOCK command is
   5062 dnl available, can be compiled, and seems to work. If
   5063 dnl all of these are true, then HAVE_SETSOCKOPT_SO_NONBLOCK
   5064 dnl will be defined.
   5065 
   5066 AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK], [
   5067   #
   5068   tst_compi_setsockopt_so_nonblock="unknown"
   5069   tst_allow_setsockopt_so_nonblock="unknown"
   5070   #
   5071   if test "$ac_cv_func_setsockopt" = "yes"; then
   5072     AC_MSG_CHECKING([if setsockopt SO_NONBLOCK is compilable])
   5073     AC_COMPILE_IFELSE([
   5074       AC_LANG_PROGRAM([[
   5075         $curl_includes_winsock2
   5076         $curl_includes_sys_socket
   5077       ]],[[
   5078         if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
   5079           return 1;
   5080       ]])
   5081     ],[
   5082       AC_MSG_RESULT([yes])
   5083       tst_compi_setsockopt_so_nonblock="yes"
   5084     ],[
   5085       AC_MSG_RESULT([no])
   5086       tst_compi_setsockopt_so_nonblock="no"
   5087     ])
   5088   fi
   5089   #
   5090   if test "$tst_compi_setsockopt_so_nonblock" = "yes"; then
   5091     AC_MSG_CHECKING([if setsockopt SO_NONBLOCK usage allowed])
   5092     if test "x$curl_disallow_setsockopt_so_nonblock" != "xyes"; then
   5093       AC_MSG_RESULT([yes])
   5094       tst_allow_setsockopt_so_nonblock="yes"
   5095     else
   5096       AC_MSG_RESULT([no])
   5097       tst_allow_setsockopt_so_nonblock="no"
   5098     fi
   5099   fi
   5100   #
   5101   AC_MSG_CHECKING([if setsockopt SO_NONBLOCK might be used])
   5102   if test "$tst_compi_setsockopt_so_nonblock" = "yes" &&
   5103      test "$tst_allow_setsockopt_so_nonblock" = "yes"; then
   5104     AC_MSG_RESULT([yes])
   5105     AC_DEFINE_UNQUOTED(HAVE_SETSOCKOPT_SO_NONBLOCK, 1,
   5106       [Define to 1 if you have a working setsockopt SO_NONBLOCK function.])
   5107     ac_cv_func_setsockopt_so_nonblock="yes"
   5108   else
   5109     AC_MSG_RESULT([no])
   5110     ac_cv_func_setsockopt_so_nonblock="no"
   5111   fi
   5112 ])
   5113 
   5114 
   5115 dnl CURL_CHECK_FUNC_SETXATTR
   5116 dnl -------------------------------------------------
   5117 dnl Verify if setxattr is available, prototyped, and
   5118 dnl can be compiled. If all of these are true, and
   5119 dnl usage has not been previously disallowed with
   5120 dnl shell variable curl_disallow_setxattr, then
   5121 dnl HAVE_SETXATTR will be defined.
   5122 
   5123 AC_DEFUN([CURL_CHECK_FUNC_SETXATTR], [
   5124   AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
   5125   #
   5126   tst_links_setxattr="unknown"
   5127   tst_proto_setxattr="unknown"
   5128   tst_compi_setxattr="unknown"
   5129   tst_allow_setxattr="unknown"
   5130   tst_nargs_setxattr="unknown"
   5131   #
   5132   AC_MSG_CHECKING([if setxattr can be linked])
   5133   AC_LINK_IFELSE([
   5134     AC_LANG_FUNC_LINK_TRY([setxattr])
   5135   ],[
   5136     AC_MSG_RESULT([yes])
   5137     tst_links_setxattr="yes"
   5138   ],[
   5139     AC_MSG_RESULT([no])
   5140     tst_links_setxattr="no"
   5141   ])
   5142   #
   5143   if test "$tst_links_setxattr" = "yes"; then
   5144     AC_MSG_CHECKING([if setxattr is prototyped])
   5145     AC_EGREP_CPP([setxattr],[
   5146       $curl_includes_sys_xattr
   5147     ],[
   5148       AC_MSG_RESULT([yes])
   5149       tst_proto_setxattr="yes"
   5150     ],[
   5151       AC_MSG_RESULT([no])
   5152       tst_proto_setxattr="no"
   5153     ])
   5154   fi
   5155   #
   5156   if test "$tst_proto_setxattr" = "yes"; then
   5157     if test "$tst_nargs_setxattr" = "unknown"; then
   5158       AC_MSG_CHECKING([if setxattr takes 5 args.])
   5159       AC_COMPILE_IFELSE([
   5160         AC_LANG_PROGRAM([[
   5161           $curl_includes_sys_xattr
   5162         ]],[[
   5163           if(0 != setxattr(0, 0, 0, 0, 0))
   5164             return 1;
   5165         ]])
   5166       ],[
   5167         AC_MSG_RESULT([yes])
   5168         tst_compi_setxattr="yes"
   5169         tst_nargs_setxattr="5"
   5170       ],[
   5171         AC_MSG_RESULT([no])
   5172         tst_compi_setxattr="no"
   5173       ])
   5174     fi
   5175     if test "$tst_nargs_setxattr" = "unknown"; then
   5176       AC_MSG_CHECKING([if setxattr takes 6 args.])
   5177       AC_COMPILE_IFELSE([
   5178         AC_LANG_PROGRAM([[
   5179           $curl_includes_sys_xattr
   5180         ]],[[
   5181           if(0 != setxattr(0, 0, 0, 0, 0, 0))
   5182             return 1;
   5183         ]])
   5184       ],[
   5185         AC_MSG_RESULT([yes])
   5186         tst_compi_setxattr="yes"
   5187         tst_nargs_setxattr="6"
   5188       ],[
   5189         AC_MSG_RESULT([no])
   5190         tst_compi_setxattr="no"
   5191       ])
   5192     fi
   5193     AC_MSG_CHECKING([if setxattr is compilable])
   5194     if test "$tst_compi_setxattr" = "yes"; then
   5195       AC_MSG_RESULT([yes])
   5196     else
   5197       AC_MSG_RESULT([no])
   5198     fi
   5199   fi
   5200   #
   5201   if test "$tst_compi_setxattr" = "yes"; then
   5202     AC_MSG_CHECKING([if setxattr usage allowed])
   5203     if test "x$curl_disallow_setxattr" != "xyes"; then
   5204       AC_MSG_RESULT([yes])
   5205       tst_allow_setxattr="yes"
   5206     else
   5207       AC_MSG_RESULT([no])
   5208       tst_allow_setxattr="no"
   5209     fi
   5210   fi
   5211   #
   5212   AC_MSG_CHECKING([if setxattr might be used])
   5213   if test "$tst_links_setxattr" = "yes" &&
   5214      test "$tst_proto_setxattr" = "yes" &&
   5215      test "$tst_compi_setxattr" = "yes" &&
   5216      test "$tst_allow_setxattr" = "yes"; then
   5217     AC_MSG_RESULT([yes])
   5218     AC_DEFINE_UNQUOTED(HAVE_SETXATTR, 1,
   5219       [Define to 1 if you have the setxattr function.])
   5220     dnl AC_DEFINE_UNQUOTED(SETXATTR_ARGS, $tst_nargs_setxattr,
   5221     dnl   [Specifies the number of arguments to setxattr])
   5222     #
   5223     if test "$tst_nargs_setxattr" -eq "5"; then
   5224       AC_DEFINE(HAVE_SETXATTR_5, 1, [setxattr() takes 5 args])
   5225     elif test "$tst_nargs_setxattr" -eq "6"; then
   5226       AC_DEFINE(HAVE_SETXATTR_6, 1, [setxattr() takes 6 args])
   5227     fi
   5228     #
   5229     ac_cv_func_setxattr="yes"
   5230   else
   5231     AC_MSG_RESULT([no])
   5232     ac_cv_func_setxattr="no"
   5233   fi
   5234 ])
   5235 
   5236 
   5237 dnl CURL_CHECK_FUNC_SIGACTION
   5238 dnl -------------------------------------------------
   5239 dnl Verify if sigaction is available, prototyped, and
   5240 dnl can be compiled. If all of these are true, and
   5241 dnl usage has not been previously disallowed with
   5242 dnl shell variable curl_disallow_sigaction, then
   5243 dnl HAVE_SIGACTION will be defined.
   5244 
   5245 AC_DEFUN([CURL_CHECK_FUNC_SIGACTION], [
   5246   AC_REQUIRE([CURL_INCLUDES_SIGNAL])dnl
   5247   #
   5248   tst_links_sigaction="unknown"
   5249   tst_proto_sigaction="unknown"
   5250   tst_compi_sigaction="unknown"
   5251   tst_allow_sigaction="unknown"
   5252   #
   5253   AC_MSG_CHECKING([if sigaction can be linked])
   5254   AC_LINK_IFELSE([
   5255     AC_LANG_FUNC_LINK_TRY([sigaction])
   5256   ],[
   5257     AC_MSG_RESULT([yes])
   5258     tst_links_sigaction="yes"
   5259   ],[
   5260     AC_MSG_RESULT([no])
   5261     tst_links_sigaction="no"
   5262   ])
   5263   #
   5264   if test "$tst_links_sigaction" = "yes"; then
   5265     AC_MSG_CHECKING([if sigaction is prototyped])
   5266     AC_EGREP_CPP([sigaction],[
   5267       $curl_includes_signal
   5268     ],[
   5269       AC_MSG_RESULT([yes])
   5270       tst_proto_sigaction="yes"
   5271     ],[
   5272       AC_MSG_RESULT([no])
   5273       tst_proto_sigaction="no"
   5274     ])
   5275   fi
   5276   #
   5277   if test "$tst_proto_sigaction" = "yes"; then
   5278     AC_MSG_CHECKING([if sigaction is compilable])
   5279     AC_COMPILE_IFELSE([
   5280       AC_LANG_PROGRAM([[
   5281         $curl_includes_signal
   5282       ]],[[
   5283         if(0 != sigaction(0, 0, 0))
   5284           return 1;
   5285       ]])
   5286     ],[
   5287       AC_MSG_RESULT([yes])
   5288       tst_compi_sigaction="yes"
   5289     ],[
   5290       AC_MSG_RESULT([no])
   5291       tst_compi_sigaction="no"
   5292     ])
   5293   fi
   5294   #
   5295   if test "$tst_compi_sigaction" = "yes"; then
   5296     AC_MSG_CHECKING([if sigaction usage allowed])
   5297     if test "x$curl_disallow_sigaction" != "xyes"; then
   5298       AC_MSG_RESULT([yes])
   5299       tst_allow_sigaction="yes"
   5300     else
   5301       AC_MSG_RESULT([no])
   5302       tst_allow_sigaction="no"
   5303     fi
   5304   fi
   5305   #
   5306   AC_MSG_CHECKING([if sigaction might be used])
   5307   if test "$tst_links_sigaction" = "yes" &&
   5308      test "$tst_proto_sigaction" = "yes" &&
   5309      test "$tst_compi_sigaction" = "yes" &&
   5310      test "$tst_allow_sigaction" = "yes"; then
   5311     AC_MSG_RESULT([yes])
   5312     AC_DEFINE_UNQUOTED(HAVE_SIGACTION, 1,
   5313       [Define to 1 if you have the sigaction function.])
   5314     ac_cv_func_sigaction="yes"
   5315   else
   5316     AC_MSG_RESULT([no])
   5317     ac_cv_func_sigaction="no"
   5318   fi
   5319 ])
   5320 
   5321 
   5322 dnl CURL_CHECK_FUNC_SIGINTERRUPT
   5323 dnl -------------------------------------------------
   5324 dnl Verify if siginterrupt is available, prototyped, and
   5325 dnl can be compiled. If all of these are true, and
   5326 dnl usage has not been previously disallowed with
   5327 dnl shell variable curl_disallow_siginterrupt, then
   5328 dnl HAVE_SIGINTERRUPT will be defined.
   5329 
   5330 AC_DEFUN([CURL_CHECK_FUNC_SIGINTERRUPT], [
   5331   AC_REQUIRE([CURL_INCLUDES_SIGNAL])dnl
   5332   #
   5333   tst_links_siginterrupt="unknown"
   5334   tst_proto_siginterrupt="unknown"
   5335   tst_compi_siginterrupt="unknown"
   5336   tst_allow_siginterrupt="unknown"
   5337   #
   5338   AC_MSG_CHECKING([if siginterrupt can be linked])
   5339   AC_LINK_IFELSE([
   5340     AC_LANG_FUNC_LINK_TRY([siginterrupt])
   5341   ],[
   5342     AC_MSG_RESULT([yes])
   5343     tst_links_siginterrupt="yes"
   5344   ],[
   5345     AC_MSG_RESULT([no])
   5346     tst_links_siginterrupt="no"
   5347   ])
   5348   #
   5349   if test "$tst_links_siginterrupt" = "yes"; then
   5350     AC_MSG_CHECKING([if siginterrupt is prototyped])
   5351     AC_EGREP_CPP([siginterrupt],[
   5352       $curl_includes_signal
   5353     ],[
   5354       AC_MSG_RESULT([yes])
   5355       tst_proto_siginterrupt="yes"
   5356     ],[
   5357       AC_MSG_RESULT([no])
   5358       tst_proto_siginterrupt="no"
   5359     ])
   5360   fi
   5361   #
   5362   if test "$tst_proto_siginterrupt" = "yes"; then
   5363     AC_MSG_CHECKING([if siginterrupt is compilable])
   5364     AC_COMPILE_IFELSE([
   5365       AC_LANG_PROGRAM([[
   5366         $curl_includes_signal
   5367       ]],[[
   5368         if(0 != siginterrupt(0, 0))
   5369           return 1;
   5370       ]])
   5371     ],[
   5372       AC_MSG_RESULT([yes])
   5373       tst_compi_siginterrupt="yes"
   5374     ],[
   5375       AC_MSG_RESULT([no])
   5376       tst_compi_siginterrupt="no"
   5377     ])
   5378   fi
   5379   #
   5380   if test "$tst_compi_siginterrupt" = "yes"; then
   5381     AC_MSG_CHECKING([if siginterrupt usage allowed])
   5382     if test "x$curl_disallow_siginterrupt" != "xyes"; then
   5383       AC_MSG_RESULT([yes])
   5384       tst_allow_siginterrupt="yes"
   5385     else
   5386       AC_MSG_RESULT([no])
   5387       tst_allow_siginterrupt="no"
   5388     fi
   5389   fi
   5390   #
   5391   AC_MSG_CHECKING([if siginterrupt might be used])
   5392   if test "$tst_links_siginterrupt" = "yes" &&
   5393      test "$tst_proto_siginterrupt" = "yes" &&
   5394      test "$tst_compi_siginterrupt" = "yes" &&
   5395      test "$tst_allow_siginterrupt" = "yes"; then
   5396     AC_MSG_RESULT([yes])
   5397     AC_DEFINE_UNQUOTED(HAVE_SIGINTERRUPT, 1,
   5398       [Define to 1 if you have the siginterrupt function.])
   5399     ac_cv_func_siginterrupt="yes"
   5400   else
   5401     AC_MSG_RESULT([no])
   5402     ac_cv_func_siginterrupt="no"
   5403   fi
   5404 ])
   5405 
   5406 
   5407 dnl CURL_CHECK_FUNC_SIGNAL
   5408 dnl -------------------------------------------------
   5409 dnl Verify if signal is available, prototyped, and
   5410 dnl can be compiled. If all of these are true, and
   5411 dnl usage has not been previously disallowed with
   5412 dnl shell variable curl_disallow_signal, then
   5413 dnl HAVE_SIGNAL will be defined.
   5414 
   5415 AC_DEFUN([CURL_CHECK_FUNC_SIGNAL], [
   5416   AC_REQUIRE([CURL_INCLUDES_SIGNAL])dnl
   5417   #
   5418   tst_links_signal="unknown"
   5419   tst_proto_signal="unknown"
   5420   tst_compi_signal="unknown"
   5421   tst_allow_signal="unknown"
   5422   #
   5423   AC_MSG_CHECKING([if signal can be linked])
   5424   AC_LINK_IFELSE([
   5425     AC_LANG_FUNC_LINK_TRY([signal])
   5426   ],[
   5427     AC_MSG_RESULT([yes])
   5428     tst_links_signal="yes"
   5429   ],[
   5430     AC_MSG_RESULT([no])
   5431     tst_links_signal="no"
   5432   ])
   5433   #
   5434   if test "$tst_links_signal" = "yes"; then
   5435     AC_MSG_CHECKING([if signal is prototyped])
   5436     AC_EGREP_CPP([signal],[
   5437       $curl_includes_signal
   5438     ],[
   5439       AC_MSG_RESULT([yes])
   5440       tst_proto_signal="yes"
   5441     ],[
   5442       AC_MSG_RESULT([no])
   5443       tst_proto_signal="no"
   5444     ])
   5445   fi
   5446   #
   5447   if test "$tst_proto_signal" = "yes"; then
   5448     AC_MSG_CHECKING([if signal is compilable])
   5449     AC_COMPILE_IFELSE([
   5450       AC_LANG_PROGRAM([[
   5451         $curl_includes_signal
   5452       ]],[[
   5453         if(0 != signal(0, 0))
   5454           return 1;
   5455       ]])
   5456     ],[
   5457       AC_MSG_RESULT([yes])
   5458       tst_compi_signal="yes"
   5459     ],[
   5460       AC_MSG_RESULT([no])
   5461       tst_compi_signal="no"
   5462     ])
   5463   fi
   5464   #
   5465   if test "$tst_compi_signal" = "yes"; then
   5466     AC_MSG_CHECKING([if signal usage allowed])
   5467     if test "x$curl_disallow_signal" != "xyes"; then
   5468       AC_MSG_RESULT([yes])
   5469       tst_allow_signal="yes"
   5470     else
   5471       AC_MSG_RESULT([no])
   5472       tst_allow_signal="no"
   5473     fi
   5474   fi
   5475   #
   5476   AC_MSG_CHECKING([if signal might be used])
   5477   if test "$tst_links_signal" = "yes" &&
   5478      test "$tst_proto_signal" = "yes" &&
   5479      test "$tst_compi_signal" = "yes" &&
   5480      test "$tst_allow_signal" = "yes"; then
   5481     AC_MSG_RESULT([yes])
   5482     AC_DEFINE_UNQUOTED(HAVE_SIGNAL, 1,
   5483       [Define to 1 if you have the signal function.])
   5484     ac_cv_func_signal="yes"
   5485   else
   5486     AC_MSG_RESULT([no])
   5487     ac_cv_func_signal="no"
   5488   fi
   5489 ])
   5490 
   5491 
   5492 dnl CURL_CHECK_FUNC_SIGSETJMP
   5493 dnl -------------------------------------------------
   5494 dnl Verify if sigsetjmp is available, prototyped, and
   5495 dnl can be compiled. If all of these are true, and
   5496 dnl usage has not been previously disallowed with
   5497 dnl shell variable curl_disallow_sigsetjmp, then
   5498 dnl HAVE_SIGSETJMP will be defined.
   5499 
   5500 AC_DEFUN([CURL_CHECK_FUNC_SIGSETJMP], [
   5501   AC_REQUIRE([CURL_INCLUDES_SETJMP])dnl
   5502   #
   5503   tst_links_sigsetjmp="unknown"
   5504   tst_macro_sigsetjmp="unknown"
   5505   tst_proto_sigsetjmp="unknown"
   5506   tst_compi_sigsetjmp="unknown"
   5507   tst_allow_sigsetjmp="unknown"
   5508   #
   5509   AC_MSG_CHECKING([if sigsetjmp can be linked])
   5510   AC_LINK_IFELSE([
   5511     AC_LANG_FUNC_LINK_TRY([sigsetjmp])
   5512   ],[
   5513     AC_MSG_RESULT([yes])
   5514     tst_links_sigsetjmp="yes"
   5515   ],[
   5516     AC_MSG_RESULT([no])
   5517     tst_links_sigsetjmp="no"
   5518   ])
   5519   #
   5520   if test "$tst_links_sigsetjmp" = "no"; then
   5521     AC_MSG_CHECKING([if sigsetjmp seems a macro])
   5522     AC_LINK_IFELSE([
   5523       AC_LANG_PROGRAM([[
   5524         $curl_includes_setjmp
   5525       ]],[[
   5526         sigjmp_buf env;
   5527         if(0 != sigsetjmp(env, 0))
   5528           return 1;
   5529       ]])
   5530     ],[
   5531       AC_MSG_RESULT([yes])
   5532       tst_macro_sigsetjmp="yes"
   5533     ],[
   5534       AC_MSG_RESULT([no])
   5535       tst_macro_sigsetjmp="no"
   5536     ])
   5537   fi
   5538   #
   5539   if test "$tst_links_sigsetjmp" = "yes"; then
   5540     AC_MSG_CHECKING([if sigsetjmp is prototyped])
   5541     AC_EGREP_CPP([sigsetjmp],[
   5542       $curl_includes_setjmp
   5543     ],[
   5544       AC_MSG_RESULT([yes])
   5545       tst_proto_sigsetjmp="yes"
   5546     ],[
   5547       AC_MSG_RESULT([no])
   5548       tst_proto_sigsetjmp="no"
   5549     ])
   5550   fi
   5551   #
   5552   if test "$tst_proto_sigsetjmp" = "yes" ||
   5553      test "$tst_macro_sigsetjmp" = "yes"; then
   5554     AC_MSG_CHECKING([if sigsetjmp is compilable])
   5555     AC_COMPILE_IFELSE([
   5556       AC_LANG_PROGRAM([[
   5557         $curl_includes_setjmp
   5558       ]],[[
   5559         sigjmp_buf env;
   5560         if(0 != sigsetjmp(env, 0))
   5561           return 1;
   5562       ]])
   5563     ],[
   5564       AC_MSG_RESULT([yes])
   5565       tst_compi_sigsetjmp="yes"
   5566     ],[
   5567       AC_MSG_RESULT([no])
   5568       tst_compi_sigsetjmp="no"
   5569     ])
   5570   fi
   5571   #
   5572   if test "$tst_compi_sigsetjmp" = "yes"; then
   5573     AC_MSG_CHECKING([if sigsetjmp usage allowed])
   5574     if test "x$curl_disallow_sigsetjmp" != "xyes"; then
   5575       AC_MSG_RESULT([yes])
   5576       tst_allow_sigsetjmp="yes"
   5577     else
   5578       AC_MSG_RESULT([no])
   5579       tst_allow_sigsetjmp="no"
   5580     fi
   5581   fi
   5582   #
   5583   AC_MSG_CHECKING([if sigsetjmp might be used])
   5584   if (test "$tst_proto_sigsetjmp" = "yes" ||
   5585       test "$tst_macro_sigsetjmp" = "yes") &&
   5586      test "$tst_compi_sigsetjmp" = "yes" &&
   5587      test "$tst_allow_sigsetjmp" = "yes"; then
   5588     AC_MSG_RESULT([yes])
   5589     AC_DEFINE_UNQUOTED(HAVE_SIGSETJMP, 1,
   5590       [Define to 1 if you have the sigsetjmp function or macro.])
   5591     ac_cv_func_sigsetjmp="yes"
   5592   else
   5593     AC_MSG_RESULT([no])
   5594     ac_cv_func_sigsetjmp="no"
   5595   fi
   5596 ])
   5597 
   5598 
   5599 dnl CURL_CHECK_FUNC_SOCKET
   5600 dnl -------------------------------------------------
   5601 dnl Verify if socket is available, prototyped, and
   5602 dnl can be compiled. If all of these are true, and
   5603 dnl usage has not been previously disallowed with
   5604 dnl shell variable curl_disallow_socket, then
   5605 dnl HAVE_SOCKET will be defined.
   5606 
   5607 AC_DEFUN([CURL_CHECK_FUNC_SOCKET], [
   5608   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   5609   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
   5610   AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
   5611   #
   5612   tst_links_socket="unknown"
   5613   tst_proto_socket="unknown"
   5614   tst_compi_socket="unknown"
   5615   tst_allow_socket="unknown"
   5616   #
   5617   AC_MSG_CHECKING([if socket can be linked])
   5618   AC_LINK_IFELSE([
   5619     AC_LANG_PROGRAM([[
   5620       $curl_includes_winsock2
   5621       $curl_includes_sys_socket
   5622       $curl_includes_socket
   5623     ]],[[
   5624       if(0 != socket(0, 0, 0))
   5625         return 1;
   5626     ]])
   5627   ],[
   5628     AC_MSG_RESULT([yes])
   5629     tst_links_socket="yes"
   5630   ],[
   5631     AC_MSG_RESULT([no])
   5632     tst_links_socket="no"
   5633   ])
   5634   #
   5635   if test "$tst_links_socket" = "yes"; then
   5636     AC_MSG_CHECKING([if socket is prototyped])
   5637     AC_EGREP_CPP([socket],[
   5638       $curl_includes_winsock2
   5639       $curl_includes_sys_socket
   5640       $curl_includes_socket
   5641     ],[
   5642       AC_MSG_RESULT([yes])
   5643       tst_proto_socket="yes"
   5644     ],[
   5645       AC_MSG_RESULT([no])
   5646       tst_proto_socket="no"
   5647     ])
   5648   fi
   5649   #
   5650   if test "$tst_proto_socket" = "yes"; then
   5651     AC_MSG_CHECKING([if socket is compilable])
   5652     AC_COMPILE_IFELSE([
   5653       AC_LANG_PROGRAM([[
   5654         $curl_includes_winsock2
   5655         $curl_includes_sys_socket
   5656         $curl_includes_socket
   5657       ]],[[
   5658         if(0 != socket(0, 0, 0))
   5659           return 1;
   5660       ]])
   5661     ],[
   5662       AC_MSG_RESULT([yes])
   5663       tst_compi_socket="yes"
   5664     ],[
   5665       AC_MSG_RESULT([no])
   5666       tst_compi_socket="no"
   5667     ])
   5668   fi
   5669   #
   5670   if test "$tst_compi_socket" = "yes"; then
   5671     AC_MSG_CHECKING([if socket usage allowed])
   5672     if test "x$curl_disallow_socket" != "xyes"; then
   5673       AC_MSG_RESULT([yes])
   5674       tst_allow_socket="yes"
   5675     else
   5676       AC_MSG_RESULT([no])
   5677       tst_allow_socket="no"
   5678     fi
   5679   fi
   5680   #
   5681   AC_MSG_CHECKING([if socket might be used])
   5682   if test "$tst_links_socket" = "yes" &&
   5683      test "$tst_proto_socket" = "yes" &&
   5684      test "$tst_compi_socket" = "yes" &&
   5685      test "$tst_allow_socket" = "yes"; then
   5686     AC_MSG_RESULT([yes])
   5687     AC_DEFINE_UNQUOTED(HAVE_SOCKET, 1,
   5688       [Define to 1 if you have the socket function.])
   5689     ac_cv_func_socket="yes"
   5690   else
   5691     AC_MSG_RESULT([no])
   5692     ac_cv_func_socket="no"
   5693   fi
   5694 ])
   5695 
   5696 
   5697 dnl CURL_CHECK_FUNC_SOCKETPAIR
   5698 dnl -------------------------------------------------
   5699 dnl Verify if socketpair is available, prototyped, and
   5700 dnl can be compiled. If all of these are true, and
   5701 dnl usage has not been previously disallowed with
   5702 dnl shell variable curl_disallow_socketpair, then
   5703 dnl HAVE_SOCKETPAIR will be defined.
   5704 
   5705 AC_DEFUN([CURL_CHECK_FUNC_SOCKETPAIR], [
   5706   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
   5707   AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
   5708   #
   5709   tst_links_socketpair="unknown"
   5710   tst_proto_socketpair="unknown"
   5711   tst_compi_socketpair="unknown"
   5712   tst_allow_socketpair="unknown"
   5713   #
   5714   AC_MSG_CHECKING([if socketpair can be linked])
   5715   AC_LINK_IFELSE([
   5716     AC_LANG_FUNC_LINK_TRY([socketpair])
   5717   ],[
   5718     AC_MSG_RESULT([yes])
   5719     tst_links_socketpair="yes"
   5720   ],[
   5721     AC_MSG_RESULT([no])
   5722     tst_links_socketpair="no"
   5723   ])
   5724   #
   5725   if test "$tst_links_socketpair" = "yes"; then
   5726     AC_MSG_CHECKING([if socketpair is prototyped])
   5727     AC_EGREP_CPP([socketpair],[
   5728       $curl_includes_sys_socket
   5729       $curl_includes_socket
   5730     ],[
   5731       AC_MSG_RESULT([yes])
   5732       tst_proto_socketpair="yes"
   5733     ],[
   5734       AC_MSG_RESULT([no])
   5735       tst_proto_socketpair="no"
   5736     ])
   5737   fi
   5738   #
   5739   if test "$tst_proto_socketpair" = "yes"; then
   5740     AC_MSG_CHECKING([if socketpair is compilable])
   5741     AC_COMPILE_IFELSE([
   5742       AC_LANG_PROGRAM([[
   5743         $curl_includes_sys_socket
   5744         $curl_includes_socket
   5745       ]],[[
   5746         int sv[2];
   5747         if(0 != socketpair(0, 0, 0, sv))
   5748           return 1;
   5749       ]])
   5750     ],[
   5751       AC_MSG_RESULT([yes])
   5752       tst_compi_socketpair="yes"
   5753     ],[
   5754       AC_MSG_RESULT([no])
   5755       tst_compi_socketpair="no"
   5756     ])
   5757   fi
   5758   #
   5759   if test "$tst_compi_socketpair" = "yes"; then
   5760     AC_MSG_CHECKING([if socketpair usage allowed])
   5761     if test "x$curl_disallow_socketpair" != "xyes"; then
   5762       AC_MSG_RESULT([yes])
   5763       tst_allow_socketpair="yes"
   5764     else
   5765       AC_MSG_RESULT([no])
   5766       tst_allow_socketpair="no"
   5767     fi
   5768   fi
   5769   #
   5770   AC_MSG_CHECKING([if socketpair might be used])
   5771   if test "$tst_links_socketpair" = "yes" &&
   5772      test "$tst_proto_socketpair" = "yes" &&
   5773      test "$tst_compi_socketpair" = "yes" &&
   5774      test "$tst_allow_socketpair" = "yes"; then
   5775     AC_MSG_RESULT([yes])
   5776     AC_DEFINE_UNQUOTED(HAVE_SOCKETPAIR, 1,
   5777       [Define to 1 if you have the socketpair function.])
   5778     ac_cv_func_socketpair="yes"
   5779   else
   5780     AC_MSG_RESULT([no])
   5781     ac_cv_func_socketpair="no"
   5782   fi
   5783 ])
   5784 
   5785 
   5786 dnl CURL_CHECK_FUNC_STRCASECMP
   5787 dnl -------------------------------------------------
   5788 dnl Verify if strcasecmp is available, prototyped, and
   5789 dnl can be compiled. If all of these are true, and
   5790 dnl usage has not been previously disallowed with
   5791 dnl shell variable curl_disallow_strcasecmp, then
   5792 dnl HAVE_STRCASECMP will be defined.
   5793 
   5794 AC_DEFUN([CURL_CHECK_FUNC_STRCASECMP], [
   5795   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   5796   #
   5797   tst_links_strcasecmp="unknown"
   5798   tst_proto_strcasecmp="unknown"
   5799   tst_compi_strcasecmp="unknown"
   5800   tst_allow_strcasecmp="unknown"
   5801   #
   5802   AC_MSG_CHECKING([if strcasecmp can be linked])
   5803   AC_LINK_IFELSE([
   5804     AC_LANG_FUNC_LINK_TRY([strcasecmp])
   5805   ],[
   5806     AC_MSG_RESULT([yes])
   5807     tst_links_strcasecmp="yes"
   5808   ],[
   5809     AC_MSG_RESULT([no])
   5810     tst_links_strcasecmp="no"
   5811   ])
   5812   #
   5813   if test "$tst_links_strcasecmp" = "yes"; then
   5814     AC_MSG_CHECKING([if strcasecmp is prototyped])
   5815     AC_EGREP_CPP([strcasecmp],[
   5816       $curl_includes_string
   5817     ],[
   5818       AC_MSG_RESULT([yes])
   5819       tst_proto_strcasecmp="yes"
   5820     ],[
   5821       AC_MSG_RESULT([no])
   5822       tst_proto_strcasecmp="no"
   5823     ])
   5824   fi
   5825   #
   5826   if test "$tst_proto_strcasecmp" = "yes"; then
   5827     AC_MSG_CHECKING([if strcasecmp is compilable])
   5828     AC_COMPILE_IFELSE([
   5829       AC_LANG_PROGRAM([[
   5830         $curl_includes_string
   5831       ]],[[
   5832         if(0 != strcasecmp(0, 0))
   5833           return 1;
   5834       ]])
   5835     ],[
   5836       AC_MSG_RESULT([yes])
   5837       tst_compi_strcasecmp="yes"
   5838     ],[
   5839       AC_MSG_RESULT([no])
   5840       tst_compi_strcasecmp="no"
   5841     ])
   5842   fi
   5843   #
   5844   if test "$tst_compi_strcasecmp" = "yes"; then
   5845     AC_MSG_CHECKING([if strcasecmp usage allowed])
   5846     if test "x$curl_disallow_strcasecmp" != "xyes"; then
   5847       AC_MSG_RESULT([yes])
   5848       tst_allow_strcasecmp="yes"
   5849     else
   5850       AC_MSG_RESULT([no])
   5851       tst_allow_strcasecmp="no"
   5852     fi
   5853   fi
   5854   #
   5855   AC_MSG_CHECKING([if strcasecmp might be used])
   5856   if test "$tst_links_strcasecmp" = "yes" &&
   5857      test "$tst_proto_strcasecmp" = "yes" &&
   5858      test "$tst_compi_strcasecmp" = "yes" &&
   5859      test "$tst_allow_strcasecmp" = "yes"; then
   5860     AC_MSG_RESULT([yes])
   5861     AC_DEFINE_UNQUOTED(HAVE_STRCASECMP, 1,
   5862       [Define to 1 if you have the strcasecmp function.])
   5863     ac_cv_func_strcasecmp="yes"
   5864   else
   5865     AC_MSG_RESULT([no])
   5866     ac_cv_func_strcasecmp="no"
   5867   fi
   5868 ])
   5869 
   5870 dnl CURL_CHECK_FUNC_STRCMPI
   5871 dnl -------------------------------------------------
   5872 dnl Verify if strcmpi is available, prototyped, and
   5873 dnl can be compiled. If all of these are true, and
   5874 dnl usage has not been previously disallowed with
   5875 dnl shell variable curl_disallow_strcmpi, then
   5876 dnl HAVE_STRCMPI will be defined.
   5877 
   5878 AC_DEFUN([CURL_CHECK_FUNC_STRCMPI], [
   5879   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   5880   #
   5881   tst_links_strcmpi="unknown"
   5882   tst_proto_strcmpi="unknown"
   5883   tst_compi_strcmpi="unknown"
   5884   tst_allow_strcmpi="unknown"
   5885   #
   5886   AC_MSG_CHECKING([if strcmpi can be linked])
   5887   AC_LINK_IFELSE([
   5888     AC_LANG_FUNC_LINK_TRY([strcmpi])
   5889   ],[
   5890     AC_MSG_RESULT([yes])
   5891     tst_links_strcmpi="yes"
   5892   ],[
   5893     AC_MSG_RESULT([no])
   5894     tst_links_strcmpi="no"
   5895   ])
   5896   #
   5897   if test "$tst_links_strcmpi" = "yes"; then
   5898     AC_MSG_CHECKING([if strcmpi is prototyped])
   5899     AC_EGREP_CPP([strcmpi],[
   5900       $curl_includes_string
   5901     ],[
   5902       AC_MSG_RESULT([yes])
   5903       tst_proto_strcmpi="yes"
   5904     ],[
   5905       AC_MSG_RESULT([no])
   5906       tst_proto_strcmpi="no"
   5907     ])
   5908   fi
   5909   #
   5910   if test "$tst_proto_strcmpi" = "yes"; then
   5911     AC_MSG_CHECKING([if strcmpi is compilable])
   5912     AC_COMPILE_IFELSE([
   5913       AC_LANG_PROGRAM([[
   5914         $curl_includes_string
   5915       ]],[[
   5916         if(0 != strcmpi(0, 0))
   5917           return 1;
   5918       ]])
   5919     ],[
   5920       AC_MSG_RESULT([yes])
   5921       tst_compi_strcmpi="yes"
   5922     ],[
   5923       AC_MSG_RESULT([no])
   5924       tst_compi_strcmpi="no"
   5925     ])
   5926   fi
   5927   #
   5928   if test "$tst_compi_strcmpi" = "yes"; then
   5929     AC_MSG_CHECKING([if strcmpi usage allowed])
   5930     if test "x$curl_disallow_strcmpi" != "xyes"; then
   5931       AC_MSG_RESULT([yes])
   5932       tst_allow_strcmpi="yes"
   5933     else
   5934       AC_MSG_RESULT([no])
   5935       tst_allow_strcmpi="no"
   5936     fi
   5937   fi
   5938   #
   5939   AC_MSG_CHECKING([if strcmpi might be used])
   5940   if test "$tst_links_strcmpi" = "yes" &&
   5941      test "$tst_proto_strcmpi" = "yes" &&
   5942      test "$tst_compi_strcmpi" = "yes" &&
   5943      test "$tst_allow_strcmpi" = "yes"; then
   5944     AC_MSG_RESULT([yes])
   5945     AC_DEFINE_UNQUOTED(HAVE_STRCMPI, 1,
   5946       [Define to 1 if you have the strcmpi function.])
   5947     ac_cv_func_strcmpi="yes"
   5948   else
   5949     AC_MSG_RESULT([no])
   5950     ac_cv_func_strcmpi="no"
   5951   fi
   5952 ])
   5953 
   5954 
   5955 dnl CURL_CHECK_FUNC_STRDUP
   5956 dnl -------------------------------------------------
   5957 dnl Verify if strdup is available, prototyped, and
   5958 dnl can be compiled. If all of these are true, and
   5959 dnl usage has not been previously disallowed with
   5960 dnl shell variable curl_disallow_strdup, then
   5961 dnl HAVE_STRDUP will be defined.
   5962 
   5963 AC_DEFUN([CURL_CHECK_FUNC_STRDUP], [
   5964   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   5965   #
   5966   tst_links_strdup="unknown"
   5967   tst_proto_strdup="unknown"
   5968   tst_compi_strdup="unknown"
   5969   tst_allow_strdup="unknown"
   5970   #
   5971   AC_MSG_CHECKING([if strdup can be linked])
   5972   AC_LINK_IFELSE([
   5973     AC_LANG_FUNC_LINK_TRY([strdup])
   5974   ],[
   5975     AC_MSG_RESULT([yes])
   5976     tst_links_strdup="yes"
   5977   ],[
   5978     AC_MSG_RESULT([no])
   5979     tst_links_strdup="no"
   5980   ])
   5981   #
   5982   if test "$tst_links_strdup" = "yes"; then
   5983     AC_MSG_CHECKING([if strdup is prototyped])
   5984     AC_EGREP_CPP([strdup],[
   5985       $curl_includes_string
   5986     ],[
   5987       AC_MSG_RESULT([yes])
   5988       tst_proto_strdup="yes"
   5989     ],[
   5990       AC_MSG_RESULT([no])
   5991       tst_proto_strdup="no"
   5992     ])
   5993   fi
   5994   #
   5995   if test "$tst_proto_strdup" = "yes"; then
   5996     AC_MSG_CHECKING([if strdup is compilable])
   5997     AC_COMPILE_IFELSE([
   5998       AC_LANG_PROGRAM([[
   5999         $curl_includes_string
   6000       ]],[[
   6001         if(0 != strdup(0))
   6002           return 1;
   6003       ]])
   6004     ],[
   6005       AC_MSG_RESULT([yes])
   6006       tst_compi_strdup="yes"
   6007     ],[
   6008       AC_MSG_RESULT([no])
   6009       tst_compi_strdup="no"
   6010     ])
   6011   fi
   6012   #
   6013   if test "$tst_compi_strdup" = "yes"; then
   6014     AC_MSG_CHECKING([if strdup usage allowed])
   6015     if test "x$curl_disallow_strdup" != "xyes"; then
   6016       AC_MSG_RESULT([yes])
   6017       tst_allow_strdup="yes"
   6018     else
   6019       AC_MSG_RESULT([no])
   6020       tst_allow_strdup="no"
   6021     fi
   6022   fi
   6023   #
   6024   AC_MSG_CHECKING([if strdup might be used])
   6025   if test "$tst_links_strdup" = "yes" &&
   6026      test "$tst_proto_strdup" = "yes" &&
   6027      test "$tst_compi_strdup" = "yes" &&
   6028      test "$tst_allow_strdup" = "yes"; then
   6029     AC_MSG_RESULT([yes])
   6030     AC_DEFINE_UNQUOTED(HAVE_STRDUP, 1,
   6031       [Define to 1 if you have the strdup function.])
   6032     ac_cv_func_strdup="yes"
   6033   else
   6034     AC_MSG_RESULT([no])
   6035     ac_cv_func_strdup="no"
   6036   fi
   6037 ])
   6038 
   6039 
   6040 dnl CURL_CHECK_FUNC_STRERROR_R
   6041 dnl -------------------------------------------------
   6042 dnl Verify if strerror_r is available, prototyped, can be compiled and
   6043 dnl seems to work. If all of these are true, and usage has not been
   6044 dnl previously disallowed with shell variable curl_disallow_strerror_r,
   6045 dnl then HAVE_STRERROR_R and STRERROR_R_TYPE_ARG3 will be defined, as
   6046 dnl well as one of HAVE_GLIBC_STRERROR_R or HAVE_POSIX_STRERROR_R.
   6047 dnl
   6048 dnl glibc-style strerror_r:
   6049 dnl
   6050 dnl      char *strerror_r(int errnum, char *workbuf, size_t bufsize);
   6051 dnl
   6052 dnl  glibc-style strerror_r returns a pointer to the the error string,
   6053 dnl  and might use the provided workbuf as a scratch area if needed. A
   6054 dnl  quick test on a few systems shows that it's usually not used at all.
   6055 dnl
   6056 dnl POSIX-style strerror_r:
   6057 dnl
   6058 dnl      int strerror_r(int errnum, char *resultbuf, size_t bufsize);
   6059 dnl
   6060 dnl  POSIX-style strerror_r returns 0 upon successful completion and the
   6061 dnl  error string in the provided resultbuf.
   6062 dnl
   6063 
   6064 AC_DEFUN([CURL_CHECK_FUNC_STRERROR_R], [
   6065   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   6066   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   6067   #
   6068   tst_links_strerror_r="unknown"
   6069   tst_proto_strerror_r="unknown"
   6070   tst_compi_strerror_r="unknown"
   6071   tst_glibc_strerror_r="unknown"
   6072   tst_posix_strerror_r="unknown"
   6073   tst_allow_strerror_r="unknown"
   6074   tst_works_glibc_strerror_r="unknown"
   6075   tst_works_posix_strerror_r="unknown"
   6076   tst_glibc_strerror_r_type_arg3="unknown"
   6077   tst_posix_strerror_r_type_arg3="unknown"
   6078   #
   6079   AC_MSG_CHECKING([if strerror_r can be linked])
   6080   AC_LINK_IFELSE([
   6081     AC_LANG_FUNC_LINK_TRY([strerror_r])
   6082   ],[
   6083     AC_MSG_RESULT([yes])
   6084     tst_links_strerror_r="yes"
   6085   ],[
   6086     AC_MSG_RESULT([no])
   6087     tst_links_strerror_r="no"
   6088   ])
   6089   #
   6090   if test "$tst_links_strerror_r" = "yes"; then
   6091     AC_MSG_CHECKING([if strerror_r is prototyped])
   6092     AC_EGREP_CPP([strerror_r],[
   6093       $curl_includes_string
   6094     ],[
   6095       AC_MSG_RESULT([yes])
   6096       tst_proto_strerror_r="yes"
   6097     ],[
   6098       AC_MSG_RESULT([no])
   6099       tst_proto_strerror_r="no"
   6100     ])
   6101   fi
   6102   #
   6103   if test "$tst_proto_strerror_r" = "yes"; then
   6104     AC_MSG_CHECKING([if strerror_r is compilable])
   6105     AC_COMPILE_IFELSE([
   6106       AC_LANG_PROGRAM([[
   6107         $curl_includes_string
   6108       ]],[[
   6109         if(0 != strerror_r(0, 0, 0))
   6110           return 1;
   6111       ]])
   6112     ],[
   6113       AC_MSG_RESULT([yes])
   6114       tst_compi_strerror_r="yes"
   6115     ],[
   6116       AC_MSG_RESULT([no])
   6117       tst_compi_strerror_r="no"
   6118     ])
   6119   fi
   6120   #
   6121   if test "$tst_compi_strerror_r" = "yes"; then
   6122     AC_MSG_CHECKING([if strerror_r is glibc like])
   6123     tst_glibc_strerror_r_type_arg3="unknown"
   6124     for arg3 in 'size_t' 'int' 'unsigned int'; do
   6125       if test "$tst_glibc_strerror_r_type_arg3" = "unknown"; then
   6126         AC_COMPILE_IFELSE([
   6127           AC_LANG_PROGRAM([[
   6128             $curl_includes_string
   6129             char *strerror_r(int errnum, char *workbuf, $arg3 bufsize);
   6130           ]],[[
   6131             if(0 != strerror_r(0, 0, 0))
   6132               return 1;
   6133           ]])
   6134         ],[
   6135           tst_glibc_strerror_r_type_arg3="$arg3"
   6136         ])
   6137       fi
   6138     done
   6139     case "$tst_glibc_strerror_r_type_arg3" in
   6140       unknown)
   6141         AC_MSG_RESULT([no])
   6142         tst_glibc_strerror_r="no"
   6143         ;;
   6144       *)
   6145         AC_MSG_RESULT([yes])
   6146         tst_glibc_strerror_r="yes"
   6147         ;;
   6148     esac
   6149   fi
   6150   #
   6151   dnl only do runtime verification when not cross-compiling
   6152   if test "x$cross_compiling" != "xyes" &&
   6153     test "$tst_glibc_strerror_r" = "yes"; then
   6154     AC_MSG_CHECKING([if strerror_r seems to work])
   6155     AC_RUN_IFELSE([
   6156       AC_LANG_PROGRAM([[
   6157         $curl_includes_stdlib
   6158         $curl_includes_string
   6159 #       include <errno.h>
   6160       ]],[[
   6161         char buffer[1024];
   6162         char *string = 0;
   6163         buffer[0] = '\0';
   6164         string = strerror_r(EACCES, buffer, sizeof(buffer));
   6165         if(!string)
   6166           exit(1); /* fail */
   6167         if(!string[0])
   6168           exit(1); /* fail */
   6169         else
   6170           exit(0);
   6171       ]])
   6172     ],[
   6173       AC_MSG_RESULT([yes])
   6174       tst_works_glibc_strerror_r="yes"
   6175     ],[
   6176       AC_MSG_RESULT([no])
   6177       tst_works_glibc_strerror_r="no"
   6178     ])
   6179   fi
   6180   #
   6181   if test "$tst_compi_strerror_r" = "yes" &&
   6182     test "$tst_works_glibc_strerror_r" != "yes"; then
   6183     AC_MSG_CHECKING([if strerror_r is POSIX like])
   6184     tst_posix_strerror_r_type_arg3="unknown"
   6185     for arg3 in 'size_t' 'int' 'unsigned int'; do
   6186       if test "$tst_posix_strerror_r_type_arg3" = "unknown"; then
   6187         AC_COMPILE_IFELSE([
   6188           AC_LANG_PROGRAM([[
   6189             $curl_includes_string
   6190             int strerror_r(int errnum, char *resultbuf, $arg3 bufsize);
   6191           ]],[[
   6192             if(0 != strerror_r(0, 0, 0))
   6193               return 1;
   6194           ]])
   6195         ],[
   6196           tst_posix_strerror_r_type_arg3="$arg3"
   6197         ])
   6198       fi
   6199     done
   6200     case "$tst_posix_strerror_r_type_arg3" in
   6201       unknown)
   6202         AC_MSG_RESULT([no])
   6203         tst_posix_strerror_r="no"
   6204         ;;
   6205       *)
   6206         AC_MSG_RESULT([yes])
   6207         tst_posix_strerror_r="yes"
   6208         ;;
   6209     esac
   6210   fi
   6211   #
   6212   dnl only do runtime verification when not cross-compiling
   6213   if test "x$cross_compiling" != "xyes" &&
   6214     test "$tst_posix_strerror_r" = "yes"; then
   6215     AC_MSG_CHECKING([if strerror_r seems to work])
   6216     AC_RUN_IFELSE([
   6217       AC_LANG_PROGRAM([[
   6218         $curl_includes_stdlib
   6219         $curl_includes_string
   6220 #       include <errno.h>
   6221       ]],[[
   6222         char buffer[1024];
   6223         int error = 1;
   6224         buffer[0] = '\0';
   6225         error = strerror_r(EACCES, buffer, sizeof(buffer));
   6226         if(error)
   6227           exit(1); /* fail */
   6228         if(buffer[0] == '\0')
   6229           exit(1); /* fail */
   6230         else
   6231           exit(0);
   6232       ]])
   6233     ],[
   6234       AC_MSG_RESULT([yes])
   6235       tst_works_posix_strerror_r="yes"
   6236     ],[
   6237       AC_MSG_RESULT([no])
   6238       tst_works_posix_strerror_r="no"
   6239     ])
   6240   fi
   6241   #
   6242   if test "$tst_works_glibc_strerror_r" = "yes"; then
   6243     tst_posix_strerror_r="no"
   6244   fi
   6245   if test "$tst_works_posix_strerror_r" = "yes"; then
   6246     tst_glibc_strerror_r="no"
   6247   fi
   6248   if test "$tst_glibc_strerror_r" = "yes" &&
   6249     test "$tst_works_glibc_strerror_r" != "no" &&
   6250     test "$tst_posix_strerror_r" != "yes"; then
   6251     tst_allow_strerror_r="check"
   6252   fi
   6253   if test "$tst_posix_strerror_r" = "yes" &&
   6254     test "$tst_works_posix_strerror_r" != "no" &&
   6255     test "$tst_glibc_strerror_r" != "yes"; then
   6256     tst_allow_strerror_r="check"
   6257   fi
   6258   if test "$tst_allow_strerror_r" = "check"; then
   6259     AC_MSG_CHECKING([if strerror_r usage allowed])
   6260     if test "x$curl_disallow_strerror_r" != "xyes"; then
   6261       AC_MSG_RESULT([yes])
   6262       tst_allow_strerror_r="yes"
   6263     else
   6264       AC_MSG_RESULT([no])
   6265       tst_allow_strerror_r="no"
   6266     fi
   6267   fi
   6268   #
   6269   AC_MSG_CHECKING([if strerror_r might be used])
   6270   if test "$tst_links_strerror_r" = "yes" &&
   6271      test "$tst_proto_strerror_r" = "yes" &&
   6272      test "$tst_compi_strerror_r" = "yes" &&
   6273      test "$tst_allow_strerror_r" = "yes"; then
   6274     AC_MSG_RESULT([yes])
   6275     if test "$tst_glibc_strerror_r" = "yes"; then
   6276       AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
   6277         [Define to 1 if you have the strerror_r function.])
   6278       AC_DEFINE_UNQUOTED(HAVE_GLIBC_STRERROR_R, 1,
   6279         [Define to 1 if you have a working glibc-style strerror_r function.])
   6280       AC_DEFINE_UNQUOTED(STRERROR_R_TYPE_ARG3, $tst_glibc_strerror_r_type_arg3,
   6281         [Define to the type of arg 3 for strerror_r.])
   6282     fi
   6283     if test "$tst_posix_strerror_r" = "yes"; then
   6284       AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
   6285         [Define to 1 if you have the strerror_r function.])
   6286       AC_DEFINE_UNQUOTED(HAVE_POSIX_STRERROR_R, 1,
   6287         [Define to 1 if you have a working POSIX-style strerror_r function.])
   6288       AC_DEFINE_UNQUOTED(STRERROR_R_TYPE_ARG3, $tst_posix_strerror_r_type_arg3,
   6289         [Define to the type of arg 3 for strerror_r.])
   6290     fi
   6291     ac_cv_func_strerror_r="yes"
   6292   else
   6293     AC_MSG_RESULT([no])
   6294     ac_cv_func_strerror_r="no"
   6295   fi
   6296   #
   6297   if test "$tst_compi_strerror_r" = "yes" &&
   6298      test "$tst_allow_strerror_r" = "unknown"; then
   6299     AC_MSG_WARN([cannot determine strerror_r() style: edit lib/curl_config.h manually.])
   6300   fi
   6301   #
   6302 ])
   6303 
   6304 
   6305 dnl CURL_CHECK_FUNC_STRICMP
   6306 dnl -------------------------------------------------
   6307 dnl Verify if stricmp is available, prototyped, and
   6308 dnl can be compiled. If all of these are true, and
   6309 dnl usage has not been previously disallowed with
   6310 dnl shell variable curl_disallow_stricmp, then
   6311 dnl HAVE_STRICMP will be defined.
   6312 
   6313 AC_DEFUN([CURL_CHECK_FUNC_STRICMP], [
   6314   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   6315   #
   6316   tst_links_stricmp="unknown"
   6317   tst_proto_stricmp="unknown"
   6318   tst_compi_stricmp="unknown"
   6319   tst_allow_stricmp="unknown"
   6320   #
   6321   AC_MSG_CHECKING([if stricmp can be linked])
   6322   AC_LINK_IFELSE([
   6323     AC_LANG_FUNC_LINK_TRY([stricmp])
   6324   ],[
   6325     AC_MSG_RESULT([yes])
   6326     tst_links_stricmp="yes"
   6327   ],[
   6328     AC_MSG_RESULT([no])
   6329     tst_links_stricmp="no"
   6330   ])
   6331   #
   6332   if test "$tst_links_stricmp" = "yes"; then
   6333     AC_MSG_CHECKING([if stricmp is prototyped])
   6334     AC_EGREP_CPP([stricmp],[
   6335       $curl_includes_string
   6336     ],[
   6337       AC_MSG_RESULT([yes])
   6338       tst_proto_stricmp="yes"
   6339     ],[
   6340       AC_MSG_RESULT([no])
   6341       tst_proto_stricmp="no"
   6342     ])
   6343   fi
   6344   #
   6345   if test "$tst_proto_stricmp" = "yes"; then
   6346     AC_MSG_CHECKING([if stricmp is compilable])
   6347     AC_COMPILE_IFELSE([
   6348       AC_LANG_PROGRAM([[
   6349         $curl_includes_string
   6350       ]],[[
   6351         if(0 != stricmp(0, 0))
   6352           return 1;
   6353       ]])
   6354     ],[
   6355       AC_MSG_RESULT([yes])
   6356       tst_compi_stricmp="yes"
   6357     ],[
   6358       AC_MSG_RESULT([no])
   6359       tst_compi_stricmp="no"
   6360     ])
   6361   fi
   6362   #
   6363   if test "$tst_compi_stricmp" = "yes"; then
   6364     AC_MSG_CHECKING([if stricmp usage allowed])
   6365     if test "x$curl_disallow_stricmp" != "xyes"; then
   6366       AC_MSG_RESULT([yes])
   6367       tst_allow_stricmp="yes"
   6368     else
   6369       AC_MSG_RESULT([no])
   6370       tst_allow_stricmp="no"
   6371     fi
   6372   fi
   6373   #
   6374   AC_MSG_CHECKING([if stricmp might be used])
   6375   if test "$tst_links_stricmp" = "yes" &&
   6376      test "$tst_proto_stricmp" = "yes" &&
   6377      test "$tst_compi_stricmp" = "yes" &&
   6378      test "$tst_allow_stricmp" = "yes"; then
   6379     AC_MSG_RESULT([yes])
   6380     AC_DEFINE_UNQUOTED(HAVE_STRICMP, 1,
   6381       [Define to 1 if you have the stricmp function.])
   6382     ac_cv_func_stricmp="yes"
   6383   else
   6384     AC_MSG_RESULT([no])
   6385     ac_cv_func_stricmp="no"
   6386   fi
   6387 ])
   6388 
   6389 dnl CURL_CHECK_FUNC_STRNCASECMP
   6390 dnl -------------------------------------------------
   6391 dnl Verify if strncasecmp is available, prototyped, and
   6392 dnl can be compiled. If all of these are true, and
   6393 dnl usage has not been previously disallowed with
   6394 dnl shell variable curl_disallow_strncasecmp, then
   6395 dnl HAVE_STRNCASECMP will be defined.
   6396 
   6397 AC_DEFUN([CURL_CHECK_FUNC_STRNCASECMP], [
   6398   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   6399   #
   6400   tst_links_strncasecmp="unknown"
   6401   tst_proto_strncasecmp="unknown"
   6402   tst_compi_strncasecmp="unknown"
   6403   tst_allow_strncasecmp="unknown"
   6404   #
   6405   AC_MSG_CHECKING([if strncasecmp can be linked])
   6406   AC_LINK_IFELSE([
   6407     AC_LANG_FUNC_LINK_TRY([strncasecmp])
   6408   ],[
   6409     AC_MSG_RESULT([yes])
   6410     tst_links_strncasecmp="yes"
   6411   ],[
   6412     AC_MSG_RESULT([no])
   6413     tst_links_strncasecmp="no"
   6414   ])
   6415   #
   6416   if test "$tst_links_strncasecmp" = "yes"; then
   6417     AC_MSG_CHECKING([if strncasecmp is prototyped])
   6418     AC_EGREP_CPP([strncasecmp],[
   6419       $curl_includes_string
   6420     ],[
   6421       AC_MSG_RESULT([yes])
   6422       tst_proto_strncasecmp="yes"
   6423     ],[
   6424       AC_MSG_RESULT([no])
   6425       tst_proto_strncasecmp="no"
   6426     ])
   6427   fi
   6428   #
   6429   if test "$tst_proto_strncasecmp" = "yes"; then
   6430     AC_MSG_CHECKING([if strncasecmp is compilable])
   6431     AC_COMPILE_IFELSE([
   6432       AC_LANG_PROGRAM([[
   6433         $curl_includes_string
   6434       ]],[[
   6435         if(0 != strncasecmp(0, 0, 0))
   6436           return 1;
   6437       ]])
   6438     ],[
   6439       AC_MSG_RESULT([yes])
   6440       tst_compi_strncasecmp="yes"
   6441     ],[
   6442       AC_MSG_RESULT([no])
   6443       tst_compi_strncasecmp="no"
   6444     ])
   6445   fi
   6446   #
   6447   if test "$tst_compi_strncasecmp" = "yes"; then
   6448     AC_MSG_CHECKING([if strncasecmp usage allowed])
   6449     if test "x$curl_disallow_strncasecmp" != "xyes"; then
   6450       AC_MSG_RESULT([yes])
   6451       tst_allow_strncasecmp="yes"
   6452     else
   6453       AC_MSG_RESULT([no])
   6454       tst_allow_strncasecmp="no"
   6455     fi
   6456   fi
   6457   #
   6458   AC_MSG_CHECKING([if strncasecmp might be used])
   6459   if test "$tst_links_strncasecmp" = "yes" &&
   6460      test "$tst_proto_strncasecmp" = "yes" &&
   6461      test "$tst_compi_strncasecmp" = "yes" &&
   6462      test "$tst_allow_strncasecmp" = "yes"; then
   6463     AC_MSG_RESULT([yes])
   6464     AC_DEFINE_UNQUOTED(HAVE_STRNCASECMP, 1,
   6465       [Define to 1 if you have the strncasecmp function.])
   6466     ac_cv_func_strncasecmp="yes"
   6467   else
   6468     AC_MSG_RESULT([no])
   6469     ac_cv_func_strncasecmp="no"
   6470   fi
   6471 ])
   6472 
   6473 
   6474 dnl CURL_CHECK_FUNC_STRNCMPI
   6475 dnl -------------------------------------------------
   6476 dnl Verify if strncmpi is available, prototyped, and
   6477 dnl can be compiled. If all of these are true, and
   6478 dnl usage has not been previously disallowed with
   6479 dnl shell variable curl_disallow_strncmpi, then
   6480 dnl HAVE_STRNCMPI will be defined.
   6481 
   6482 AC_DEFUN([CURL_CHECK_FUNC_STRNCMPI], [
   6483   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   6484   #
   6485   tst_links_strncmpi="unknown"
   6486   tst_proto_strncmpi="unknown"
   6487   tst_compi_strncmpi="unknown"
   6488   tst_allow_strncmpi="unknown"
   6489   #
   6490   AC_MSG_CHECKING([if strncmpi can be linked])
   6491   AC_LINK_IFELSE([
   6492     AC_LANG_FUNC_LINK_TRY([strncmpi])
   6493   ],[
   6494     AC_MSG_RESULT([yes])
   6495     tst_links_strncmpi="yes"
   6496   ],[
   6497     AC_MSG_RESULT([no])
   6498     tst_links_strncmpi="no"
   6499   ])
   6500   #
   6501   if test "$tst_links_strncmpi" = "yes"; then
   6502     AC_MSG_CHECKING([if strncmpi is prototyped])
   6503     AC_EGREP_CPP([strncmpi],[
   6504       $curl_includes_string
   6505     ],[
   6506       AC_MSG_RESULT([yes])
   6507       tst_proto_strncmpi="yes"
   6508     ],[
   6509       AC_MSG_RESULT([no])
   6510       tst_proto_strncmpi="no"
   6511     ])
   6512   fi
   6513   #
   6514   if test "$tst_proto_strncmpi" = "yes"; then
   6515     AC_MSG_CHECKING([if strncmpi is compilable])
   6516     AC_COMPILE_IFELSE([
   6517       AC_LANG_PROGRAM([[
   6518         $curl_includes_string
   6519       ]],[[
   6520         if(0 != strncmpi(0, 0))
   6521           return 1;
   6522       ]])
   6523     ],[
   6524       AC_MSG_RESULT([yes])
   6525       tst_compi_strncmpi="yes"
   6526     ],[
   6527       AC_MSG_RESULT([no])
   6528       tst_compi_strncmpi="no"
   6529     ])
   6530   fi
   6531   #
   6532   if test "$tst_compi_strncmpi" = "yes"; then
   6533     AC_MSG_CHECKING([if strncmpi usage allowed])
   6534     if test "x$curl_disallow_strncmpi" != "xyes"; then
   6535       AC_MSG_RESULT([yes])
   6536       tst_allow_strncmpi="yes"
   6537     else
   6538       AC_MSG_RESULT([no])
   6539       tst_allow_strncmpi="no"
   6540     fi
   6541   fi
   6542   #
   6543   AC_MSG_CHECKING([if strncmpi might be used])
   6544   if test "$tst_links_strncmpi" = "yes" &&
   6545      test "$tst_proto_strncmpi" = "yes" &&
   6546      test "$tst_compi_strncmpi" = "yes" &&
   6547      test "$tst_allow_strncmpi" = "yes"; then
   6548     AC_MSG_RESULT([yes])
   6549     AC_DEFINE_UNQUOTED(HAVE_STRNCMPI, 1,
   6550       [Define to 1 if you have the strncmpi function.])
   6551     ac_cv_func_strncmpi="yes"
   6552   else
   6553     AC_MSG_RESULT([no])
   6554     ac_cv_func_strncmpi="no"
   6555   fi
   6556 ])
   6557 
   6558 
   6559 dnl CURL_CHECK_FUNC_STRNICMP
   6560 dnl -------------------------------------------------
   6561 dnl Verify if strnicmp is available, prototyped, and
   6562 dnl can be compiled. If all of these are true, and
   6563 dnl usage has not been previously disallowed with
   6564 dnl shell variable curl_disallow_strnicmp, then
   6565 dnl HAVE_STRNICMP will be defined.
   6566 
   6567 AC_DEFUN([CURL_CHECK_FUNC_STRNICMP], [
   6568   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   6569   #
   6570   tst_links_strnicmp="unknown"
   6571   tst_proto_strnicmp="unknown"
   6572   tst_compi_strnicmp="unknown"
   6573   tst_allow_strnicmp="unknown"
   6574   #
   6575   AC_MSG_CHECKING([if strnicmp can be linked])
   6576   AC_LINK_IFELSE([
   6577     AC_LANG_FUNC_LINK_TRY([strnicmp])
   6578   ],[
   6579     AC_MSG_RESULT([yes])
   6580     tst_links_strnicmp="yes"
   6581   ],[
   6582     AC_MSG_RESULT([no])
   6583     tst_links_strnicmp="no"
   6584   ])
   6585   #
   6586   if test "$tst_links_strnicmp" = "yes"; then
   6587     AC_MSG_CHECKING([if strnicmp is prototyped])
   6588     AC_EGREP_CPP([strnicmp],[
   6589       $curl_includes_string
   6590     ],[
   6591       AC_MSG_RESULT([yes])
   6592       tst_proto_strnicmp="yes"
   6593     ],[
   6594       AC_MSG_RESULT([no])
   6595       tst_proto_strnicmp="no"
   6596     ])
   6597   fi
   6598   #
   6599   if test "$tst_proto_strnicmp" = "yes"; then
   6600     AC_MSG_CHECKING([if strnicmp is compilable])
   6601     AC_COMPILE_IFELSE([
   6602       AC_LANG_PROGRAM([[
   6603         $curl_includes_string
   6604       ]],[[
   6605         if(0 != strnicmp(0, 0))
   6606           return 1;
   6607       ]])
   6608     ],[
   6609       AC_MSG_RESULT([yes])
   6610       tst_compi_strnicmp="yes"
   6611     ],[
   6612       AC_MSG_RESULT([no])
   6613       tst_compi_strnicmp="no"
   6614     ])
   6615   fi
   6616   #
   6617   if test "$tst_compi_strnicmp" = "yes"; then
   6618     AC_MSG_CHECKING([if strnicmp usage allowed])
   6619     if test "x$curl_disallow_strnicmp" != "xyes"; then
   6620       AC_MSG_RESULT([yes])
   6621       tst_allow_strnicmp="yes"
   6622     else
   6623       AC_MSG_RESULT([no])
   6624       tst_allow_strnicmp="no"
   6625     fi
   6626   fi
   6627   #
   6628   AC_MSG_CHECKING([if strnicmp might be used])
   6629   if test "$tst_links_strnicmp" = "yes" &&
   6630      test "$tst_proto_strnicmp" = "yes" &&
   6631      test "$tst_compi_strnicmp" = "yes" &&
   6632      test "$tst_allow_strnicmp" = "yes"; then
   6633     AC_MSG_RESULT([yes])
   6634     AC_DEFINE_UNQUOTED(HAVE_STRNICMP, 1,
   6635       [Define to 1 if you have the strnicmp function.])
   6636     ac_cv_func_strnicmp="yes"
   6637   else
   6638     AC_MSG_RESULT([no])
   6639     ac_cv_func_strnicmp="no"
   6640   fi
   6641 ])
   6642 
   6643 
   6644 dnl CURL_CHECK_FUNC_STRSTR
   6645 dnl -------------------------------------------------
   6646 dnl Verify if strstr is available, prototyped, and
   6647 dnl can be compiled. If all of these are true, and
   6648 dnl usage has not been previously disallowed with
   6649 dnl shell variable curl_disallow_strstr, then
   6650 dnl HAVE_STRSTR will be defined.
   6651 
   6652 AC_DEFUN([CURL_CHECK_FUNC_STRSTR], [
   6653   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   6654   #
   6655   tst_links_strstr="unknown"
   6656   tst_proto_strstr="unknown"
   6657   tst_compi_strstr="unknown"
   6658   tst_allow_strstr="unknown"
   6659   #
   6660   AC_MSG_CHECKING([if strstr can be linked])
   6661   AC_LINK_IFELSE([
   6662     AC_LANG_FUNC_LINK_TRY([strstr])
   6663   ],[
   6664     AC_MSG_RESULT([yes])
   6665     tst_links_strstr="yes"
   6666   ],[
   6667     AC_MSG_RESULT([no])
   6668     tst_links_strstr="no"
   6669   ])
   6670   #
   6671   if test "$tst_links_strstr" = "yes"; then
   6672     AC_MSG_CHECKING([if strstr is prototyped])
   6673     AC_EGREP_CPP([strstr],[
   6674       $curl_includes_string
   6675     ],[
   6676       AC_MSG_RESULT([yes])
   6677       tst_proto_strstr="yes"
   6678     ],[
   6679       AC_MSG_RESULT([no])
   6680       tst_proto_strstr="no"
   6681     ])
   6682   fi
   6683   #
   6684   if test "$tst_proto_strstr" = "yes"; then
   6685     AC_MSG_CHECKING([if strstr is compilable])
   6686     AC_COMPILE_IFELSE([
   6687       AC_LANG_PROGRAM([[
   6688         $curl_includes_string
   6689       ]],[[
   6690         if(0 != strstr(0, 0))
   6691           return 1;
   6692       ]])
   6693     ],[
   6694       AC_MSG_RESULT([yes])
   6695       tst_compi_strstr="yes"
   6696     ],[
   6697       AC_MSG_RESULT([no])
   6698       tst_compi_strstr="no"
   6699     ])
   6700   fi
   6701   #
   6702   if test "$tst_compi_strstr" = "yes"; then
   6703     AC_MSG_CHECKING([if strstr usage allowed])
   6704     if test "x$curl_disallow_strstr" != "xyes"; then
   6705       AC_MSG_RESULT([yes])
   6706       tst_allow_strstr="yes"
   6707     else
   6708       AC_MSG_RESULT([no])
   6709       tst_allow_strstr="no"
   6710     fi
   6711   fi
   6712   #
   6713   AC_MSG_CHECKING([if strstr might be used])
   6714   if test "$tst_links_strstr" = "yes" &&
   6715      test "$tst_proto_strstr" = "yes" &&
   6716      test "$tst_compi_strstr" = "yes" &&
   6717      test "$tst_allow_strstr" = "yes"; then
   6718     AC_MSG_RESULT([yes])
   6719     AC_DEFINE_UNQUOTED(HAVE_STRSTR, 1,
   6720       [Define to 1 if you have the strstr function.])
   6721     ac_cv_func_strstr="yes"
   6722   else
   6723     AC_MSG_RESULT([no])
   6724     ac_cv_func_strstr="no"
   6725   fi
   6726 ])
   6727 
   6728 
   6729 dnl CURL_CHECK_FUNC_STRTOK_R
   6730 dnl -------------------------------------------------
   6731 dnl Verify if strtok_r is available, prototyped, and
   6732 dnl can be compiled. If all of these are true, and
   6733 dnl usage has not been previously disallowed with
   6734 dnl shell variable curl_disallow_strtok_r, then
   6735 dnl HAVE_STRTOK_R will be defined.
   6736 
   6737 AC_DEFUN([CURL_CHECK_FUNC_STRTOK_R], [
   6738   AC_REQUIRE([CURL_INCLUDES_STRING])dnl
   6739   #
   6740   tst_links_strtok_r="unknown"
   6741   tst_proto_strtok_r="unknown"
   6742   tst_compi_strtok_r="unknown"
   6743   tst_allow_strtok_r="unknown"
   6744   #
   6745   AC_MSG_CHECKING([if strtok_r can be linked])
   6746   AC_LINK_IFELSE([
   6747     AC_LANG_FUNC_LINK_TRY([strtok_r])
   6748   ],[
   6749     AC_MSG_RESULT([yes])
   6750     tst_links_strtok_r="yes"
   6751   ],[
   6752     AC_MSG_RESULT([no])
   6753     tst_links_strtok_r="no"
   6754   ])
   6755   #
   6756   if test "$tst_links_strtok_r" = "yes"; then
   6757     AC_MSG_CHECKING([if strtok_r is prototyped])
   6758     AC_EGREP_CPP([strtok_r],[
   6759       $curl_includes_string
   6760     ],[
   6761       AC_MSG_RESULT([yes])
   6762       tst_proto_strtok_r="yes"
   6763     ],[
   6764       AC_MSG_RESULT([no])
   6765       tst_proto_strtok_r="no"
   6766     ])
   6767   fi
   6768   #
   6769   if test "$tst_proto_strtok_r" = "yes"; then
   6770     AC_MSG_CHECKING([if strtok_r is compilable])
   6771     AC_COMPILE_IFELSE([
   6772       AC_LANG_PROGRAM([[
   6773         $curl_includes_string
   6774       ]],[[
   6775         if(0 != strtok_r(0, 0, 0))
   6776           return 1;
   6777       ]])
   6778     ],[
   6779       AC_MSG_RESULT([yes])
   6780       tst_compi_strtok_r="yes"
   6781     ],[
   6782       AC_MSG_RESULT([no])
   6783       tst_compi_strtok_r="no"
   6784     ])
   6785   fi
   6786   #
   6787   if test "$tst_compi_strtok_r" = "yes"; then
   6788     AC_MSG_CHECKING([if strtok_r usage allowed])
   6789     if test "x$curl_disallow_strtok_r" != "xyes"; then
   6790       AC_MSG_RESULT([yes])
   6791       tst_allow_strtok_r="yes"
   6792     else
   6793       AC_MSG_RESULT([no])
   6794       tst_allow_strtok_r="no"
   6795     fi
   6796   fi
   6797   #
   6798   AC_MSG_CHECKING([if strtok_r might be used])
   6799   if test "$tst_links_strtok_r" = "yes" &&
   6800      test "$tst_proto_strtok_r" = "yes" &&
   6801      test "$tst_compi_strtok_r" = "yes" &&
   6802      test "$tst_allow_strtok_r" = "yes"; then
   6803     AC_MSG_RESULT([yes])
   6804     AC_DEFINE_UNQUOTED(HAVE_STRTOK_R, 1,
   6805       [Define to 1 if you have the strtok_r function.])
   6806     ac_cv_func_strtok_r="yes"
   6807   else
   6808     AC_MSG_RESULT([no])
   6809     ac_cv_func_strtok_r="no"
   6810   fi
   6811 ])
   6812 
   6813 
   6814 dnl CURL_CHECK_FUNC_STRTOLL
   6815 dnl -------------------------------------------------
   6816 dnl Verify if strtoll is available, prototyped, and
   6817 dnl can be compiled. If all of these are true, and
   6818 dnl usage has not been previously disallowed with
   6819 dnl shell variable curl_disallow_strtoll, then
   6820 dnl HAVE_STRTOLL will be defined.
   6821 
   6822 AC_DEFUN([CURL_CHECK_FUNC_STRTOLL], [
   6823   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
   6824   #
   6825   tst_links_strtoll="unknown"
   6826   tst_proto_strtoll="unknown"
   6827   tst_compi_strtoll="unknown"
   6828   tst_allow_strtoll="unknown"
   6829   #
   6830   AC_MSG_CHECKING([if strtoll can be linked])
   6831   AC_LINK_IFELSE([
   6832     AC_LANG_FUNC_LINK_TRY([strtoll])
   6833   ],[
   6834     AC_MSG_RESULT([yes])
   6835     tst_links_strtoll="yes"
   6836   ],[
   6837     AC_MSG_RESULT([no])
   6838     tst_links_strtoll="no"
   6839   ])
   6840   #
   6841   if test "$tst_links_strtoll" = "yes"; then
   6842     AC_MSG_CHECKING([if strtoll is prototyped])
   6843     AC_EGREP_CPP([strtoll],[
   6844       $curl_includes_stdlib
   6845     ],[
   6846       AC_MSG_RESULT([yes])
   6847       tst_proto_strtoll="yes"
   6848     ],[
   6849       AC_MSG_RESULT([no])
   6850       tst_proto_strtoll="no"
   6851     ])
   6852   fi
   6853   #
   6854   if test "$tst_proto_strtoll" = "yes"; then
   6855     AC_MSG_CHECKING([if strtoll is compilable])
   6856     AC_COMPILE_IFELSE([
   6857       AC_LANG_PROGRAM([[
   6858         $curl_includes_stdlib
   6859       ]],[[
   6860         if(0 != strtoll(0, 0, 0))
   6861           return 1;
   6862       ]])
   6863     ],[
   6864       AC_MSG_RESULT([yes])
   6865       tst_compi_strtoll="yes"
   6866     ],[
   6867       AC_MSG_RESULT([no])
   6868       tst_compi_strtoll="no"
   6869     ])
   6870   fi
   6871   #
   6872   if test "$tst_compi_strtoll" = "yes"; then
   6873     AC_MSG_CHECKING([if strtoll usage allowed])
   6874     if test "x$curl_disallow_strtoll" != "xyes"; then
   6875       AC_MSG_RESULT([yes])
   6876       tst_allow_strtoll="yes"
   6877     else
   6878       AC_MSG_RESULT([no])
   6879       tst_allow_strtoll="no"
   6880     fi
   6881   fi
   6882   #
   6883   AC_MSG_CHECKING([if strtoll might be used])
   6884   if test "$tst_links_strtoll" = "yes" &&
   6885      test "$tst_proto_strtoll" = "yes" &&
   6886      test "$tst_compi_strtoll" = "yes" &&
   6887      test "$tst_allow_strtoll" = "yes"; then
   6888     AC_MSG_RESULT([yes])
   6889     AC_DEFINE_UNQUOTED(HAVE_STRTOLL, 1,
   6890       [Define to 1 if you have the strtoll function.])
   6891     ac_cv_func_strtoll="yes"
   6892   else
   6893     AC_MSG_RESULT([no])
   6894     ac_cv_func_strtoll="no"
   6895   fi
   6896 ])
   6897 
   6898 
   6899 dnl CURL_CHECK_FUNC_WRITEV
   6900 dnl -------------------------------------------------
   6901 dnl Verify if writev is available, prototyped, and
   6902 dnl can be compiled. If all of these are true, and
   6903 dnl usage has not been previously disallowed with
   6904 dnl shell variable curl_disallow_writev, then
   6905 dnl HAVE_WRITEV will be defined.
   6906 
   6907 AC_DEFUN([CURL_CHECK_FUNC_WRITEV], [
   6908   AC_REQUIRE([CURL_INCLUDES_SYS_UIO])dnl
   6909   #
   6910   tst_links_writev="unknown"
   6911   tst_proto_writev="unknown"
   6912   tst_compi_writev="unknown"
   6913   tst_allow_writev="unknown"
   6914   #
   6915   AC_MSG_CHECKING([if writev can be linked])
   6916   AC_LINK_IFELSE([
   6917     AC_LANG_FUNC_LINK_TRY([writev])
   6918   ],[
   6919     AC_MSG_RESULT([yes])
   6920     tst_links_writev="yes"
   6921   ],[
   6922     AC_MSG_RESULT([no])
   6923     tst_links_writev="no"
   6924   ])
   6925   #
   6926   if test "$tst_links_writev" = "yes"; then
   6927     AC_MSG_CHECKING([if writev is prototyped])
   6928     AC_EGREP_CPP([writev],[
   6929       $curl_includes_sys_uio
   6930     ],[
   6931       AC_MSG_RESULT([yes])
   6932       tst_proto_writev="yes"
   6933     ],[
   6934       AC_MSG_RESULT([no])
   6935       tst_proto_writev="no"
   6936     ])
   6937   fi
   6938   #
   6939   if test "$tst_proto_writev" = "yes"; then
   6940     AC_MSG_CHECKING([if writev is compilable])
   6941     AC_COMPILE_IFELSE([
   6942       AC_LANG_PROGRAM([[
   6943         $curl_includes_sys_uio
   6944       ]],[[
   6945         if(0 != writev(0, 0, 0))
   6946           return 1;
   6947       ]])
   6948     ],[
   6949       AC_MSG_RESULT([yes])
   6950       tst_compi_writev="yes"
   6951     ],[
   6952       AC_MSG_RESULT([no])
   6953       tst_compi_writev="no"
   6954     ])
   6955   fi
   6956   #
   6957   if test "$tst_compi_writev" = "yes"; then
   6958     AC_MSG_CHECKING([if writev usage allowed])
   6959     if test "x$curl_disallow_writev" != "xyes"; then
   6960       AC_MSG_RESULT([yes])
   6961       tst_allow_writev="yes"
   6962     else
   6963       AC_MSG_RESULT([no])
   6964       tst_allow_writev="no"
   6965     fi
   6966   fi
   6967   #
   6968   AC_MSG_CHECKING([if writev might be used])
   6969   if test "$tst_links_writev" = "yes" &&
   6970      test "$tst_proto_writev" = "yes" &&
   6971      test "$tst_compi_writev" = "yes" &&
   6972      test "$tst_allow_writev" = "yes"; then
   6973     AC_MSG_RESULT([yes])
   6974     AC_DEFINE_UNQUOTED(HAVE_WRITEV, 1,
   6975       [Define to 1 if you have the writev function.])
   6976     ac_cv_func_writev="yes"
   6977   else
   6978     AC_MSG_RESULT([no])
   6979     ac_cv_func_writev="no"
   6980   fi
   6981 ])
   6982