xref: /aosp_15_r20/external/curl/m4/curl-functions.m4 (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker#***************************************************************************
2*6236dae4SAndroid Build Coastguard Worker#                                  _   _ ____  _
3*6236dae4SAndroid Build Coastguard Worker#  Project                     ___| | | |  _ \| |
4*6236dae4SAndroid Build Coastguard Worker#                             / __| | | | |_) | |
5*6236dae4SAndroid Build Coastguard Worker#                            | (__| |_| |  _ <| |___
6*6236dae4SAndroid Build Coastguard Worker#                             \___|\___/|_| \_\_____|
7*6236dae4SAndroid Build Coastguard Worker#
8*6236dae4SAndroid Build Coastguard Worker# Copyright (C) Daniel Stenberg, <[email protected]>, et al.
9*6236dae4SAndroid Build Coastguard Worker#
10*6236dae4SAndroid Build Coastguard Worker# This software is licensed as described in the file COPYING, which
11*6236dae4SAndroid Build Coastguard Worker# you should have received as part of this distribution. The terms
12*6236dae4SAndroid Build Coastguard Worker# are also available at https://curl.se/docs/copyright.html.
13*6236dae4SAndroid Build Coastguard Worker#
14*6236dae4SAndroid Build Coastguard Worker# You may opt to use, copy, modify, merge, publish, distribute and/or sell
15*6236dae4SAndroid Build Coastguard Worker# copies of the Software, and permit persons to whom the Software is
16*6236dae4SAndroid Build Coastguard Worker# furnished to do so, under the terms of the COPYING file.
17*6236dae4SAndroid Build Coastguard Worker#
18*6236dae4SAndroid Build Coastguard Worker# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19*6236dae4SAndroid Build Coastguard Worker# KIND, either express or implied.
20*6236dae4SAndroid Build Coastguard Worker#
21*6236dae4SAndroid Build Coastguard Worker# SPDX-License-Identifier: curl
22*6236dae4SAndroid Build Coastguard Worker#
23*6236dae4SAndroid Build Coastguard Worker#***************************************************************************
24*6236dae4SAndroid Build Coastguard Worker
25*6236dae4SAndroid Build Coastguard Worker# File version for 'aclocal' use. Keep it a single number.
26*6236dae4SAndroid Build Coastguard Worker# serial 73
27*6236dae4SAndroid Build Coastguard Worker
28*6236dae4SAndroid Build Coastguard Worker
29*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_ARPA_INET
30*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
31*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
32*6236dae4SAndroid Build Coastguard Workerdnl included when arpa/inet.h is to be included.
33*6236dae4SAndroid Build Coastguard Worker
34*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_ARPA_INET], [
35*6236dae4SAndroid Build Coastguard Workercurl_includes_arpa_inet="\
36*6236dae4SAndroid Build Coastguard Worker/* includes start */
37*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
38*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
39*6236dae4SAndroid Build Coastguard Worker#endif
40*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_SOCKET_H
41*6236dae4SAndroid Build Coastguard Worker#  include <sys/socket.h>
42*6236dae4SAndroid Build Coastguard Worker#endif
43*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_NETINET_IN_H
44*6236dae4SAndroid Build Coastguard Worker#  include <netinet/in.h>
45*6236dae4SAndroid Build Coastguard Worker#endif
46*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_ARPA_INET_H
47*6236dae4SAndroid Build Coastguard Worker#  include <arpa/inet.h>
48*6236dae4SAndroid Build Coastguard Worker#endif
49*6236dae4SAndroid Build Coastguard Worker#ifdef _WIN32
50*6236dae4SAndroid Build Coastguard Worker#include <winsock2.h>
51*6236dae4SAndroid Build Coastguard Worker#include <ws2tcpip.h>
52*6236dae4SAndroid Build Coastguard Worker#endif
53*6236dae4SAndroid Build Coastguard Worker/* includes end */"
54*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
55*6236dae4SAndroid Build Coastguard Worker    sys/types.h sys/socket.h netinet/in.h arpa/inet.h,
56*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_arpa_inet])
57*6236dae4SAndroid Build Coastguard Worker])
58*6236dae4SAndroid Build Coastguard Worker
59*6236dae4SAndroid Build Coastguard Worker
60*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_FCNTL
61*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
62*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
63*6236dae4SAndroid Build Coastguard Workerdnl included when fcntl.h is to be included.
64*6236dae4SAndroid Build Coastguard Worker
65*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_FCNTL], [
66*6236dae4SAndroid Build Coastguard Workercurl_includes_fcntl="\
67*6236dae4SAndroid Build Coastguard Worker/* includes start */
68*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
69*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
70*6236dae4SAndroid Build Coastguard Worker#endif
71*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_UNISTD_H
72*6236dae4SAndroid Build Coastguard Worker#  include <unistd.h>
73*6236dae4SAndroid Build Coastguard Worker#endif
74*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_FCNTL_H
75*6236dae4SAndroid Build Coastguard Worker#  include <fcntl.h>
76*6236dae4SAndroid Build Coastguard Worker#endif
77*6236dae4SAndroid Build Coastguard Worker/* includes end */"
78*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
79*6236dae4SAndroid Build Coastguard Worker    sys/types.h unistd.h fcntl.h,
80*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_fcntl])
81*6236dae4SAndroid Build Coastguard Worker])
82*6236dae4SAndroid Build Coastguard Worker
83*6236dae4SAndroid Build Coastguard Worker
84*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_IFADDRS
85*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
86*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
87*6236dae4SAndroid Build Coastguard Workerdnl included when ifaddrs.h is to be included.
88*6236dae4SAndroid Build Coastguard Worker
89*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_IFADDRS], [
90*6236dae4SAndroid Build Coastguard Workercurl_includes_ifaddrs="\
91*6236dae4SAndroid Build Coastguard Worker/* includes start */
92*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
93*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
94*6236dae4SAndroid Build Coastguard Worker#endif
95*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_SOCKET_H
96*6236dae4SAndroid Build Coastguard Worker#  include <sys/socket.h>
97*6236dae4SAndroid Build Coastguard Worker#endif
98*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_NETINET_IN_H
99*6236dae4SAndroid Build Coastguard Worker#  include <netinet/in.h>
100*6236dae4SAndroid Build Coastguard Worker#endif
101*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_IFADDRS_H
102*6236dae4SAndroid Build Coastguard Worker#  include <ifaddrs.h>
103*6236dae4SAndroid Build Coastguard Worker#endif
104*6236dae4SAndroid Build Coastguard Worker/* includes end */"
105*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
106*6236dae4SAndroid Build Coastguard Worker    sys/types.h sys/socket.h netinet/in.h ifaddrs.h,
107*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_ifaddrs])
108*6236dae4SAndroid Build Coastguard Worker])
109*6236dae4SAndroid Build Coastguard Worker
110*6236dae4SAndroid Build Coastguard Worker
111*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_LIBGEN
112*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
113*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
114*6236dae4SAndroid Build Coastguard Workerdnl included when libgen.h is to be included.
115*6236dae4SAndroid Build Coastguard Worker
116*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_LIBGEN], [
117*6236dae4SAndroid Build Coastguard Workercurl_includes_libgen="\
118*6236dae4SAndroid Build Coastguard Worker/* includes start */
119*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
120*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
121*6236dae4SAndroid Build Coastguard Worker#endif
122*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_LIBGEN_H
123*6236dae4SAndroid Build Coastguard Worker#  include <libgen.h>
124*6236dae4SAndroid Build Coastguard Worker#endif
125*6236dae4SAndroid Build Coastguard Worker/* includes end */"
126*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
127*6236dae4SAndroid Build Coastguard Worker    sys/types.h libgen.h,
128*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_libgen])
129*6236dae4SAndroid Build Coastguard Worker])
130*6236dae4SAndroid Build Coastguard Worker
131*6236dae4SAndroid Build Coastguard Worker
132*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_NETDB
133*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
134*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
135*6236dae4SAndroid Build Coastguard Workerdnl included when netdb.h is to be included.
136*6236dae4SAndroid Build Coastguard Worker
137*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_NETDB], [
138*6236dae4SAndroid Build Coastguard Workercurl_includes_netdb="\
139*6236dae4SAndroid Build Coastguard Worker/* includes start */
140*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
141*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
142*6236dae4SAndroid Build Coastguard Worker#endif
143*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_NETDB_H
144*6236dae4SAndroid Build Coastguard Worker#  include <netdb.h>
145*6236dae4SAndroid Build Coastguard Worker#endif
146*6236dae4SAndroid Build Coastguard Worker/* includes end */"
147*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
148*6236dae4SAndroid Build Coastguard Worker    sys/types.h netdb.h,
149*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_netdb])
150*6236dae4SAndroid Build Coastguard Worker])
151*6236dae4SAndroid Build Coastguard Worker
152*6236dae4SAndroid Build Coastguard Worker
153*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_SETJMP
154*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
155*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
156*6236dae4SAndroid Build Coastguard Workerdnl included when setjmp.h is to be included.
157*6236dae4SAndroid Build Coastguard Worker
158*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_SETJMP], [
159*6236dae4SAndroid Build Coastguard Workercurl_includes_setjmp="\
160*6236dae4SAndroid Build Coastguard Worker/* includes start */
161*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
162*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
163*6236dae4SAndroid Build Coastguard Worker#endif
164*6236dae4SAndroid Build Coastguard Worker#include <setjmp.h>
165*6236dae4SAndroid Build Coastguard Worker/* includes end */"
166*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
167*6236dae4SAndroid Build Coastguard Worker    sys/types.h,
168*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_setjmp])
169*6236dae4SAndroid Build Coastguard Worker])
170*6236dae4SAndroid Build Coastguard Worker
171*6236dae4SAndroid Build Coastguard Worker
172*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_SIGNAL
173*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
174*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
175*6236dae4SAndroid Build Coastguard Workerdnl included when signal.h is to be included.
176*6236dae4SAndroid Build Coastguard Worker
177*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_SIGNAL], [
178*6236dae4SAndroid Build Coastguard Workercurl_includes_signal="\
179*6236dae4SAndroid Build Coastguard Worker/* includes start */
180*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
181*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
182*6236dae4SAndroid Build Coastguard Worker#endif
183*6236dae4SAndroid Build Coastguard Worker#include <signal.h>
184*6236dae4SAndroid Build Coastguard Worker/* includes end */"
185*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
186*6236dae4SAndroid Build Coastguard Worker    sys/types.h,
187*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_signal])
188*6236dae4SAndroid Build Coastguard Worker])
189*6236dae4SAndroid Build Coastguard Worker
190*6236dae4SAndroid Build Coastguard Worker
191*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_STDLIB
192*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
193*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
194*6236dae4SAndroid Build Coastguard Workerdnl included when stdlib.h is to be included.
195*6236dae4SAndroid Build Coastguard Worker
196*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_STDLIB], [
197*6236dae4SAndroid Build Coastguard Workercurl_includes_stdlib="\
198*6236dae4SAndroid Build Coastguard Worker/* includes start */
199*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
200*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
201*6236dae4SAndroid Build Coastguard Worker#endif
202*6236dae4SAndroid Build Coastguard Worker#include <stdlib.h>
203*6236dae4SAndroid Build Coastguard Worker/* includes end */"
204*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
205*6236dae4SAndroid Build Coastguard Worker    sys/types.h,
206*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_stdlib])
207*6236dae4SAndroid Build Coastguard Worker])
208*6236dae4SAndroid Build Coastguard Worker
209*6236dae4SAndroid Build Coastguard Worker
210*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_STRING
211*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
212*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
213*6236dae4SAndroid Build Coastguard Workerdnl included when string(s).h is to be included.
214*6236dae4SAndroid Build Coastguard Worker
215*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_STRING], [
216*6236dae4SAndroid Build Coastguard Workercurl_includes_string="\
217*6236dae4SAndroid Build Coastguard Worker/* includes start */
218*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
219*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
220*6236dae4SAndroid Build Coastguard Worker#endif
221*6236dae4SAndroid Build Coastguard Worker#include <string.h>
222*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_STRINGS_H
223*6236dae4SAndroid Build Coastguard Worker#  include <strings.h>
224*6236dae4SAndroid Build Coastguard Worker#endif
225*6236dae4SAndroid Build Coastguard Worker/* includes end */"
226*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
227*6236dae4SAndroid Build Coastguard Worker    sys/types.h strings.h,
228*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_string])
229*6236dae4SAndroid Build Coastguard Worker])
230*6236dae4SAndroid Build Coastguard Worker
231*6236dae4SAndroid Build Coastguard Worker
232*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_STROPTS
233*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
234*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
235*6236dae4SAndroid Build Coastguard Workerdnl included when stropts.h is to be included.
236*6236dae4SAndroid Build Coastguard Worker
237*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_STROPTS], [
238*6236dae4SAndroid Build Coastguard Workercurl_includes_stropts="\
239*6236dae4SAndroid Build Coastguard Worker/* includes start */
240*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
241*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
242*6236dae4SAndroid Build Coastguard Worker#endif
243*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_UNISTD_H
244*6236dae4SAndroid Build Coastguard Worker#  include <unistd.h>
245*6236dae4SAndroid Build Coastguard Worker#endif
246*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_SOCKET_H
247*6236dae4SAndroid Build Coastguard Worker#  include <sys/socket.h>
248*6236dae4SAndroid Build Coastguard Worker#endif
249*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_IOCTL_H
250*6236dae4SAndroid Build Coastguard Worker#  include <sys/ioctl.h>
251*6236dae4SAndroid Build Coastguard Worker#endif
252*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_STROPTS_H
253*6236dae4SAndroid Build Coastguard Worker#  include <stropts.h>
254*6236dae4SAndroid Build Coastguard Worker#endif
255*6236dae4SAndroid Build Coastguard Worker/* includes end */"
256*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
257*6236dae4SAndroid Build Coastguard Worker    sys/types.h unistd.h sys/socket.h sys/ioctl.h stropts.h,
258*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_stropts])
259*6236dae4SAndroid Build Coastguard Worker])
260*6236dae4SAndroid Build Coastguard Worker
261*6236dae4SAndroid Build Coastguard Worker
262*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_SYS_SOCKET
263*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
264*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
265*6236dae4SAndroid Build Coastguard Workerdnl included when sys/socket.h is to be included.
266*6236dae4SAndroid Build Coastguard Worker
267*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_SYS_SOCKET], [
268*6236dae4SAndroid Build Coastguard Workercurl_includes_sys_socket="\
269*6236dae4SAndroid Build Coastguard Worker/* includes start */
270*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
271*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
272*6236dae4SAndroid Build Coastguard Worker#endif
273*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_SOCKET_H
274*6236dae4SAndroid Build Coastguard Worker#  include <sys/socket.h>
275*6236dae4SAndroid Build Coastguard Worker#endif
276*6236dae4SAndroid Build Coastguard Worker/* includes end */"
277*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
278*6236dae4SAndroid Build Coastguard Worker    sys/types.h sys/socket.h,
279*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_sys_socket])
280*6236dae4SAndroid Build Coastguard Worker])
281*6236dae4SAndroid Build Coastguard Worker
282*6236dae4SAndroid Build Coastguard Worker
283*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_SYS_TYPES
284*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
285*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
286*6236dae4SAndroid Build Coastguard Workerdnl included when sys/types.h is to be included.
287*6236dae4SAndroid Build Coastguard Worker
288*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_SYS_TYPES], [
289*6236dae4SAndroid Build Coastguard Workercurl_includes_sys_types="\
290*6236dae4SAndroid Build Coastguard Worker/* includes start */
291*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
292*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
293*6236dae4SAndroid Build Coastguard Worker#endif
294*6236dae4SAndroid Build Coastguard Worker/* includes end */"
295*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
296*6236dae4SAndroid Build Coastguard Worker    sys/types.h,
297*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_sys_types])
298*6236dae4SAndroid Build Coastguard Worker])
299*6236dae4SAndroid Build Coastguard Worker
300*6236dae4SAndroid Build Coastguard Worker
301*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_SYS_XATTR
302*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
303*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
304*6236dae4SAndroid Build Coastguard Workerdnl included when sys/xattr.h is to be included.
305*6236dae4SAndroid Build Coastguard Worker
306*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_SYS_XATTR], [
307*6236dae4SAndroid Build Coastguard Workercurl_includes_sys_xattr="\
308*6236dae4SAndroid Build Coastguard Worker/* includes start */
309*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
310*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
311*6236dae4SAndroid Build Coastguard Worker#endif
312*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_XATTR_H
313*6236dae4SAndroid Build Coastguard Worker#  include <sys/xattr.h>
314*6236dae4SAndroid Build Coastguard Worker#endif
315*6236dae4SAndroid Build Coastguard Worker/* includes end */"
316*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
317*6236dae4SAndroid Build Coastguard Worker    sys/types.h sys/xattr.h,
318*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_sys_xattr])
319*6236dae4SAndroid Build Coastguard Worker])
320*6236dae4SAndroid Build Coastguard Worker
321*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_TIME
322*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
323*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
324*6236dae4SAndroid Build Coastguard Workerdnl included when time.h is to be included.
325*6236dae4SAndroid Build Coastguard Worker
326*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_TIME], [
327*6236dae4SAndroid Build Coastguard Workercurl_includes_time="\
328*6236dae4SAndroid Build Coastguard Worker/* includes start */
329*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
330*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
331*6236dae4SAndroid Build Coastguard Worker#endif
332*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TIME_H
333*6236dae4SAndroid Build Coastguard Worker#  include <sys/time.h>
334*6236dae4SAndroid Build Coastguard Worker#endif
335*6236dae4SAndroid Build Coastguard Worker#include <time.h>
336*6236dae4SAndroid Build Coastguard Worker/* includes end */"
337*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
338*6236dae4SAndroid Build Coastguard Worker    sys/types.h sys/time.h,
339*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_time])
340*6236dae4SAndroid Build Coastguard Worker])
341*6236dae4SAndroid Build Coastguard Worker
342*6236dae4SAndroid Build Coastguard Worker
343*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_UNISTD
344*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
345*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
346*6236dae4SAndroid Build Coastguard Workerdnl included when unistd.h is to be included.
347*6236dae4SAndroid Build Coastguard Worker
348*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_UNISTD], [
349*6236dae4SAndroid Build Coastguard Workercurl_includes_unistd="\
350*6236dae4SAndroid Build Coastguard Worker/* includes start */
351*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
352*6236dae4SAndroid Build Coastguard Worker#  include <sys/types.h>
353*6236dae4SAndroid Build Coastguard Worker#endif
354*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_UNISTD_H
355*6236dae4SAndroid Build Coastguard Worker#  include <unistd.h>
356*6236dae4SAndroid Build Coastguard Worker#endif
357*6236dae4SAndroid Build Coastguard Worker/* includes end */"
358*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
359*6236dae4SAndroid Build Coastguard Worker    sys/types.h unistd.h,
360*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_unistd])
361*6236dae4SAndroid Build Coastguard Worker])
362*6236dae4SAndroid Build Coastguard Worker
363*6236dae4SAndroid Build Coastguard Worker
364*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_WINSOCK2
365*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
366*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
367*6236dae4SAndroid Build Coastguard Workerdnl included when winsock2.h is to be included.
368*6236dae4SAndroid Build Coastguard Worker
369*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_WINSOCK2], [
370*6236dae4SAndroid Build Coastguard Workercurl_includes_winsock2="\
371*6236dae4SAndroid Build Coastguard Worker/* includes start */
372*6236dae4SAndroid Build Coastguard Worker#ifdef _WIN32
373*6236dae4SAndroid Build Coastguard Worker#  ifndef WIN32_LEAN_AND_MEAN
374*6236dae4SAndroid Build Coastguard Worker#    define WIN32_LEAN_AND_MEAN
375*6236dae4SAndroid Build Coastguard Worker#  endif
376*6236dae4SAndroid Build Coastguard Worker#  include <winsock2.h>
377*6236dae4SAndroid Build Coastguard Worker#endif
378*6236dae4SAndroid Build Coastguard Worker/* includes end */"
379*6236dae4SAndroid Build Coastguard Worker  CURL_CHECK_NATIVE_WINDOWS
380*6236dae4SAndroid Build Coastguard Worker])
381*6236dae4SAndroid Build Coastguard Worker
382*6236dae4SAndroid Build Coastguard Worker
383*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_WS2TCPIP
384*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
385*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
386*6236dae4SAndroid Build Coastguard Workerdnl included when ws2tcpip.h is to be included.
387*6236dae4SAndroid Build Coastguard Worker
388*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_WS2TCPIP], [
389*6236dae4SAndroid Build Coastguard Workercurl_includes_ws2tcpip="\
390*6236dae4SAndroid Build Coastguard Worker/* includes start */
391*6236dae4SAndroid Build Coastguard Worker#ifdef _WIN32
392*6236dae4SAndroid Build Coastguard Worker#  ifndef WIN32_LEAN_AND_MEAN
393*6236dae4SAndroid Build Coastguard Worker#    define WIN32_LEAN_AND_MEAN
394*6236dae4SAndroid Build Coastguard Worker#  endif
395*6236dae4SAndroid Build Coastguard Worker#  include <winsock2.h>
396*6236dae4SAndroid Build Coastguard Worker#  include <ws2tcpip.h>
397*6236dae4SAndroid Build Coastguard Worker#endif
398*6236dae4SAndroid Build Coastguard Worker/* includes end */"
399*6236dae4SAndroid Build Coastguard Worker  CURL_CHECK_NATIVE_WINDOWS
400*6236dae4SAndroid Build Coastguard Worker])
401*6236dae4SAndroid Build Coastguard Worker
402*6236dae4SAndroid Build Coastguard Worker
403*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_BSDSOCKET
404*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
405*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
406*6236dae4SAndroid Build Coastguard Workerdnl included when bsdsocket.h is to be included.
407*6236dae4SAndroid Build Coastguard Worker
408*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_BSDSOCKET], [
409*6236dae4SAndroid Build Coastguard Workercurl_includes_bsdsocket="\
410*6236dae4SAndroid Build Coastguard Worker/* includes start */
411*6236dae4SAndroid Build Coastguard Worker#if defined(HAVE_PROTO_BSDSOCKET_H)
412*6236dae4SAndroid Build Coastguard Worker#  define __NO_NET_API
413*6236dae4SAndroid Build Coastguard Worker#  define __USE_INLINE__
414*6236dae4SAndroid Build Coastguard Worker#  include <proto/bsdsocket.h>
415*6236dae4SAndroid Build Coastguard Worker#  ifdef HAVE_SYS_IOCTL_H
416*6236dae4SAndroid Build Coastguard Worker#    include <sys/ioctl.h>
417*6236dae4SAndroid Build Coastguard Worker#  endif
418*6236dae4SAndroid Build Coastguard Worker#  ifdef __amigaos4__
419*6236dae4SAndroid Build Coastguard Workerstruct SocketIFace *ISocket = NULL;
420*6236dae4SAndroid Build Coastguard Worker#  else
421*6236dae4SAndroid Build Coastguard Workerstruct Library *SocketBase = NULL;
422*6236dae4SAndroid Build Coastguard Worker#  endif
423*6236dae4SAndroid Build Coastguard Worker#  define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
424*6236dae4SAndroid Build Coastguard Worker#endif
425*6236dae4SAndroid Build Coastguard Worker/* includes end */"
426*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
427*6236dae4SAndroid Build Coastguard Worker    proto/bsdsocket.h,
428*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_bsdsocket])
429*6236dae4SAndroid Build Coastguard Worker])
430*6236dae4SAndroid Build Coastguard Worker
431*6236dae4SAndroid Build Coastguard Workerdnl CURL_INCLUDES_NETIF
432*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
433*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with list of headers that must be
434*6236dae4SAndroid Build Coastguard Workerdnl included when net/if.h is to be included.
435*6236dae4SAndroid Build Coastguard Worker
436*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_INCLUDES_NETIF], [
437*6236dae4SAndroid Build Coastguard Workercurl_includes_netif="\
438*6236dae4SAndroid Build Coastguard Worker/* includes start */
439*6236dae4SAndroid Build Coastguard Worker#ifdef HAVE_NET_IF_H
440*6236dae4SAndroid Build Coastguard Worker#  include <net/if.h>
441*6236dae4SAndroid Build Coastguard Worker#endif
442*6236dae4SAndroid Build Coastguard Worker/* includes end */"
443*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(
444*6236dae4SAndroid Build Coastguard Worker    net/if.h,
445*6236dae4SAndroid Build Coastguard Worker    [], [], [$curl_includes_netif])
446*6236dae4SAndroid Build Coastguard Worker])
447*6236dae4SAndroid Build Coastguard Worker
448*6236dae4SAndroid Build Coastguard Worker
449*6236dae4SAndroid Build Coastguard Workerdnl CURL_PREPROCESS_CALLCONV
450*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
451*6236dae4SAndroid Build Coastguard Workerdnl Set up variable with a preprocessor block which
452*6236dae4SAndroid Build Coastguard Workerdnl defines function calling convention.
453*6236dae4SAndroid Build Coastguard Worker
454*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_PREPROCESS_CALLCONV], [
455*6236dae4SAndroid Build Coastguard Workercurl_preprocess_callconv="\
456*6236dae4SAndroid Build Coastguard Worker/* preprocess start */
457*6236dae4SAndroid Build Coastguard Worker#ifdef _WIN32
458*6236dae4SAndroid Build Coastguard Worker#  define FUNCALLCONV __stdcall
459*6236dae4SAndroid Build Coastguard Worker#else
460*6236dae4SAndroid Build Coastguard Worker#  define FUNCALLCONV
461*6236dae4SAndroid Build Coastguard Worker#endif
462*6236dae4SAndroid Build Coastguard Worker/* preprocess end */"
463*6236dae4SAndroid Build Coastguard Worker])
464*6236dae4SAndroid Build Coastguard Worker
465*6236dae4SAndroid Build Coastguard Worker
466*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_ALARM
467*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
468*6236dae4SAndroid Build Coastguard Workerdnl Verify if alarm is available, prototyped, and
469*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
470*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
471*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_alarm, then
472*6236dae4SAndroid Build Coastguard Workerdnl HAVE_ALARM will be defined.
473*6236dae4SAndroid Build Coastguard Worker
474*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_ALARM], [
475*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
476*6236dae4SAndroid Build Coastguard Worker  #
477*6236dae4SAndroid Build Coastguard Worker  tst_links_alarm="unknown"
478*6236dae4SAndroid Build Coastguard Worker  tst_proto_alarm="unknown"
479*6236dae4SAndroid Build Coastguard Worker  tst_compi_alarm="unknown"
480*6236dae4SAndroid Build Coastguard Worker  tst_allow_alarm="unknown"
481*6236dae4SAndroid Build Coastguard Worker  #
482*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if alarm can be linked])
483*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
484*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([alarm])
485*6236dae4SAndroid Build Coastguard Worker  ],[
486*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
487*6236dae4SAndroid Build Coastguard Worker    tst_links_alarm="yes"
488*6236dae4SAndroid Build Coastguard Worker  ],[
489*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
490*6236dae4SAndroid Build Coastguard Worker    tst_links_alarm="no"
491*6236dae4SAndroid Build Coastguard Worker  ])
492*6236dae4SAndroid Build Coastguard Worker  #
493*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_alarm" = "yes"; then
494*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if alarm is prototyped])
495*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([alarm],[
496*6236dae4SAndroid Build Coastguard Worker      $curl_includes_unistd
497*6236dae4SAndroid Build Coastguard Worker    ],[
498*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
499*6236dae4SAndroid Build Coastguard Worker      tst_proto_alarm="yes"
500*6236dae4SAndroid Build Coastguard Worker    ],[
501*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
502*6236dae4SAndroid Build Coastguard Worker      tst_proto_alarm="no"
503*6236dae4SAndroid Build Coastguard Worker    ])
504*6236dae4SAndroid Build Coastguard Worker  fi
505*6236dae4SAndroid Build Coastguard Worker  #
506*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_alarm" = "yes"; then
507*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if alarm is compilable])
508*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
509*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
510*6236dae4SAndroid Build Coastguard Worker        $curl_includes_unistd
511*6236dae4SAndroid Build Coastguard Worker      ]],[[
512*6236dae4SAndroid Build Coastguard Worker        if(0 != alarm(0))
513*6236dae4SAndroid Build Coastguard Worker          return 1;
514*6236dae4SAndroid Build Coastguard Worker      ]])
515*6236dae4SAndroid Build Coastguard Worker    ],[
516*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
517*6236dae4SAndroid Build Coastguard Worker      tst_compi_alarm="yes"
518*6236dae4SAndroid Build Coastguard Worker    ],[
519*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
520*6236dae4SAndroid Build Coastguard Worker      tst_compi_alarm="no"
521*6236dae4SAndroid Build Coastguard Worker    ])
522*6236dae4SAndroid Build Coastguard Worker  fi
523*6236dae4SAndroid Build Coastguard Worker  #
524*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_alarm" = "yes"; then
525*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if alarm usage allowed])
526*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_alarm" != "xyes"; then
527*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
528*6236dae4SAndroid Build Coastguard Worker      tst_allow_alarm="yes"
529*6236dae4SAndroid Build Coastguard Worker    else
530*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
531*6236dae4SAndroid Build Coastguard Worker      tst_allow_alarm="no"
532*6236dae4SAndroid Build Coastguard Worker    fi
533*6236dae4SAndroid Build Coastguard Worker  fi
534*6236dae4SAndroid Build Coastguard Worker  #
535*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if alarm might be used])
536*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_alarm" = "yes" &&
537*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_alarm" = "yes" &&
538*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_alarm" = "yes" &&
539*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_alarm" = "yes"; then
540*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
541*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_ALARM, 1,
542*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the alarm function.])
543*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_alarm="yes"
544*6236dae4SAndroid Build Coastguard Worker  else
545*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
546*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_alarm="no"
547*6236dae4SAndroid Build Coastguard Worker  fi
548*6236dae4SAndroid Build Coastguard Worker])
549*6236dae4SAndroid Build Coastguard Worker
550*6236dae4SAndroid Build Coastguard Worker
551*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_BASENAME
552*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
553*6236dae4SAndroid Build Coastguard Workerdnl Verify if basename is available, prototyped, and
554*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
555*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
556*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_basename, then
557*6236dae4SAndroid Build Coastguard Workerdnl HAVE_BASENAME will be defined.
558*6236dae4SAndroid Build Coastguard Worker
559*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_BASENAME], [
560*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
561*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_LIBGEN])dnl
562*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
563*6236dae4SAndroid Build Coastguard Worker  #
564*6236dae4SAndroid Build Coastguard Worker  tst_links_basename="unknown"
565*6236dae4SAndroid Build Coastguard Worker  tst_proto_basename="unknown"
566*6236dae4SAndroid Build Coastguard Worker  tst_compi_basename="unknown"
567*6236dae4SAndroid Build Coastguard Worker  tst_allow_basename="unknown"
568*6236dae4SAndroid Build Coastguard Worker  #
569*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if basename can be linked])
570*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
571*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([basename])
572*6236dae4SAndroid Build Coastguard Worker  ],[
573*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
574*6236dae4SAndroid Build Coastguard Worker    tst_links_basename="yes"
575*6236dae4SAndroid Build Coastguard Worker  ],[
576*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
577*6236dae4SAndroid Build Coastguard Worker    tst_links_basename="no"
578*6236dae4SAndroid Build Coastguard Worker  ])
579*6236dae4SAndroid Build Coastguard Worker  #
580*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_basename" = "yes"; then
581*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if basename is prototyped])
582*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([basename],[
583*6236dae4SAndroid Build Coastguard Worker      $curl_includes_string
584*6236dae4SAndroid Build Coastguard Worker      $curl_includes_libgen
585*6236dae4SAndroid Build Coastguard Worker      $curl_includes_unistd
586*6236dae4SAndroid Build Coastguard Worker    ],[
587*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
588*6236dae4SAndroid Build Coastguard Worker      tst_proto_basename="yes"
589*6236dae4SAndroid Build Coastguard Worker    ],[
590*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
591*6236dae4SAndroid Build Coastguard Worker      tst_proto_basename="no"
592*6236dae4SAndroid Build Coastguard Worker    ])
593*6236dae4SAndroid Build Coastguard Worker  fi
594*6236dae4SAndroid Build Coastguard Worker  #
595*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_basename" = "yes"; then
596*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if basename is compilable])
597*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
598*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
599*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
600*6236dae4SAndroid Build Coastguard Worker        $curl_includes_libgen
601*6236dae4SAndroid Build Coastguard Worker        $curl_includes_unistd
602*6236dae4SAndroid Build Coastguard Worker      ]],[[
603*6236dae4SAndroid Build Coastguard Worker        if(0 != basename(0))
604*6236dae4SAndroid Build Coastguard Worker          return 1;
605*6236dae4SAndroid Build Coastguard Worker      ]])
606*6236dae4SAndroid Build Coastguard Worker    ],[
607*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
608*6236dae4SAndroid Build Coastguard Worker      tst_compi_basename="yes"
609*6236dae4SAndroid Build Coastguard Worker    ],[
610*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
611*6236dae4SAndroid Build Coastguard Worker      tst_compi_basename="no"
612*6236dae4SAndroid Build Coastguard Worker    ])
613*6236dae4SAndroid Build Coastguard Worker  fi
614*6236dae4SAndroid Build Coastguard Worker  #
615*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_basename" = "yes"; then
616*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if basename usage allowed])
617*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_basename" != "xyes"; then
618*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
619*6236dae4SAndroid Build Coastguard Worker      tst_allow_basename="yes"
620*6236dae4SAndroid Build Coastguard Worker    else
621*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
622*6236dae4SAndroid Build Coastguard Worker      tst_allow_basename="no"
623*6236dae4SAndroid Build Coastguard Worker    fi
624*6236dae4SAndroid Build Coastguard Worker  fi
625*6236dae4SAndroid Build Coastguard Worker  #
626*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if basename might be used])
627*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_basename" = "yes" &&
628*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_basename" = "yes" &&
629*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_basename" = "yes" &&
630*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_basename" = "yes"; then
631*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
632*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_BASENAME, 1,
633*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the basename function.])
634*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_basename="yes"
635*6236dae4SAndroid Build Coastguard Worker  else
636*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
637*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_basename="no"
638*6236dae4SAndroid Build Coastguard Worker  fi
639*6236dae4SAndroid Build Coastguard Worker])
640*6236dae4SAndroid Build Coastguard Worker
641*6236dae4SAndroid Build Coastguard Worker
642*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_CLOSESOCKET
643*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
644*6236dae4SAndroid Build Coastguard Workerdnl Verify if closesocket is available, prototyped, and
645*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
646*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
647*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_closesocket, then
648*6236dae4SAndroid Build Coastguard Workerdnl HAVE_CLOSESOCKET will be defined.
649*6236dae4SAndroid Build Coastguard Worker
650*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
651*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
652*6236dae4SAndroid Build Coastguard Worker  #
653*6236dae4SAndroid Build Coastguard Worker  tst_links_closesocket="unknown"
654*6236dae4SAndroid Build Coastguard Worker  tst_proto_closesocket="unknown"
655*6236dae4SAndroid Build Coastguard Worker  tst_compi_closesocket="unknown"
656*6236dae4SAndroid Build Coastguard Worker  tst_allow_closesocket="unknown"
657*6236dae4SAndroid Build Coastguard Worker  #
658*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if closesocket can be linked])
659*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
660*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
661*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
662*6236dae4SAndroid Build Coastguard Worker    ]],[[
663*6236dae4SAndroid Build Coastguard Worker      if(0 != closesocket(0))
664*6236dae4SAndroid Build Coastguard Worker        return 1;
665*6236dae4SAndroid Build Coastguard Worker    ]])
666*6236dae4SAndroid Build Coastguard Worker  ],[
667*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
668*6236dae4SAndroid Build Coastguard Worker    tst_links_closesocket="yes"
669*6236dae4SAndroid Build Coastguard Worker  ],[
670*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
671*6236dae4SAndroid Build Coastguard Worker    tst_links_closesocket="no"
672*6236dae4SAndroid Build Coastguard Worker  ])
673*6236dae4SAndroid Build Coastguard Worker  #
674*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_closesocket" = "yes"; then
675*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if closesocket is prototyped])
676*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([closesocket],[
677*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
678*6236dae4SAndroid Build Coastguard Worker    ],[
679*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
680*6236dae4SAndroid Build Coastguard Worker      tst_proto_closesocket="yes"
681*6236dae4SAndroid Build Coastguard Worker    ],[
682*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
683*6236dae4SAndroid Build Coastguard Worker      tst_proto_closesocket="no"
684*6236dae4SAndroid Build Coastguard Worker    ])
685*6236dae4SAndroid Build Coastguard Worker  fi
686*6236dae4SAndroid Build Coastguard Worker  #
687*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_closesocket" = "yes"; then
688*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if closesocket is compilable])
689*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
690*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
691*6236dae4SAndroid Build Coastguard Worker        $curl_includes_winsock2
692*6236dae4SAndroid Build Coastguard Worker      ]],[[
693*6236dae4SAndroid Build Coastguard Worker        if(0 != closesocket(0))
694*6236dae4SAndroid Build Coastguard Worker          return 1;
695*6236dae4SAndroid Build Coastguard Worker      ]])
696*6236dae4SAndroid Build Coastguard Worker    ],[
697*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
698*6236dae4SAndroid Build Coastguard Worker      tst_compi_closesocket="yes"
699*6236dae4SAndroid Build Coastguard Worker    ],[
700*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
701*6236dae4SAndroid Build Coastguard Worker      tst_compi_closesocket="no"
702*6236dae4SAndroid Build Coastguard Worker    ])
703*6236dae4SAndroid Build Coastguard Worker  fi
704*6236dae4SAndroid Build Coastguard Worker  #
705*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_closesocket" = "yes"; then
706*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if closesocket usage allowed])
707*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_closesocket" != "xyes"; then
708*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
709*6236dae4SAndroid Build Coastguard Worker      tst_allow_closesocket="yes"
710*6236dae4SAndroid Build Coastguard Worker    else
711*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
712*6236dae4SAndroid Build Coastguard Worker      tst_allow_closesocket="no"
713*6236dae4SAndroid Build Coastguard Worker    fi
714*6236dae4SAndroid Build Coastguard Worker  fi
715*6236dae4SAndroid Build Coastguard Worker  #
716*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if closesocket might be used])
717*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_closesocket" = "yes" &&
718*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_closesocket" = "yes" &&
719*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_closesocket" = "yes" &&
720*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_closesocket" = "yes"; then
721*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
722*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_CLOSESOCKET, 1,
723*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the closesocket function.])
724*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_closesocket="yes"
725*6236dae4SAndroid Build Coastguard Worker  else
726*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
727*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_closesocket="no"
728*6236dae4SAndroid Build Coastguard Worker  fi
729*6236dae4SAndroid Build Coastguard Worker])
730*6236dae4SAndroid Build Coastguard Worker
731*6236dae4SAndroid Build Coastguard Worker
732*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
733*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
734*6236dae4SAndroid Build Coastguard Workerdnl Verify if CloseSocket is available, prototyped, and
735*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
736*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
737*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_closesocket_camel,
738*6236dae4SAndroid Build Coastguard Workerdnl then HAVE_CLOSESOCKET_CAMEL will be defined.
739*6236dae4SAndroid Build Coastguard Worker
740*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
741*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
742*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
743*6236dae4SAndroid Build Coastguard Worker  #
744*6236dae4SAndroid Build Coastguard Worker  tst_links_closesocket_camel="unknown"
745*6236dae4SAndroid Build Coastguard Worker  tst_proto_closesocket_camel="unknown"
746*6236dae4SAndroid Build Coastguard Worker  tst_compi_closesocket_camel="unknown"
747*6236dae4SAndroid Build Coastguard Worker  tst_allow_closesocket_camel="unknown"
748*6236dae4SAndroid Build Coastguard Worker  #
749*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if CloseSocket can be linked])
750*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
751*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
752*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
753*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
754*6236dae4SAndroid Build Coastguard Worker    ]],[[
755*6236dae4SAndroid Build Coastguard Worker      if(0 != CloseSocket(0))
756*6236dae4SAndroid Build Coastguard Worker        return 1;
757*6236dae4SAndroid Build Coastguard Worker    ]])
758*6236dae4SAndroid Build Coastguard Worker  ],[
759*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
760*6236dae4SAndroid Build Coastguard Worker    tst_links_closesocket_camel="yes"
761*6236dae4SAndroid Build Coastguard Worker  ],[
762*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
763*6236dae4SAndroid Build Coastguard Worker    tst_links_closesocket_camel="no"
764*6236dae4SAndroid Build Coastguard Worker  ])
765*6236dae4SAndroid Build Coastguard Worker  #
766*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_closesocket_camel" = "yes"; then
767*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if CloseSocket is prototyped])
768*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([CloseSocket],[
769*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
770*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
771*6236dae4SAndroid Build Coastguard Worker    ],[
772*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
773*6236dae4SAndroid Build Coastguard Worker      tst_proto_closesocket_camel="yes"
774*6236dae4SAndroid Build Coastguard Worker    ],[
775*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
776*6236dae4SAndroid Build Coastguard Worker      tst_proto_closesocket_camel="no"
777*6236dae4SAndroid Build Coastguard Worker    ])
778*6236dae4SAndroid Build Coastguard Worker  fi
779*6236dae4SAndroid Build Coastguard Worker  #
780*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_closesocket_camel" = "yes"; then
781*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if CloseSocket is compilable])
782*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
783*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
784*6236dae4SAndroid Build Coastguard Worker        $curl_includes_bsdsocket
785*6236dae4SAndroid Build Coastguard Worker        $curl_includes_sys_socket
786*6236dae4SAndroid Build Coastguard Worker      ]],[[
787*6236dae4SAndroid Build Coastguard Worker        if(0 != CloseSocket(0))
788*6236dae4SAndroid Build Coastguard Worker          return 1;
789*6236dae4SAndroid Build Coastguard Worker      ]])
790*6236dae4SAndroid Build Coastguard Worker    ],[
791*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
792*6236dae4SAndroid Build Coastguard Worker      tst_compi_closesocket_camel="yes"
793*6236dae4SAndroid Build Coastguard Worker    ],[
794*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
795*6236dae4SAndroid Build Coastguard Worker      tst_compi_closesocket_camel="no"
796*6236dae4SAndroid Build Coastguard Worker    ])
797*6236dae4SAndroid Build Coastguard Worker  fi
798*6236dae4SAndroid Build Coastguard Worker  #
799*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_closesocket_camel" = "yes"; then
800*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if CloseSocket usage allowed])
801*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_closesocket_camel" != "xyes"; then
802*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
803*6236dae4SAndroid Build Coastguard Worker      tst_allow_closesocket_camel="yes"
804*6236dae4SAndroid Build Coastguard Worker    else
805*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
806*6236dae4SAndroid Build Coastguard Worker      tst_allow_closesocket_camel="no"
807*6236dae4SAndroid Build Coastguard Worker    fi
808*6236dae4SAndroid Build Coastguard Worker  fi
809*6236dae4SAndroid Build Coastguard Worker  #
810*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if CloseSocket might be used])
811*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_closesocket_camel" = "yes" &&
812*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_closesocket_camel" = "yes" &&
813*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_closesocket_camel" = "yes" &&
814*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_closesocket_camel" = "yes"; then
815*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
816*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_CLOSESOCKET_CAMEL, 1,
817*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the CloseSocket camel case function.])
818*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_closesocket_camel="yes"
819*6236dae4SAndroid Build Coastguard Worker  else
820*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
821*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_closesocket_camel="no"
822*6236dae4SAndroid Build Coastguard Worker  fi
823*6236dae4SAndroid Build Coastguard Worker])
824*6236dae4SAndroid Build Coastguard Worker
825*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_FCNTL
826*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
827*6236dae4SAndroid Build Coastguard Workerdnl Verify if fcntl is available, prototyped, and
828*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
829*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
830*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_fcntl, then
831*6236dae4SAndroid Build Coastguard Workerdnl HAVE_FCNTL will be defined.
832*6236dae4SAndroid Build Coastguard Worker
833*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_FCNTL], [
834*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_FCNTL])dnl
835*6236dae4SAndroid Build Coastguard Worker  #
836*6236dae4SAndroid Build Coastguard Worker  tst_links_fcntl="unknown"
837*6236dae4SAndroid Build Coastguard Worker  tst_proto_fcntl="unknown"
838*6236dae4SAndroid Build Coastguard Worker  tst_compi_fcntl="unknown"
839*6236dae4SAndroid Build Coastguard Worker  tst_allow_fcntl="unknown"
840*6236dae4SAndroid Build Coastguard Worker  #
841*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if fcntl can be linked])
842*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
843*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([fcntl])
844*6236dae4SAndroid Build Coastguard Worker  ],[
845*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
846*6236dae4SAndroid Build Coastguard Worker    tst_links_fcntl="yes"
847*6236dae4SAndroid Build Coastguard Worker  ],[
848*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
849*6236dae4SAndroid Build Coastguard Worker    tst_links_fcntl="no"
850*6236dae4SAndroid Build Coastguard Worker  ])
851*6236dae4SAndroid Build Coastguard Worker  #
852*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_fcntl" = "yes"; then
853*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if fcntl is prototyped])
854*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([fcntl],[
855*6236dae4SAndroid Build Coastguard Worker      $curl_includes_fcntl
856*6236dae4SAndroid Build Coastguard Worker    ],[
857*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
858*6236dae4SAndroid Build Coastguard Worker      tst_proto_fcntl="yes"
859*6236dae4SAndroid Build Coastguard Worker    ],[
860*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
861*6236dae4SAndroid Build Coastguard Worker      tst_proto_fcntl="no"
862*6236dae4SAndroid Build Coastguard Worker    ])
863*6236dae4SAndroid Build Coastguard Worker  fi
864*6236dae4SAndroid Build Coastguard Worker  #
865*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_fcntl" = "yes"; then
866*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if fcntl is compilable])
867*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
868*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
869*6236dae4SAndroid Build Coastguard Worker        $curl_includes_fcntl
870*6236dae4SAndroid Build Coastguard Worker      ]],[[
871*6236dae4SAndroid Build Coastguard Worker        if(0 != fcntl(0, 0, 0))
872*6236dae4SAndroid Build Coastguard Worker          return 1;
873*6236dae4SAndroid Build Coastguard Worker      ]])
874*6236dae4SAndroid Build Coastguard Worker    ],[
875*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
876*6236dae4SAndroid Build Coastguard Worker      tst_compi_fcntl="yes"
877*6236dae4SAndroid Build Coastguard Worker    ],[
878*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
879*6236dae4SAndroid Build Coastguard Worker      tst_compi_fcntl="no"
880*6236dae4SAndroid Build Coastguard Worker    ])
881*6236dae4SAndroid Build Coastguard Worker  fi
882*6236dae4SAndroid Build Coastguard Worker  #
883*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_fcntl" = "yes"; then
884*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if fcntl usage allowed])
885*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_fcntl" != "xyes"; then
886*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
887*6236dae4SAndroid Build Coastguard Worker      tst_allow_fcntl="yes"
888*6236dae4SAndroid Build Coastguard Worker    else
889*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
890*6236dae4SAndroid Build Coastguard Worker      tst_allow_fcntl="no"
891*6236dae4SAndroid Build Coastguard Worker    fi
892*6236dae4SAndroid Build Coastguard Worker  fi
893*6236dae4SAndroid Build Coastguard Worker  #
894*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if fcntl might be used])
895*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_fcntl" = "yes" &&
896*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_fcntl" = "yes" &&
897*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_fcntl" = "yes" &&
898*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_fcntl" = "yes"; then
899*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
900*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_FCNTL, 1,
901*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the fcntl function.])
902*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_fcntl="yes"
903*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_FUNC_FCNTL_O_NONBLOCK
904*6236dae4SAndroid Build Coastguard Worker  else
905*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
906*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_fcntl="no"
907*6236dae4SAndroid Build Coastguard Worker  fi
908*6236dae4SAndroid Build Coastguard Worker])
909*6236dae4SAndroid Build Coastguard Worker
910*6236dae4SAndroid Build Coastguard Worker
911*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_FCNTL_O_NONBLOCK
912*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
913*6236dae4SAndroid Build Coastguard Workerdnl Verify if fcntl with status flag O_NONBLOCK is
914*6236dae4SAndroid Build Coastguard Workerdnl available, can be compiled, and seems to work. If
915*6236dae4SAndroid Build Coastguard Workerdnl all of these are true, then HAVE_FCNTL_O_NONBLOCK
916*6236dae4SAndroid Build Coastguard Workerdnl will be defined.
917*6236dae4SAndroid Build Coastguard Worker
918*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_FCNTL_O_NONBLOCK], [
919*6236dae4SAndroid Build Coastguard Worker  #
920*6236dae4SAndroid Build Coastguard Worker  tst_compi_fcntl_o_nonblock="unknown"
921*6236dae4SAndroid Build Coastguard Worker  tst_allow_fcntl_o_nonblock="unknown"
922*6236dae4SAndroid Build Coastguard Worker  #
923*6236dae4SAndroid Build Coastguard Worker  case $host_os in
924*6236dae4SAndroid Build Coastguard Worker    sunos4* | aix3*)
925*6236dae4SAndroid Build Coastguard Worker      dnl O_NONBLOCK does not work on these platforms
926*6236dae4SAndroid Build Coastguard Worker      curl_disallow_fcntl_o_nonblock="yes"
927*6236dae4SAndroid Build Coastguard Worker      ;;
928*6236dae4SAndroid Build Coastguard Worker  esac
929*6236dae4SAndroid Build Coastguard Worker  #
930*6236dae4SAndroid Build Coastguard Worker  if test "$curl_cv_func_fcntl" = "yes"; then
931*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if fcntl O_NONBLOCK is compilable])
932*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
933*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
934*6236dae4SAndroid Build Coastguard Worker        $curl_includes_fcntl
935*6236dae4SAndroid Build Coastguard Worker      ]],[[
936*6236dae4SAndroid Build Coastguard Worker        int flags = 0;
937*6236dae4SAndroid Build Coastguard Worker        if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK))
938*6236dae4SAndroid Build Coastguard Worker          return 1;
939*6236dae4SAndroid Build Coastguard Worker      ]])
940*6236dae4SAndroid Build Coastguard Worker    ],[
941*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
942*6236dae4SAndroid Build Coastguard Worker      tst_compi_fcntl_o_nonblock="yes"
943*6236dae4SAndroid Build Coastguard Worker    ],[
944*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
945*6236dae4SAndroid Build Coastguard Worker      tst_compi_fcntl_o_nonblock="no"
946*6236dae4SAndroid Build Coastguard Worker    ])
947*6236dae4SAndroid Build Coastguard Worker  fi
948*6236dae4SAndroid Build Coastguard Worker  #
949*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_fcntl_o_nonblock" = "yes"; then
950*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if fcntl O_NONBLOCK usage allowed])
951*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_fcntl_o_nonblock" != "xyes"; then
952*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
953*6236dae4SAndroid Build Coastguard Worker      tst_allow_fcntl_o_nonblock="yes"
954*6236dae4SAndroid Build Coastguard Worker    else
955*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
956*6236dae4SAndroid Build Coastguard Worker      tst_allow_fcntl_o_nonblock="no"
957*6236dae4SAndroid Build Coastguard Worker    fi
958*6236dae4SAndroid Build Coastguard Worker  fi
959*6236dae4SAndroid Build Coastguard Worker  #
960*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if fcntl O_NONBLOCK might be used])
961*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_fcntl_o_nonblock" = "yes" &&
962*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_fcntl_o_nonblock" = "yes"; then
963*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
964*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_FCNTL_O_NONBLOCK, 1,
965*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a working fcntl O_NONBLOCK function.])
966*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_fcntl_o_nonblock="yes"
967*6236dae4SAndroid Build Coastguard Worker  else
968*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
969*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_fcntl_o_nonblock="no"
970*6236dae4SAndroid Build Coastguard Worker  fi
971*6236dae4SAndroid Build Coastguard Worker])
972*6236dae4SAndroid Build Coastguard Worker
973*6236dae4SAndroid Build Coastguard Worker
974*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_FREEADDRINFO
975*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
976*6236dae4SAndroid Build Coastguard Workerdnl Verify if freeaddrinfo is available, prototyped,
977*6236dae4SAndroid Build Coastguard Workerdnl and can be compiled. If all of these are true,
978*6236dae4SAndroid Build Coastguard Workerdnl and usage has not been previously disallowed with
979*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_freeaddrinfo, then
980*6236dae4SAndroid Build Coastguard Workerdnl HAVE_FREEADDRINFO will be defined.
981*6236dae4SAndroid Build Coastguard Worker
982*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_FREEADDRINFO], [
983*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WS2TCPIP])dnl
984*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
985*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
986*6236dae4SAndroid Build Coastguard Worker  #
987*6236dae4SAndroid Build Coastguard Worker  tst_links_freeaddrinfo="unknown"
988*6236dae4SAndroid Build Coastguard Worker  tst_proto_freeaddrinfo="unknown"
989*6236dae4SAndroid Build Coastguard Worker  tst_compi_freeaddrinfo="unknown"
990*6236dae4SAndroid Build Coastguard Worker  tst_allow_freeaddrinfo="unknown"
991*6236dae4SAndroid Build Coastguard Worker  #
992*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if freeaddrinfo can be linked])
993*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
994*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
995*6236dae4SAndroid Build Coastguard Worker      $curl_includes_ws2tcpip
996*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
997*6236dae4SAndroid Build Coastguard Worker      $curl_includes_netdb
998*6236dae4SAndroid Build Coastguard Worker    ]],[[
999*6236dae4SAndroid Build Coastguard Worker      freeaddrinfo(0);
1000*6236dae4SAndroid Build Coastguard Worker    ]])
1001*6236dae4SAndroid Build Coastguard Worker  ],[
1002*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1003*6236dae4SAndroid Build Coastguard Worker    tst_links_freeaddrinfo="yes"
1004*6236dae4SAndroid Build Coastguard Worker  ],[
1005*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1006*6236dae4SAndroid Build Coastguard Worker    tst_links_freeaddrinfo="no"
1007*6236dae4SAndroid Build Coastguard Worker  ])
1008*6236dae4SAndroid Build Coastguard Worker  #
1009*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_freeaddrinfo" = "yes"; then
1010*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if freeaddrinfo is prototyped])
1011*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([freeaddrinfo],[
1012*6236dae4SAndroid Build Coastguard Worker      $curl_includes_ws2tcpip
1013*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
1014*6236dae4SAndroid Build Coastguard Worker      $curl_includes_netdb
1015*6236dae4SAndroid Build Coastguard Worker    ],[
1016*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1017*6236dae4SAndroid Build Coastguard Worker      tst_proto_freeaddrinfo="yes"
1018*6236dae4SAndroid Build Coastguard Worker    ],[
1019*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1020*6236dae4SAndroid Build Coastguard Worker      tst_proto_freeaddrinfo="no"
1021*6236dae4SAndroid Build Coastguard Worker    ])
1022*6236dae4SAndroid Build Coastguard Worker  fi
1023*6236dae4SAndroid Build Coastguard Worker  #
1024*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_freeaddrinfo" = "yes"; then
1025*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if freeaddrinfo is compilable])
1026*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
1027*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
1028*6236dae4SAndroid Build Coastguard Worker        $curl_includes_ws2tcpip
1029*6236dae4SAndroid Build Coastguard Worker        $curl_includes_sys_socket
1030*6236dae4SAndroid Build Coastguard Worker        $curl_includes_netdb
1031*6236dae4SAndroid Build Coastguard Worker      ]],[[
1032*6236dae4SAndroid Build Coastguard Worker        freeaddrinfo(0);
1033*6236dae4SAndroid Build Coastguard Worker      ]])
1034*6236dae4SAndroid Build Coastguard Worker    ],[
1035*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1036*6236dae4SAndroid Build Coastguard Worker      tst_compi_freeaddrinfo="yes"
1037*6236dae4SAndroid Build Coastguard Worker    ],[
1038*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1039*6236dae4SAndroid Build Coastguard Worker      tst_compi_freeaddrinfo="no"
1040*6236dae4SAndroid Build Coastguard Worker    ])
1041*6236dae4SAndroid Build Coastguard Worker  fi
1042*6236dae4SAndroid Build Coastguard Worker  #
1043*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_freeaddrinfo" = "yes"; then
1044*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if freeaddrinfo usage allowed])
1045*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_freeaddrinfo" != "xyes"; then
1046*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1047*6236dae4SAndroid Build Coastguard Worker      tst_allow_freeaddrinfo="yes"
1048*6236dae4SAndroid Build Coastguard Worker    else
1049*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1050*6236dae4SAndroid Build Coastguard Worker      tst_allow_freeaddrinfo="no"
1051*6236dae4SAndroid Build Coastguard Worker    fi
1052*6236dae4SAndroid Build Coastguard Worker  fi
1053*6236dae4SAndroid Build Coastguard Worker  #
1054*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if freeaddrinfo might be used])
1055*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_freeaddrinfo" = "yes" &&
1056*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_freeaddrinfo" = "yes" &&
1057*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_freeaddrinfo" = "yes" &&
1058*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_freeaddrinfo" = "yes"; then
1059*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1060*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_FREEADDRINFO, 1,
1061*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the freeaddrinfo function.])
1062*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_freeaddrinfo="yes"
1063*6236dae4SAndroid Build Coastguard Worker  else
1064*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1065*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_freeaddrinfo="no"
1066*6236dae4SAndroid Build Coastguard Worker  fi
1067*6236dae4SAndroid Build Coastguard Worker])
1068*6236dae4SAndroid Build Coastguard Worker
1069*6236dae4SAndroid Build Coastguard Worker
1070*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_FSETXATTR
1071*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
1072*6236dae4SAndroid Build Coastguard Workerdnl Verify if fsetxattr is available, prototyped, and
1073*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
1074*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
1075*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_fsetxattr, then
1076*6236dae4SAndroid Build Coastguard Workerdnl HAVE_FSETXATTR will be defined.
1077*6236dae4SAndroid Build Coastguard Worker
1078*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_FSETXATTR], [
1079*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl
1080*6236dae4SAndroid Build Coastguard Worker  #
1081*6236dae4SAndroid Build Coastguard Worker  tst_links_fsetxattr="unknown"
1082*6236dae4SAndroid Build Coastguard Worker  tst_proto_fsetxattr="unknown"
1083*6236dae4SAndroid Build Coastguard Worker  tst_compi_fsetxattr="unknown"
1084*6236dae4SAndroid Build Coastguard Worker  tst_allow_fsetxattr="unknown"
1085*6236dae4SAndroid Build Coastguard Worker  tst_nargs_fsetxattr="unknown"
1086*6236dae4SAndroid Build Coastguard Worker  #
1087*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if fsetxattr can be linked])
1088*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
1089*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([fsetxattr])
1090*6236dae4SAndroid Build Coastguard Worker  ],[
1091*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1092*6236dae4SAndroid Build Coastguard Worker    tst_links_fsetxattr="yes"
1093*6236dae4SAndroid Build Coastguard Worker  ],[
1094*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1095*6236dae4SAndroid Build Coastguard Worker    tst_links_fsetxattr="no"
1096*6236dae4SAndroid Build Coastguard Worker  ])
1097*6236dae4SAndroid Build Coastguard Worker  #
1098*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_fsetxattr" = "yes"; then
1099*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if fsetxattr is prototyped])
1100*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([fsetxattr],[
1101*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_xattr
1102*6236dae4SAndroid Build Coastguard Worker    ],[
1103*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1104*6236dae4SAndroid Build Coastguard Worker      tst_proto_fsetxattr="yes"
1105*6236dae4SAndroid Build Coastguard Worker    ],[
1106*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1107*6236dae4SAndroid Build Coastguard Worker      tst_proto_fsetxattr="no"
1108*6236dae4SAndroid Build Coastguard Worker    ])
1109*6236dae4SAndroid Build Coastguard Worker  fi
1110*6236dae4SAndroid Build Coastguard Worker  #
1111*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_fsetxattr" = "yes"; then
1112*6236dae4SAndroid Build Coastguard Worker    if test "$tst_nargs_fsetxattr" = "unknown"; then
1113*6236dae4SAndroid Build Coastguard Worker      AC_MSG_CHECKING([if fsetxattr takes 5 args.])
1114*6236dae4SAndroid Build Coastguard Worker      AC_COMPILE_IFELSE([
1115*6236dae4SAndroid Build Coastguard Worker        AC_LANG_PROGRAM([[
1116*6236dae4SAndroid Build Coastguard Worker          $curl_includes_sys_xattr
1117*6236dae4SAndroid Build Coastguard Worker        ]],[[
1118*6236dae4SAndroid Build Coastguard Worker          if(0 != fsetxattr(0, 0, 0, 0, 0))
1119*6236dae4SAndroid Build Coastguard Worker            return 1;
1120*6236dae4SAndroid Build Coastguard Worker        ]])
1121*6236dae4SAndroid Build Coastguard Worker      ],[
1122*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([yes])
1123*6236dae4SAndroid Build Coastguard Worker        tst_compi_fsetxattr="yes"
1124*6236dae4SAndroid Build Coastguard Worker        tst_nargs_fsetxattr="5"
1125*6236dae4SAndroid Build Coastguard Worker      ],[
1126*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([no])
1127*6236dae4SAndroid Build Coastguard Worker        tst_compi_fsetxattr="no"
1128*6236dae4SAndroid Build Coastguard Worker      ])
1129*6236dae4SAndroid Build Coastguard Worker    fi
1130*6236dae4SAndroid Build Coastguard Worker    if test "$tst_nargs_fsetxattr" = "unknown"; then
1131*6236dae4SAndroid Build Coastguard Worker      AC_MSG_CHECKING([if fsetxattr takes 6 args.])
1132*6236dae4SAndroid Build Coastguard Worker      AC_COMPILE_IFELSE([
1133*6236dae4SAndroid Build Coastguard Worker        AC_LANG_PROGRAM([[
1134*6236dae4SAndroid Build Coastguard Worker          $curl_includes_sys_xattr
1135*6236dae4SAndroid Build Coastguard Worker        ]],[[
1136*6236dae4SAndroid Build Coastguard Worker          if(0 != fsetxattr(0, 0, 0, 0, 0, 0))
1137*6236dae4SAndroid Build Coastguard Worker            return 1;
1138*6236dae4SAndroid Build Coastguard Worker        ]])
1139*6236dae4SAndroid Build Coastguard Worker      ],[
1140*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([yes])
1141*6236dae4SAndroid Build Coastguard Worker        tst_compi_fsetxattr="yes"
1142*6236dae4SAndroid Build Coastguard Worker        tst_nargs_fsetxattr="6"
1143*6236dae4SAndroid Build Coastguard Worker      ],[
1144*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([no])
1145*6236dae4SAndroid Build Coastguard Worker        tst_compi_fsetxattr="no"
1146*6236dae4SAndroid Build Coastguard Worker      ])
1147*6236dae4SAndroid Build Coastguard Worker    fi
1148*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if fsetxattr is compilable])
1149*6236dae4SAndroid Build Coastguard Worker    if test "$tst_compi_fsetxattr" = "yes"; then
1150*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1151*6236dae4SAndroid Build Coastguard Worker    else
1152*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1153*6236dae4SAndroid Build Coastguard Worker    fi
1154*6236dae4SAndroid Build Coastguard Worker  fi
1155*6236dae4SAndroid Build Coastguard Worker  #
1156*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_fsetxattr" = "yes"; then
1157*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if fsetxattr usage allowed])
1158*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_fsetxattr" != "xyes"; then
1159*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1160*6236dae4SAndroid Build Coastguard Worker      tst_allow_fsetxattr="yes"
1161*6236dae4SAndroid Build Coastguard Worker    else
1162*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1163*6236dae4SAndroid Build Coastguard Worker      tst_allow_fsetxattr="no"
1164*6236dae4SAndroid Build Coastguard Worker    fi
1165*6236dae4SAndroid Build Coastguard Worker  fi
1166*6236dae4SAndroid Build Coastguard Worker  #
1167*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if fsetxattr might be used])
1168*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_fsetxattr" = "yes" &&
1169*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_fsetxattr" = "yes" &&
1170*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_fsetxattr" = "yes" &&
1171*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_fsetxattr" = "yes"; then
1172*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1173*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_FSETXATTR, 1,
1174*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the fsetxattr function.])
1175*6236dae4SAndroid Build Coastguard Worker    dnl AC_DEFINE_UNQUOTED(FSETXATTR_ARGS, $tst_nargs_fsetxattr,
1176*6236dae4SAndroid Build Coastguard Worker    dnl   [Specifies the number of arguments to fsetxattr])
1177*6236dae4SAndroid Build Coastguard Worker    #
1178*6236dae4SAndroid Build Coastguard Worker    if test "$tst_nargs_fsetxattr" -eq "5"; then
1179*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE(HAVE_FSETXATTR_5, 1, [fsetxattr() takes 5 args])
1180*6236dae4SAndroid Build Coastguard Worker    elif test "$tst_nargs_fsetxattr" -eq "6"; then
1181*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE(HAVE_FSETXATTR_6, 1, [fsetxattr() takes 6 args])
1182*6236dae4SAndroid Build Coastguard Worker    fi
1183*6236dae4SAndroid Build Coastguard Worker    #
1184*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_fsetxattr="yes"
1185*6236dae4SAndroid Build Coastguard Worker  else
1186*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1187*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_fsetxattr="no"
1188*6236dae4SAndroid Build Coastguard Worker  fi
1189*6236dae4SAndroid Build Coastguard Worker])
1190*6236dae4SAndroid Build Coastguard Worker
1191*6236dae4SAndroid Build Coastguard Worker
1192*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_FTRUNCATE
1193*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
1194*6236dae4SAndroid Build Coastguard Workerdnl Verify if ftruncate is available, prototyped, and
1195*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
1196*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
1197*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_ftruncate, then
1198*6236dae4SAndroid Build Coastguard Workerdnl HAVE_FTRUNCATE will be defined.
1199*6236dae4SAndroid Build Coastguard Worker
1200*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_FTRUNCATE], [
1201*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
1202*6236dae4SAndroid Build Coastguard Worker  #
1203*6236dae4SAndroid Build Coastguard Worker  tst_links_ftruncate="unknown"
1204*6236dae4SAndroid Build Coastguard Worker  tst_proto_ftruncate="unknown"
1205*6236dae4SAndroid Build Coastguard Worker  tst_compi_ftruncate="unknown"
1206*6236dae4SAndroid Build Coastguard Worker  tst_allow_ftruncate="unknown"
1207*6236dae4SAndroid Build Coastguard Worker  #
1208*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ftruncate can be linked])
1209*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
1210*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([ftruncate])
1211*6236dae4SAndroid Build Coastguard Worker  ],[
1212*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1213*6236dae4SAndroid Build Coastguard Worker    tst_links_ftruncate="yes"
1214*6236dae4SAndroid Build Coastguard Worker  ],[
1215*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1216*6236dae4SAndroid Build Coastguard Worker    tst_links_ftruncate="no"
1217*6236dae4SAndroid Build Coastguard Worker  ])
1218*6236dae4SAndroid Build Coastguard Worker  #
1219*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_ftruncate" = "yes"; then
1220*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ftruncate is prototyped])
1221*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([ftruncate],[
1222*6236dae4SAndroid Build Coastguard Worker      $curl_includes_unistd
1223*6236dae4SAndroid Build Coastguard Worker    ],[
1224*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1225*6236dae4SAndroid Build Coastguard Worker      tst_proto_ftruncate="yes"
1226*6236dae4SAndroid Build Coastguard Worker    ],[
1227*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1228*6236dae4SAndroid Build Coastguard Worker      tst_proto_ftruncate="no"
1229*6236dae4SAndroid Build Coastguard Worker    ])
1230*6236dae4SAndroid Build Coastguard Worker  fi
1231*6236dae4SAndroid Build Coastguard Worker  #
1232*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_ftruncate" = "yes"; then
1233*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ftruncate is compilable])
1234*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
1235*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
1236*6236dae4SAndroid Build Coastguard Worker        $curl_includes_unistd
1237*6236dae4SAndroid Build Coastguard Worker      ]],[[
1238*6236dae4SAndroid Build Coastguard Worker        if(0 != ftruncate(0, 0))
1239*6236dae4SAndroid Build Coastguard Worker          return 1;
1240*6236dae4SAndroid Build Coastguard Worker      ]])
1241*6236dae4SAndroid Build Coastguard Worker    ],[
1242*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1243*6236dae4SAndroid Build Coastguard Worker      tst_compi_ftruncate="yes"
1244*6236dae4SAndroid Build Coastguard Worker    ],[
1245*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1246*6236dae4SAndroid Build Coastguard Worker      tst_compi_ftruncate="no"
1247*6236dae4SAndroid Build Coastguard Worker    ])
1248*6236dae4SAndroid Build Coastguard Worker  fi
1249*6236dae4SAndroid Build Coastguard Worker  #
1250*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ftruncate" = "yes"; then
1251*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ftruncate usage allowed])
1252*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_ftruncate" != "xyes"; then
1253*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1254*6236dae4SAndroid Build Coastguard Worker      tst_allow_ftruncate="yes"
1255*6236dae4SAndroid Build Coastguard Worker    else
1256*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1257*6236dae4SAndroid Build Coastguard Worker      tst_allow_ftruncate="no"
1258*6236dae4SAndroid Build Coastguard Worker    fi
1259*6236dae4SAndroid Build Coastguard Worker  fi
1260*6236dae4SAndroid Build Coastguard Worker  #
1261*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ftruncate might be used])
1262*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_ftruncate" = "yes" &&
1263*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_ftruncate" = "yes" &&
1264*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_ftruncate" = "yes" &&
1265*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_ftruncate" = "yes"; then
1266*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1267*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_FTRUNCATE, 1,
1268*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the ftruncate function.])
1269*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ftruncate="yes"
1270*6236dae4SAndroid Build Coastguard Worker  else
1271*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1272*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ftruncate="no"
1273*6236dae4SAndroid Build Coastguard Worker  fi
1274*6236dae4SAndroid Build Coastguard Worker])
1275*6236dae4SAndroid Build Coastguard Worker
1276*6236dae4SAndroid Build Coastguard Worker
1277*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_GETADDRINFO
1278*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
1279*6236dae4SAndroid Build Coastguard Workerdnl Verify if getaddrinfo is available, prototyped, can
1280*6236dae4SAndroid Build Coastguard Workerdnl be compiled and seems to work. If all of these are
1281*6236dae4SAndroid Build Coastguard Workerdnl true, and usage has not been previously disallowed
1282*6236dae4SAndroid Build Coastguard Workerdnl with shell variable curl_disallow_getaddrinfo, then
1283*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GETADDRINFO will be defined. Additionally when
1284*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GETADDRINFO gets defined this will also attempt
1285*6236dae4SAndroid Build Coastguard Workerdnl to find out if getaddrinfo happens to be threadsafe,
1286*6236dae4SAndroid Build Coastguard Workerdnl defining HAVE_GETADDRINFO_THREADSAFE when true.
1287*6236dae4SAndroid Build Coastguard Worker
1288*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [
1289*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WS2TCPIP])dnl
1290*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
1291*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
1292*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
1293*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
1294*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl
1295*6236dae4SAndroid Build Coastguard Worker  #
1296*6236dae4SAndroid Build Coastguard Worker  tst_links_getaddrinfo="unknown"
1297*6236dae4SAndroid Build Coastguard Worker  tst_proto_getaddrinfo="unknown"
1298*6236dae4SAndroid Build Coastguard Worker  tst_compi_getaddrinfo="unknown"
1299*6236dae4SAndroid Build Coastguard Worker  tst_works_getaddrinfo="unknown"
1300*6236dae4SAndroid Build Coastguard Worker  tst_allow_getaddrinfo="unknown"
1301*6236dae4SAndroid Build Coastguard Worker  tst_tsafe_getaddrinfo="unknown"
1302*6236dae4SAndroid Build Coastguard Worker  #
1303*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if getaddrinfo can be linked])
1304*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
1305*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
1306*6236dae4SAndroid Build Coastguard Worker      $curl_includes_ws2tcpip
1307*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
1308*6236dae4SAndroid Build Coastguard Worker      $curl_includes_netdb
1309*6236dae4SAndroid Build Coastguard Worker    ]],[[
1310*6236dae4SAndroid Build Coastguard Worker      if(0 != getaddrinfo(0, 0, 0, 0))
1311*6236dae4SAndroid Build Coastguard Worker        return 1;
1312*6236dae4SAndroid Build Coastguard Worker    ]])
1313*6236dae4SAndroid Build Coastguard Worker  ],[
1314*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1315*6236dae4SAndroid Build Coastguard Worker    tst_links_getaddrinfo="yes"
1316*6236dae4SAndroid Build Coastguard Worker  ],[
1317*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1318*6236dae4SAndroid Build Coastguard Worker    tst_links_getaddrinfo="no"
1319*6236dae4SAndroid Build Coastguard Worker  ])
1320*6236dae4SAndroid Build Coastguard Worker  #
1321*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_getaddrinfo" = "yes"; then
1322*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getaddrinfo is prototyped])
1323*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([getaddrinfo],[
1324*6236dae4SAndroid Build Coastguard Worker      $curl_includes_ws2tcpip
1325*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
1326*6236dae4SAndroid Build Coastguard Worker      $curl_includes_netdb
1327*6236dae4SAndroid Build Coastguard Worker    ],[
1328*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1329*6236dae4SAndroid Build Coastguard Worker      tst_proto_getaddrinfo="yes"
1330*6236dae4SAndroid Build Coastguard Worker    ],[
1331*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1332*6236dae4SAndroid Build Coastguard Worker      tst_proto_getaddrinfo="no"
1333*6236dae4SAndroid Build Coastguard Worker    ])
1334*6236dae4SAndroid Build Coastguard Worker  fi
1335*6236dae4SAndroid Build Coastguard Worker  #
1336*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_getaddrinfo" = "yes"; then
1337*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getaddrinfo is compilable])
1338*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
1339*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
1340*6236dae4SAndroid Build Coastguard Worker        $curl_includes_ws2tcpip
1341*6236dae4SAndroid Build Coastguard Worker        $curl_includes_sys_socket
1342*6236dae4SAndroid Build Coastguard Worker        $curl_includes_netdb
1343*6236dae4SAndroid Build Coastguard Worker      ]],[[
1344*6236dae4SAndroid Build Coastguard Worker        if(0 != getaddrinfo(0, 0, 0, 0))
1345*6236dae4SAndroid Build Coastguard Worker          return 1;
1346*6236dae4SAndroid Build Coastguard Worker      ]])
1347*6236dae4SAndroid Build Coastguard Worker    ],[
1348*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1349*6236dae4SAndroid Build Coastguard Worker      tst_compi_getaddrinfo="yes"
1350*6236dae4SAndroid Build Coastguard Worker    ],[
1351*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1352*6236dae4SAndroid Build Coastguard Worker      tst_compi_getaddrinfo="no"
1353*6236dae4SAndroid Build Coastguard Worker    ])
1354*6236dae4SAndroid Build Coastguard Worker  fi
1355*6236dae4SAndroid Build Coastguard Worker  #
1356*6236dae4SAndroid Build Coastguard Worker  dnl only do runtime verification when not cross-compiling
1357*6236dae4SAndroid Build Coastguard Worker  if test "x$cross_compiling" != "xyes" &&
1358*6236dae4SAndroid Build Coastguard Worker    test "$tst_compi_getaddrinfo" = "yes"; then
1359*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getaddrinfo seems to work])
1360*6236dae4SAndroid Build Coastguard Worker    CURL_RUN_IFELSE([
1361*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
1362*6236dae4SAndroid Build Coastguard Worker        $curl_includes_ws2tcpip
1363*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stdlib
1364*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
1365*6236dae4SAndroid Build Coastguard Worker        $curl_includes_sys_socket
1366*6236dae4SAndroid Build Coastguard Worker        $curl_includes_netdb
1367*6236dae4SAndroid Build Coastguard Worker      ]],[[
1368*6236dae4SAndroid Build Coastguard Worker        struct addrinfo hints;
1369*6236dae4SAndroid Build Coastguard Worker        struct addrinfo *ai = 0;
1370*6236dae4SAndroid Build Coastguard Worker        int error;
1371*6236dae4SAndroid Build Coastguard Worker
1372*6236dae4SAndroid Build Coastguard Worker        #ifdef _WIN32
1373*6236dae4SAndroid Build Coastguard Worker        WSADATA wsa;
1374*6236dae4SAndroid Build Coastguard Worker        if(WSAStartup(MAKEWORD(2, 2), &wsa))
1375*6236dae4SAndroid Build Coastguard Worker          exit(2);
1376*6236dae4SAndroid Build Coastguard Worker        #endif
1377*6236dae4SAndroid Build Coastguard Worker
1378*6236dae4SAndroid Build Coastguard Worker        memset(&hints, 0, sizeof(hints));
1379*6236dae4SAndroid Build Coastguard Worker        hints.ai_flags = AI_NUMERICHOST;
1380*6236dae4SAndroid Build Coastguard Worker        hints.ai_family = AF_UNSPEC;
1381*6236dae4SAndroid Build Coastguard Worker        hints.ai_socktype = SOCK_STREAM;
1382*6236dae4SAndroid Build Coastguard Worker        error = getaddrinfo("127.0.0.1", 0, &hints, &ai);
1383*6236dae4SAndroid Build Coastguard Worker        if(error || !ai)
1384*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
1385*6236dae4SAndroid Build Coastguard Worker        else
1386*6236dae4SAndroid Build Coastguard Worker          exit(0);
1387*6236dae4SAndroid Build Coastguard Worker      ]])
1388*6236dae4SAndroid Build Coastguard Worker    ],[
1389*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1390*6236dae4SAndroid Build Coastguard Worker      tst_works_getaddrinfo="yes"
1391*6236dae4SAndroid Build Coastguard Worker    ],[
1392*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1393*6236dae4SAndroid Build Coastguard Worker      tst_works_getaddrinfo="no"
1394*6236dae4SAndroid Build Coastguard Worker    ])
1395*6236dae4SAndroid Build Coastguard Worker  fi
1396*6236dae4SAndroid Build Coastguard Worker  #
1397*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_getaddrinfo" = "yes" &&
1398*6236dae4SAndroid Build Coastguard Worker    test "$tst_works_getaddrinfo" != "no"; then
1399*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getaddrinfo usage allowed])
1400*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_getaddrinfo" != "xyes"; then
1401*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1402*6236dae4SAndroid Build Coastguard Worker      tst_allow_getaddrinfo="yes"
1403*6236dae4SAndroid Build Coastguard Worker    else
1404*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1405*6236dae4SAndroid Build Coastguard Worker      tst_allow_getaddrinfo="no"
1406*6236dae4SAndroid Build Coastguard Worker    fi
1407*6236dae4SAndroid Build Coastguard Worker  fi
1408*6236dae4SAndroid Build Coastguard Worker  #
1409*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if getaddrinfo might be used])
1410*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_getaddrinfo" = "yes" &&
1411*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_getaddrinfo" = "yes" &&
1412*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_getaddrinfo" = "yes" &&
1413*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_getaddrinfo" = "yes" &&
1414*6236dae4SAndroid Build Coastguard Worker     test "$tst_works_getaddrinfo" != "no"; then
1415*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1416*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO, 1,
1417*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a working getaddrinfo function.])
1418*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getaddrinfo="yes"
1419*6236dae4SAndroid Build Coastguard Worker  else
1420*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1421*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getaddrinfo="no"
1422*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getaddrinfo_threadsafe="no"
1423*6236dae4SAndroid Build Coastguard Worker  fi
1424*6236dae4SAndroid Build Coastguard Worker  #
1425*6236dae4SAndroid Build Coastguard Worker  if test "$curl_cv_func_getaddrinfo" = "yes"; then
1426*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getaddrinfo is threadsafe])
1427*6236dae4SAndroid Build Coastguard Worker    case $host in
1428*6236dae4SAndroid Build Coastguard Worker      *-apple-*)
1429*6236dae4SAndroid Build Coastguard Worker        dnl Darwin 6.0 and macOS 10.2.X and newer
1430*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="yes"
1431*6236dae4SAndroid Build Coastguard Worker    esac
1432*6236dae4SAndroid Build Coastguard Worker    case $host_os in
1433*6236dae4SAndroid Build Coastguard Worker      aix[[1234]].* | aix5.[[01]].*)
1434*6236dae4SAndroid Build Coastguard Worker        dnl AIX 5.1 and older
1435*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="no"
1436*6236dae4SAndroid Build Coastguard Worker        ;;
1437*6236dae4SAndroid Build Coastguard Worker      aix*)
1438*6236dae4SAndroid Build Coastguard Worker        dnl AIX 5.2 and newer
1439*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="yes"
1440*6236dae4SAndroid Build Coastguard Worker        ;;
1441*6236dae4SAndroid Build Coastguard Worker      darwin[[12345]].*)
1442*6236dae4SAndroid Build Coastguard Worker        dnl Darwin 5.0 and macOS 10.1.X and older
1443*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="no"
1444*6236dae4SAndroid Build Coastguard Worker        ;;
1445*6236dae4SAndroid Build Coastguard Worker      freebsd[[1234]].* | freebsd5.[[1234]]*)
1446*6236dae4SAndroid Build Coastguard Worker        dnl FreeBSD 5.4 and older
1447*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="no"
1448*6236dae4SAndroid Build Coastguard Worker        ;;
1449*6236dae4SAndroid Build Coastguard Worker      freebsd*)
1450*6236dae4SAndroid Build Coastguard Worker        dnl FreeBSD 5.5 and newer
1451*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="yes"
1452*6236dae4SAndroid Build Coastguard Worker        ;;
1453*6236dae4SAndroid Build Coastguard Worker      hpux[[123456789]].* | hpux10.* | hpux11.0* | hpux11.10*)
1454*6236dae4SAndroid Build Coastguard Worker        dnl HP-UX 11.10 and older
1455*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="no"
1456*6236dae4SAndroid Build Coastguard Worker        ;;
1457*6236dae4SAndroid Build Coastguard Worker      hpux*)
1458*6236dae4SAndroid Build Coastguard Worker        dnl HP-UX 11.11 and newer
1459*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="yes"
1460*6236dae4SAndroid Build Coastguard Worker        ;;
1461*6236dae4SAndroid Build Coastguard Worker      midnightbsd*)
1462*6236dae4SAndroid Build Coastguard Worker        dnl all MidnightBSD versions
1463*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="yes"
1464*6236dae4SAndroid Build Coastguard Worker        ;;
1465*6236dae4SAndroid Build Coastguard Worker      netbsd[[123]].*)
1466*6236dae4SAndroid Build Coastguard Worker        dnl NetBSD 3.X and older
1467*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="no"
1468*6236dae4SAndroid Build Coastguard Worker        ;;
1469*6236dae4SAndroid Build Coastguard Worker      netbsd*)
1470*6236dae4SAndroid Build Coastguard Worker        dnl NetBSD 4.X and newer
1471*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="yes"
1472*6236dae4SAndroid Build Coastguard Worker        ;;
1473*6236dae4SAndroid Build Coastguard Worker      *bsd*)
1474*6236dae4SAndroid Build Coastguard Worker        dnl All other BSD's
1475*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="no"
1476*6236dae4SAndroid Build Coastguard Worker        ;;
1477*6236dae4SAndroid Build Coastguard Worker      solaris2*)
1478*6236dae4SAndroid Build Coastguard Worker        dnl Solaris which have it
1479*6236dae4SAndroid Build Coastguard Worker        tst_tsafe_getaddrinfo="yes"
1480*6236dae4SAndroid Build Coastguard Worker        ;;
1481*6236dae4SAndroid Build Coastguard Worker    esac
1482*6236dae4SAndroid Build Coastguard Worker    if test "$tst_tsafe_getaddrinfo" = "unknown" &&
1483*6236dae4SAndroid Build Coastguard Worker       test "$curl_cv_native_windows" = "yes"; then
1484*6236dae4SAndroid Build Coastguard Worker      tst_tsafe_getaddrinfo="yes"
1485*6236dae4SAndroid Build Coastguard Worker    fi
1486*6236dae4SAndroid Build Coastguard Worker    if test "$tst_tsafe_getaddrinfo" = "unknown"; then
1487*6236dae4SAndroid Build Coastguard Worker      tst_tsafe_getaddrinfo="yes"
1488*6236dae4SAndroid Build Coastguard Worker    fi
1489*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([$tst_tsafe_getaddrinfo])
1490*6236dae4SAndroid Build Coastguard Worker    if test "$tst_tsafe_getaddrinfo" = "yes"; then
1491*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_THREADSAFE, 1,
1492*6236dae4SAndroid Build Coastguard Worker        [Define to 1 if the getaddrinfo function is threadsafe.])
1493*6236dae4SAndroid Build Coastguard Worker      curl_cv_func_getaddrinfo_threadsafe="yes"
1494*6236dae4SAndroid Build Coastguard Worker    else
1495*6236dae4SAndroid Build Coastguard Worker      curl_cv_func_getaddrinfo_threadsafe="no"
1496*6236dae4SAndroid Build Coastguard Worker    fi
1497*6236dae4SAndroid Build Coastguard Worker  fi
1498*6236dae4SAndroid Build Coastguard Worker])
1499*6236dae4SAndroid Build Coastguard Worker
1500*6236dae4SAndroid Build Coastguard Worker
1501*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_GETHOSTBYNAME
1502*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
1503*6236dae4SAndroid Build Coastguard Workerdnl Verify if gethostbyname is available, prototyped,
1504*6236dae4SAndroid Build Coastguard Workerdnl and can be compiled. If all of these are true,
1505*6236dae4SAndroid Build Coastguard Workerdnl and usage has not been previously disallowed with
1506*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_gethostbyname, then
1507*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GETHOSTBYNAME will be defined.
1508*6236dae4SAndroid Build Coastguard Worker
1509*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME], [
1510*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
1511*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
1512*6236dae4SAndroid Build Coastguard Worker  #
1513*6236dae4SAndroid Build Coastguard Worker  tst_links_gethostbyname="unknown"
1514*6236dae4SAndroid Build Coastguard Worker  tst_proto_gethostbyname="unknown"
1515*6236dae4SAndroid Build Coastguard Worker  tst_compi_gethostbyname="unknown"
1516*6236dae4SAndroid Build Coastguard Worker  tst_allow_gethostbyname="unknown"
1517*6236dae4SAndroid Build Coastguard Worker  #
1518*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if gethostbyname can be linked])
1519*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
1520*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
1521*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
1522*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
1523*6236dae4SAndroid Build Coastguard Worker      $curl_includes_netdb
1524*6236dae4SAndroid Build Coastguard Worker    ]],[[
1525*6236dae4SAndroid Build Coastguard Worker      if(0 != gethostbyname(0))
1526*6236dae4SAndroid Build Coastguard Worker        return 1;
1527*6236dae4SAndroid Build Coastguard Worker    ]])
1528*6236dae4SAndroid Build Coastguard Worker  ],[
1529*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1530*6236dae4SAndroid Build Coastguard Worker    tst_links_gethostbyname="yes"
1531*6236dae4SAndroid Build Coastguard Worker  ],[
1532*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1533*6236dae4SAndroid Build Coastguard Worker    tst_links_gethostbyname="no"
1534*6236dae4SAndroid Build Coastguard Worker  ])
1535*6236dae4SAndroid Build Coastguard Worker  #
1536*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_gethostbyname" = "yes"; then
1537*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostbyname is prototyped])
1538*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([gethostbyname],[
1539*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
1540*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
1541*6236dae4SAndroid Build Coastguard Worker      $curl_includes_netdb
1542*6236dae4SAndroid Build Coastguard Worker    ],[
1543*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1544*6236dae4SAndroid Build Coastguard Worker      tst_proto_gethostbyname="yes"
1545*6236dae4SAndroid Build Coastguard Worker    ],[
1546*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1547*6236dae4SAndroid Build Coastguard Worker      tst_proto_gethostbyname="no"
1548*6236dae4SAndroid Build Coastguard Worker    ])
1549*6236dae4SAndroid Build Coastguard Worker  fi
1550*6236dae4SAndroid Build Coastguard Worker  #
1551*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_gethostbyname" = "yes"; then
1552*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostbyname is compilable])
1553*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
1554*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
1555*6236dae4SAndroid Build Coastguard Worker        $curl_includes_winsock2
1556*6236dae4SAndroid Build Coastguard Worker        $curl_includes_bsdsocket
1557*6236dae4SAndroid Build Coastguard Worker        $curl_includes_netdb
1558*6236dae4SAndroid Build Coastguard Worker      ]],[[
1559*6236dae4SAndroid Build Coastguard Worker        if(0 != gethostbyname(0))
1560*6236dae4SAndroid Build Coastguard Worker          return 1;
1561*6236dae4SAndroid Build Coastguard Worker      ]])
1562*6236dae4SAndroid Build Coastguard Worker    ],[
1563*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1564*6236dae4SAndroid Build Coastguard Worker      tst_compi_gethostbyname="yes"
1565*6236dae4SAndroid Build Coastguard Worker    ],[
1566*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1567*6236dae4SAndroid Build Coastguard Worker      tst_compi_gethostbyname="no"
1568*6236dae4SAndroid Build Coastguard Worker    ])
1569*6236dae4SAndroid Build Coastguard Worker  fi
1570*6236dae4SAndroid Build Coastguard Worker  #
1571*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_gethostbyname" = "yes"; then
1572*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostbyname usage allowed])
1573*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_gethostbyname" != "xyes"; then
1574*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1575*6236dae4SAndroid Build Coastguard Worker      tst_allow_gethostbyname="yes"
1576*6236dae4SAndroid Build Coastguard Worker    else
1577*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1578*6236dae4SAndroid Build Coastguard Worker      tst_allow_gethostbyname="no"
1579*6236dae4SAndroid Build Coastguard Worker    fi
1580*6236dae4SAndroid Build Coastguard Worker  fi
1581*6236dae4SAndroid Build Coastguard Worker  #
1582*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if gethostbyname might be used])
1583*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_gethostbyname" = "yes" &&
1584*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_gethostbyname" = "yes" &&
1585*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_gethostbyname" = "yes" &&
1586*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_gethostbyname" = "yes"; then
1587*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1588*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYNAME, 1,
1589*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the gethostbyname function.])
1590*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_gethostbyname="yes"
1591*6236dae4SAndroid Build Coastguard Worker  else
1592*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1593*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_gethostbyname="no"
1594*6236dae4SAndroid Build Coastguard Worker  fi
1595*6236dae4SAndroid Build Coastguard Worker])
1596*6236dae4SAndroid Build Coastguard Worker
1597*6236dae4SAndroid Build Coastguard Worker
1598*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_GETHOSTBYNAME_R
1599*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
1600*6236dae4SAndroid Build Coastguard Workerdnl Verify if gethostbyname_r is available, prototyped,
1601*6236dae4SAndroid Build Coastguard Workerdnl and can be compiled. If all of these are true, and
1602*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
1603*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_gethostbyname_r, then
1604*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GETHOSTBYNAME_R will be defined.
1605*6236dae4SAndroid Build Coastguard Worker
1606*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME_R], [
1607*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_NETDB])dnl
1608*6236dae4SAndroid Build Coastguard Worker  #
1609*6236dae4SAndroid Build Coastguard Worker  tst_links_gethostbyname_r="unknown"
1610*6236dae4SAndroid Build Coastguard Worker  tst_proto_gethostbyname_r="unknown"
1611*6236dae4SAndroid Build Coastguard Worker  tst_compi_gethostbyname_r="unknown"
1612*6236dae4SAndroid Build Coastguard Worker  tst_allow_gethostbyname_r="unknown"
1613*6236dae4SAndroid Build Coastguard Worker  tst_nargs_gethostbyname_r="unknown"
1614*6236dae4SAndroid Build Coastguard Worker  #
1615*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if gethostbyname_r can be linked])
1616*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
1617*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
1618*6236dae4SAndroid Build Coastguard Worker  ],[
1619*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1620*6236dae4SAndroid Build Coastguard Worker    tst_links_gethostbyname_r="yes"
1621*6236dae4SAndroid Build Coastguard Worker  ],[
1622*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1623*6236dae4SAndroid Build Coastguard Worker    tst_links_gethostbyname_r="no"
1624*6236dae4SAndroid Build Coastguard Worker  ])
1625*6236dae4SAndroid Build Coastguard Worker  #
1626*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_gethostbyname_r" = "yes"; then
1627*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostbyname_r is prototyped])
1628*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([gethostbyname_r],[
1629*6236dae4SAndroid Build Coastguard Worker      $curl_includes_netdb
1630*6236dae4SAndroid Build Coastguard Worker    ],[
1631*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1632*6236dae4SAndroid Build Coastguard Worker      tst_proto_gethostbyname_r="yes"
1633*6236dae4SAndroid Build Coastguard Worker    ],[
1634*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1635*6236dae4SAndroid Build Coastguard Worker      tst_proto_gethostbyname_r="no"
1636*6236dae4SAndroid Build Coastguard Worker    ])
1637*6236dae4SAndroid Build Coastguard Worker  fi
1638*6236dae4SAndroid Build Coastguard Worker  #
1639*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_gethostbyname_r" = "yes"; then
1640*6236dae4SAndroid Build Coastguard Worker    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
1641*6236dae4SAndroid Build Coastguard Worker      AC_MSG_CHECKING([if gethostbyname_r takes 3 args.])
1642*6236dae4SAndroid Build Coastguard Worker      AC_COMPILE_IFELSE([
1643*6236dae4SAndroid Build Coastguard Worker        AC_LANG_PROGRAM([[
1644*6236dae4SAndroid Build Coastguard Worker          $curl_includes_netdb
1645*6236dae4SAndroid Build Coastguard Worker          $curl_includes_bsdsocket
1646*6236dae4SAndroid Build Coastguard Worker        ]],[[
1647*6236dae4SAndroid Build Coastguard Worker          if(0 != gethostbyname_r(0, 0, 0))
1648*6236dae4SAndroid Build Coastguard Worker            return 1;
1649*6236dae4SAndroid Build Coastguard Worker        ]])
1650*6236dae4SAndroid Build Coastguard Worker      ],[
1651*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([yes])
1652*6236dae4SAndroid Build Coastguard Worker        tst_compi_gethostbyname_r="yes"
1653*6236dae4SAndroid Build Coastguard Worker        tst_nargs_gethostbyname_r="3"
1654*6236dae4SAndroid Build Coastguard Worker      ],[
1655*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([no])
1656*6236dae4SAndroid Build Coastguard Worker        tst_compi_gethostbyname_r="no"
1657*6236dae4SAndroid Build Coastguard Worker      ])
1658*6236dae4SAndroid Build Coastguard Worker    fi
1659*6236dae4SAndroid Build Coastguard Worker    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
1660*6236dae4SAndroid Build Coastguard Worker      AC_MSG_CHECKING([if gethostbyname_r takes 5 args.])
1661*6236dae4SAndroid Build Coastguard Worker      AC_COMPILE_IFELSE([
1662*6236dae4SAndroid Build Coastguard Worker        AC_LANG_PROGRAM([[
1663*6236dae4SAndroid Build Coastguard Worker          $curl_includes_netdb
1664*6236dae4SAndroid Build Coastguard Worker          $curl_includes_bsdsocket
1665*6236dae4SAndroid Build Coastguard Worker        ]],[[
1666*6236dae4SAndroid Build Coastguard Worker          if(0 != gethostbyname_r(0, 0, 0, 0, 0))
1667*6236dae4SAndroid Build Coastguard Worker            return 1;
1668*6236dae4SAndroid Build Coastguard Worker        ]])
1669*6236dae4SAndroid Build Coastguard Worker      ],[
1670*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([yes])
1671*6236dae4SAndroid Build Coastguard Worker        tst_compi_gethostbyname_r="yes"
1672*6236dae4SAndroid Build Coastguard Worker        tst_nargs_gethostbyname_r="5"
1673*6236dae4SAndroid Build Coastguard Worker      ],[
1674*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([no])
1675*6236dae4SAndroid Build Coastguard Worker        tst_compi_gethostbyname_r="no"
1676*6236dae4SAndroid Build Coastguard Worker      ])
1677*6236dae4SAndroid Build Coastguard Worker    fi
1678*6236dae4SAndroid Build Coastguard Worker    if test "$tst_nargs_gethostbyname_r" = "unknown"; then
1679*6236dae4SAndroid Build Coastguard Worker      AC_MSG_CHECKING([if gethostbyname_r takes 6 args.])
1680*6236dae4SAndroid Build Coastguard Worker      AC_COMPILE_IFELSE([
1681*6236dae4SAndroid Build Coastguard Worker        AC_LANG_PROGRAM([[
1682*6236dae4SAndroid Build Coastguard Worker          $curl_includes_netdb
1683*6236dae4SAndroid Build Coastguard Worker          $curl_includes_bsdsocket
1684*6236dae4SAndroid Build Coastguard Worker        ]],[[
1685*6236dae4SAndroid Build Coastguard Worker          if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0))
1686*6236dae4SAndroid Build Coastguard Worker            return 1;
1687*6236dae4SAndroid Build Coastguard Worker        ]])
1688*6236dae4SAndroid Build Coastguard Worker      ],[
1689*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([yes])
1690*6236dae4SAndroid Build Coastguard Worker        tst_compi_gethostbyname_r="yes"
1691*6236dae4SAndroid Build Coastguard Worker        tst_nargs_gethostbyname_r="6"
1692*6236dae4SAndroid Build Coastguard Worker      ],[
1693*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([no])
1694*6236dae4SAndroid Build Coastguard Worker        tst_compi_gethostbyname_r="no"
1695*6236dae4SAndroid Build Coastguard Worker      ])
1696*6236dae4SAndroid Build Coastguard Worker    fi
1697*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostbyname_r is compilable])
1698*6236dae4SAndroid Build Coastguard Worker    if test "$tst_compi_gethostbyname_r" = "yes"; then
1699*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1700*6236dae4SAndroid Build Coastguard Worker    else
1701*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1702*6236dae4SAndroid Build Coastguard Worker    fi
1703*6236dae4SAndroid Build Coastguard Worker  fi
1704*6236dae4SAndroid Build Coastguard Worker  #
1705*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_gethostbyname_r" = "yes"; then
1706*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostbyname_r usage allowed])
1707*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_gethostbyname_r" != "xyes"; then
1708*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1709*6236dae4SAndroid Build Coastguard Worker      tst_allow_gethostbyname_r="yes"
1710*6236dae4SAndroid Build Coastguard Worker    else
1711*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1712*6236dae4SAndroid Build Coastguard Worker      tst_allow_gethostbyname_r="no"
1713*6236dae4SAndroid Build Coastguard Worker    fi
1714*6236dae4SAndroid Build Coastguard Worker  fi
1715*6236dae4SAndroid Build Coastguard Worker  #
1716*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if gethostbyname_r might be used])
1717*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_gethostbyname_r" = "yes" &&
1718*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_gethostbyname_r" = "yes" &&
1719*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_gethostbyname_r" = "yes" &&
1720*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_gethostbyname_r" = "yes"; then
1721*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1722*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYNAME_R, 1,
1723*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the gethostbyname_r function.])
1724*6236dae4SAndroid Build Coastguard Worker    dnl AC_DEFINE_UNQUOTED(GETHOSTBYNAME_R_ARGS, $tst_nargs_gethostbyname_r,
1725*6236dae4SAndroid Build Coastguard Worker    dnl   [Specifies the number of arguments to gethostbyname_r])
1726*6236dae4SAndroid Build Coastguard Worker    #
1727*6236dae4SAndroid Build Coastguard Worker    if test "$tst_nargs_gethostbyname_r" -eq "3"; then
1728*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE(HAVE_GETHOSTBYNAME_R_3, 1, [gethostbyname_r() takes 3 args])
1729*6236dae4SAndroid Build Coastguard Worker    elif test "$tst_nargs_gethostbyname_r" -eq "5"; then
1730*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE(HAVE_GETHOSTBYNAME_R_5, 1, [gethostbyname_r() takes 5 args])
1731*6236dae4SAndroid Build Coastguard Worker    elif test "$tst_nargs_gethostbyname_r" -eq "6"; then
1732*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE(HAVE_GETHOSTBYNAME_R_6, 1, [gethostbyname_r() takes 6 args])
1733*6236dae4SAndroid Build Coastguard Worker    fi
1734*6236dae4SAndroid Build Coastguard Worker    #
1735*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_gethostbyname_r="yes"
1736*6236dae4SAndroid Build Coastguard Worker  else
1737*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1738*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_gethostbyname_r="no"
1739*6236dae4SAndroid Build Coastguard Worker  fi
1740*6236dae4SAndroid Build Coastguard Worker])
1741*6236dae4SAndroid Build Coastguard Worker
1742*6236dae4SAndroid Build Coastguard Worker
1743*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_GETHOSTNAME
1744*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
1745*6236dae4SAndroid Build Coastguard Workerdnl Verify if gethostname is available, prototyped, and
1746*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
1747*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
1748*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_gethostname, then
1749*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GETHOSTNAME will be defined.
1750*6236dae4SAndroid Build Coastguard Worker
1751*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
1752*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
1753*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
1754*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
1755*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
1756*6236dae4SAndroid Build Coastguard Worker  #
1757*6236dae4SAndroid Build Coastguard Worker  tst_links_gethostname="unknown"
1758*6236dae4SAndroid Build Coastguard Worker  tst_proto_gethostname="unknown"
1759*6236dae4SAndroid Build Coastguard Worker  tst_compi_gethostname="unknown"
1760*6236dae4SAndroid Build Coastguard Worker  tst_allow_gethostname="unknown"
1761*6236dae4SAndroid Build Coastguard Worker  #
1762*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if gethostname can be linked])
1763*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
1764*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
1765*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
1766*6236dae4SAndroid Build Coastguard Worker      $curl_includes_unistd
1767*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
1768*6236dae4SAndroid Build Coastguard Worker    ]],[[
1769*6236dae4SAndroid Build Coastguard Worker      if(0 != gethostname(0, 0))
1770*6236dae4SAndroid Build Coastguard Worker        return 1;
1771*6236dae4SAndroid Build Coastguard Worker    ]])
1772*6236dae4SAndroid Build Coastguard Worker  ],[
1773*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1774*6236dae4SAndroid Build Coastguard Worker    tst_links_gethostname="yes"
1775*6236dae4SAndroid Build Coastguard Worker  ],[
1776*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1777*6236dae4SAndroid Build Coastguard Worker    tst_links_gethostname="no"
1778*6236dae4SAndroid Build Coastguard Worker  ])
1779*6236dae4SAndroid Build Coastguard Worker  #
1780*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_gethostname" = "yes"; then
1781*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostname is prototyped])
1782*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([gethostname],[
1783*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
1784*6236dae4SAndroid Build Coastguard Worker      $curl_includes_unistd
1785*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
1786*6236dae4SAndroid Build Coastguard Worker    ],[
1787*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1788*6236dae4SAndroid Build Coastguard Worker      tst_proto_gethostname="yes"
1789*6236dae4SAndroid Build Coastguard Worker    ],[
1790*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1791*6236dae4SAndroid Build Coastguard Worker      tst_proto_gethostname="no"
1792*6236dae4SAndroid Build Coastguard Worker    ])
1793*6236dae4SAndroid Build Coastguard Worker  fi
1794*6236dae4SAndroid Build Coastguard Worker  #
1795*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_gethostname" = "yes"; then
1796*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostname is compilable])
1797*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
1798*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
1799*6236dae4SAndroid Build Coastguard Worker        $curl_includes_winsock2
1800*6236dae4SAndroid Build Coastguard Worker        $curl_includes_unistd
1801*6236dae4SAndroid Build Coastguard Worker        $curl_includes_bsdsocket
1802*6236dae4SAndroid Build Coastguard Worker      ]],[[
1803*6236dae4SAndroid Build Coastguard Worker        if(0 != gethostname(0, 0))
1804*6236dae4SAndroid Build Coastguard Worker          return 1;
1805*6236dae4SAndroid Build Coastguard Worker      ]])
1806*6236dae4SAndroid Build Coastguard Worker    ],[
1807*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1808*6236dae4SAndroid Build Coastguard Worker      tst_compi_gethostname="yes"
1809*6236dae4SAndroid Build Coastguard Worker    ],[
1810*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1811*6236dae4SAndroid Build Coastguard Worker      tst_compi_gethostname="no"
1812*6236dae4SAndroid Build Coastguard Worker    ])
1813*6236dae4SAndroid Build Coastguard Worker  fi
1814*6236dae4SAndroid Build Coastguard Worker  #
1815*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_gethostname" = "yes"; then
1816*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([for gethostname arg 2 data type])
1817*6236dae4SAndroid Build Coastguard Worker    tst_gethostname_type_arg2="unknown"
1818*6236dae4SAndroid Build Coastguard Worker    for tst_arg1 in 'char *' 'unsigned char *' 'void *'; do
1819*6236dae4SAndroid Build Coastguard Worker      for tst_arg2 in 'int' 'unsigned int' 'size_t'; do
1820*6236dae4SAndroid Build Coastguard Worker        if test "$tst_gethostname_type_arg2" = "unknown"; then
1821*6236dae4SAndroid Build Coastguard Worker          AC_COMPILE_IFELSE([
1822*6236dae4SAndroid Build Coastguard Worker            AC_LANG_PROGRAM([[
1823*6236dae4SAndroid Build Coastguard Worker              $curl_includes_winsock2
1824*6236dae4SAndroid Build Coastguard Worker              $curl_includes_unistd
1825*6236dae4SAndroid Build Coastguard Worker              $curl_includes_bsdsocket
1826*6236dae4SAndroid Build Coastguard Worker              $curl_preprocess_callconv
1827*6236dae4SAndroid Build Coastguard Worker              extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
1828*6236dae4SAndroid Build Coastguard Worker            ]],[[
1829*6236dae4SAndroid Build Coastguard Worker              if(0 != gethostname(0, 0))
1830*6236dae4SAndroid Build Coastguard Worker                return 1;
1831*6236dae4SAndroid Build Coastguard Worker            ]])
1832*6236dae4SAndroid Build Coastguard Worker          ],[
1833*6236dae4SAndroid Build Coastguard Worker            tst_gethostname_type_arg2="$tst_arg2"
1834*6236dae4SAndroid Build Coastguard Worker          ])
1835*6236dae4SAndroid Build Coastguard Worker        fi
1836*6236dae4SAndroid Build Coastguard Worker      done
1837*6236dae4SAndroid Build Coastguard Worker    done
1838*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([$tst_gethostname_type_arg2])
1839*6236dae4SAndroid Build Coastguard Worker    if test "$tst_gethostname_type_arg2" != "unknown"; then
1840*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE_UNQUOTED(GETHOSTNAME_TYPE_ARG2, $tst_gethostname_type_arg2,
1841*6236dae4SAndroid Build Coastguard Worker        [Define to the type of arg 2 for gethostname.])
1842*6236dae4SAndroid Build Coastguard Worker    fi
1843*6236dae4SAndroid Build Coastguard Worker  fi
1844*6236dae4SAndroid Build Coastguard Worker  #
1845*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_gethostname" = "yes"; then
1846*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gethostname usage allowed])
1847*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_gethostname" != "xyes"; then
1848*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1849*6236dae4SAndroid Build Coastguard Worker      tst_allow_gethostname="yes"
1850*6236dae4SAndroid Build Coastguard Worker    else
1851*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1852*6236dae4SAndroid Build Coastguard Worker      tst_allow_gethostname="no"
1853*6236dae4SAndroid Build Coastguard Worker    fi
1854*6236dae4SAndroid Build Coastguard Worker  fi
1855*6236dae4SAndroid Build Coastguard Worker  #
1856*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if gethostname might be used])
1857*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_gethostname" = "yes" &&
1858*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_gethostname" = "yes" &&
1859*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_gethostname" = "yes" &&
1860*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_gethostname" = "yes"; then
1861*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1862*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_GETHOSTNAME, 1,
1863*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the gethostname function.])
1864*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_gethostname="yes"
1865*6236dae4SAndroid Build Coastguard Worker  else
1866*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1867*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_gethostname="no"
1868*6236dae4SAndroid Build Coastguard Worker  fi
1869*6236dae4SAndroid Build Coastguard Worker])
1870*6236dae4SAndroid Build Coastguard Worker
1871*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_GETPEERNAME
1872*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
1873*6236dae4SAndroid Build Coastguard Workerdnl Verify if getpeername is available, prototyped, and
1874*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
1875*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
1876*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_getpeername, then
1877*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GETPEERNAME will be defined.
1878*6236dae4SAndroid Build Coastguard Worker
1879*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_GETPEERNAME], [
1880*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
1881*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
1882*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
1883*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
1884*6236dae4SAndroid Build Coastguard Worker  #
1885*6236dae4SAndroid Build Coastguard Worker  tst_links_getpeername="unknown"
1886*6236dae4SAndroid Build Coastguard Worker  tst_proto_getpeername="unknown"
1887*6236dae4SAndroid Build Coastguard Worker  tst_compi_getpeername="unknown"
1888*6236dae4SAndroid Build Coastguard Worker  tst_allow_getpeername="unknown"
1889*6236dae4SAndroid Build Coastguard Worker  #
1890*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if getpeername can be linked])
1891*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
1892*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
1893*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
1894*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
1895*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
1896*6236dae4SAndroid Build Coastguard Worker    ]],[[
1897*6236dae4SAndroid Build Coastguard Worker      if(0 != getpeername(0, (void *)0, (void *)0))
1898*6236dae4SAndroid Build Coastguard Worker        return 1;
1899*6236dae4SAndroid Build Coastguard Worker    ]])
1900*6236dae4SAndroid Build Coastguard Worker  ],[
1901*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1902*6236dae4SAndroid Build Coastguard Worker    tst_links_getpeername="yes"
1903*6236dae4SAndroid Build Coastguard Worker  ],[
1904*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1905*6236dae4SAndroid Build Coastguard Worker    tst_links_getpeername="no"
1906*6236dae4SAndroid Build Coastguard Worker  ])
1907*6236dae4SAndroid Build Coastguard Worker  #
1908*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_getpeername" = "yes"; then
1909*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getpeername is prototyped])
1910*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([getpeername],[
1911*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
1912*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
1913*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
1914*6236dae4SAndroid Build Coastguard Worker    ],[
1915*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1916*6236dae4SAndroid Build Coastguard Worker      tst_proto_getpeername="yes"
1917*6236dae4SAndroid Build Coastguard Worker    ],[
1918*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1919*6236dae4SAndroid Build Coastguard Worker      tst_proto_getpeername="no"
1920*6236dae4SAndroid Build Coastguard Worker    ])
1921*6236dae4SAndroid Build Coastguard Worker  fi
1922*6236dae4SAndroid Build Coastguard Worker  #
1923*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_getpeername" = "yes"; then
1924*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getpeername is compilable])
1925*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
1926*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
1927*6236dae4SAndroid Build Coastguard Worker        $curl_includes_winsock2
1928*6236dae4SAndroid Build Coastguard Worker        $curl_includes_bsdsocket
1929*6236dae4SAndroid Build Coastguard Worker        $curl_includes_sys_socket
1930*6236dae4SAndroid Build Coastguard Worker      ]],[[
1931*6236dae4SAndroid Build Coastguard Worker        if(0 != getpeername(0, (void *)0, (void *)0))
1932*6236dae4SAndroid Build Coastguard Worker          return 1;
1933*6236dae4SAndroid Build Coastguard Worker      ]])
1934*6236dae4SAndroid Build Coastguard Worker    ],[
1935*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1936*6236dae4SAndroid Build Coastguard Worker      tst_compi_getpeername="yes"
1937*6236dae4SAndroid Build Coastguard Worker    ],[
1938*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1939*6236dae4SAndroid Build Coastguard Worker      tst_compi_getpeername="no"
1940*6236dae4SAndroid Build Coastguard Worker    ])
1941*6236dae4SAndroid Build Coastguard Worker  fi
1942*6236dae4SAndroid Build Coastguard Worker  #
1943*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_getpeername" = "yes"; then
1944*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getpeername usage allowed])
1945*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_getpeername" != "xyes"; then
1946*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
1947*6236dae4SAndroid Build Coastguard Worker      tst_allow_getpeername="yes"
1948*6236dae4SAndroid Build Coastguard Worker    else
1949*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
1950*6236dae4SAndroid Build Coastguard Worker      tst_allow_getpeername="no"
1951*6236dae4SAndroid Build Coastguard Worker    fi
1952*6236dae4SAndroid Build Coastguard Worker  fi
1953*6236dae4SAndroid Build Coastguard Worker  #
1954*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if getpeername might be used])
1955*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_getpeername" = "yes" &&
1956*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_getpeername" = "yes" &&
1957*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_getpeername" = "yes" &&
1958*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_getpeername" = "yes"; then
1959*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
1960*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_GETPEERNAME, 1,
1961*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the getpeername function.])
1962*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getpeername="yes"
1963*6236dae4SAndroid Build Coastguard Worker  else
1964*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
1965*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getpeername="no"
1966*6236dae4SAndroid Build Coastguard Worker  fi
1967*6236dae4SAndroid Build Coastguard Worker])
1968*6236dae4SAndroid Build Coastguard Worker
1969*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_GETSOCKNAME
1970*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
1971*6236dae4SAndroid Build Coastguard Workerdnl Verify if getsockname is available, prototyped, and
1972*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
1973*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
1974*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_getsockname, then
1975*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GETSOCKNAME will be defined.
1976*6236dae4SAndroid Build Coastguard Worker
1977*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_GETSOCKNAME], [
1978*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
1979*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
1980*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
1981*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
1982*6236dae4SAndroid Build Coastguard Worker  #
1983*6236dae4SAndroid Build Coastguard Worker  tst_links_getsockname="unknown"
1984*6236dae4SAndroid Build Coastguard Worker  tst_proto_getsockname="unknown"
1985*6236dae4SAndroid Build Coastguard Worker  tst_compi_getsockname="unknown"
1986*6236dae4SAndroid Build Coastguard Worker  tst_allow_getsockname="unknown"
1987*6236dae4SAndroid Build Coastguard Worker  #
1988*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if getsockname can be linked])
1989*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
1990*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
1991*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
1992*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
1993*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
1994*6236dae4SAndroid Build Coastguard Worker    ]],[[
1995*6236dae4SAndroid Build Coastguard Worker      if(0 != getsockname(0, (void *)0, (void *)0))
1996*6236dae4SAndroid Build Coastguard Worker        return 1;
1997*6236dae4SAndroid Build Coastguard Worker    ]])
1998*6236dae4SAndroid Build Coastguard Worker  ],[
1999*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2000*6236dae4SAndroid Build Coastguard Worker    tst_links_getsockname="yes"
2001*6236dae4SAndroid Build Coastguard Worker  ],[
2002*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2003*6236dae4SAndroid Build Coastguard Worker    tst_links_getsockname="no"
2004*6236dae4SAndroid Build Coastguard Worker  ])
2005*6236dae4SAndroid Build Coastguard Worker  #
2006*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_getsockname" = "yes"; then
2007*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getsockname is prototyped])
2008*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([getsockname],[
2009*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
2010*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
2011*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
2012*6236dae4SAndroid Build Coastguard Worker    ],[
2013*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2014*6236dae4SAndroid Build Coastguard Worker      tst_proto_getsockname="yes"
2015*6236dae4SAndroid Build Coastguard Worker    ],[
2016*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2017*6236dae4SAndroid Build Coastguard Worker      tst_proto_getsockname="no"
2018*6236dae4SAndroid Build Coastguard Worker    ])
2019*6236dae4SAndroid Build Coastguard Worker  fi
2020*6236dae4SAndroid Build Coastguard Worker  #
2021*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_getsockname" = "yes"; then
2022*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getsockname is compilable])
2023*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2024*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2025*6236dae4SAndroid Build Coastguard Worker        $curl_includes_winsock2
2026*6236dae4SAndroid Build Coastguard Worker        $curl_includes_bsdsocket
2027*6236dae4SAndroid Build Coastguard Worker        $curl_includes_sys_socket
2028*6236dae4SAndroid Build Coastguard Worker      ]],[[
2029*6236dae4SAndroid Build Coastguard Worker        if(0 != getsockname(0, (void *)0, (void *)0))
2030*6236dae4SAndroid Build Coastguard Worker          return 1;
2031*6236dae4SAndroid Build Coastguard Worker      ]])
2032*6236dae4SAndroid Build Coastguard Worker    ],[
2033*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2034*6236dae4SAndroid Build Coastguard Worker      tst_compi_getsockname="yes"
2035*6236dae4SAndroid Build Coastguard Worker    ],[
2036*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2037*6236dae4SAndroid Build Coastguard Worker      tst_compi_getsockname="no"
2038*6236dae4SAndroid Build Coastguard Worker    ])
2039*6236dae4SAndroid Build Coastguard Worker  fi
2040*6236dae4SAndroid Build Coastguard Worker  #
2041*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_getsockname" = "yes"; then
2042*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getsockname usage allowed])
2043*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_getsockname" != "xyes"; then
2044*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2045*6236dae4SAndroid Build Coastguard Worker      tst_allow_getsockname="yes"
2046*6236dae4SAndroid Build Coastguard Worker    else
2047*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2048*6236dae4SAndroid Build Coastguard Worker      tst_allow_getsockname="no"
2049*6236dae4SAndroid Build Coastguard Worker    fi
2050*6236dae4SAndroid Build Coastguard Worker  fi
2051*6236dae4SAndroid Build Coastguard Worker  #
2052*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if getsockname might be used])
2053*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_getsockname" = "yes" &&
2054*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_getsockname" = "yes" &&
2055*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_getsockname" = "yes" &&
2056*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_getsockname" = "yes"; then
2057*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2058*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_GETSOCKNAME, 1,
2059*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the getsockname function.])
2060*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getsockname="yes"
2061*6236dae4SAndroid Build Coastguard Worker  else
2062*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2063*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getsockname="no"
2064*6236dae4SAndroid Build Coastguard Worker  fi
2065*6236dae4SAndroid Build Coastguard Worker])
2066*6236dae4SAndroid Build Coastguard Worker
2067*6236dae4SAndroid Build Coastguard Worker
2068*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_GETIFADDRS
2069*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2070*6236dae4SAndroid Build Coastguard Workerdnl Verify if getifaddrs is available, prototyped, can
2071*6236dae4SAndroid Build Coastguard Workerdnl be compiled and seems to work. If all of these are
2072*6236dae4SAndroid Build Coastguard Workerdnl true, and usage has not been previously disallowed
2073*6236dae4SAndroid Build Coastguard Workerdnl with shell variable curl_disallow_getifaddrs, then
2074*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GETIFADDRS will be defined.
2075*6236dae4SAndroid Build Coastguard Worker
2076*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_GETIFADDRS], [
2077*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
2078*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_IFADDRS])dnl
2079*6236dae4SAndroid Build Coastguard Worker  #
2080*6236dae4SAndroid Build Coastguard Worker  tst_links_getifaddrs="unknown"
2081*6236dae4SAndroid Build Coastguard Worker  tst_proto_getifaddrs="unknown"
2082*6236dae4SAndroid Build Coastguard Worker  tst_compi_getifaddrs="unknown"
2083*6236dae4SAndroid Build Coastguard Worker  tst_works_getifaddrs="unknown"
2084*6236dae4SAndroid Build Coastguard Worker  tst_allow_getifaddrs="unknown"
2085*6236dae4SAndroid Build Coastguard Worker  #
2086*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if getifaddrs can be linked])
2087*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
2088*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([getifaddrs])
2089*6236dae4SAndroid Build Coastguard Worker  ],[
2090*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2091*6236dae4SAndroid Build Coastguard Worker    tst_links_getifaddrs="yes"
2092*6236dae4SAndroid Build Coastguard Worker  ],[
2093*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2094*6236dae4SAndroid Build Coastguard Worker    tst_links_getifaddrs="no"
2095*6236dae4SAndroid Build Coastguard Worker  ])
2096*6236dae4SAndroid Build Coastguard Worker  #
2097*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_getifaddrs" = "yes"; then
2098*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getifaddrs is prototyped])
2099*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([getifaddrs],[
2100*6236dae4SAndroid Build Coastguard Worker      $curl_includes_ifaddrs
2101*6236dae4SAndroid Build Coastguard Worker    ],[
2102*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2103*6236dae4SAndroid Build Coastguard Worker      tst_proto_getifaddrs="yes"
2104*6236dae4SAndroid Build Coastguard Worker    ],[
2105*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2106*6236dae4SAndroid Build Coastguard Worker      tst_proto_getifaddrs="no"
2107*6236dae4SAndroid Build Coastguard Worker    ])
2108*6236dae4SAndroid Build Coastguard Worker  fi
2109*6236dae4SAndroid Build Coastguard Worker  #
2110*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_getifaddrs" = "yes"; then
2111*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getifaddrs is compilable])
2112*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2113*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2114*6236dae4SAndroid Build Coastguard Worker        $curl_includes_ifaddrs
2115*6236dae4SAndroid Build Coastguard Worker      ]],[[
2116*6236dae4SAndroid Build Coastguard Worker        if(0 != getifaddrs(0))
2117*6236dae4SAndroid Build Coastguard Worker          return 1;
2118*6236dae4SAndroid Build Coastguard Worker      ]])
2119*6236dae4SAndroid Build Coastguard Worker    ],[
2120*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2121*6236dae4SAndroid Build Coastguard Worker      tst_compi_getifaddrs="yes"
2122*6236dae4SAndroid Build Coastguard Worker    ],[
2123*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2124*6236dae4SAndroid Build Coastguard Worker      tst_compi_getifaddrs="no"
2125*6236dae4SAndroid Build Coastguard Worker    ])
2126*6236dae4SAndroid Build Coastguard Worker  fi
2127*6236dae4SAndroid Build Coastguard Worker  #
2128*6236dae4SAndroid Build Coastguard Worker  dnl only do runtime verification when not cross-compiling
2129*6236dae4SAndroid Build Coastguard Worker  if test "x$cross_compiling" != "xyes" &&
2130*6236dae4SAndroid Build Coastguard Worker    test "$tst_compi_getifaddrs" = "yes"; then
2131*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getifaddrs seems to work])
2132*6236dae4SAndroid Build Coastguard Worker    CURL_RUN_IFELSE([
2133*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2134*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stdlib
2135*6236dae4SAndroid Build Coastguard Worker        $curl_includes_ifaddrs
2136*6236dae4SAndroid Build Coastguard Worker      ]],[[
2137*6236dae4SAndroid Build Coastguard Worker        struct ifaddrs *ifa = 0;
2138*6236dae4SAndroid Build Coastguard Worker        int error;
2139*6236dae4SAndroid Build Coastguard Worker
2140*6236dae4SAndroid Build Coastguard Worker        error = getifaddrs(&ifa);
2141*6236dae4SAndroid Build Coastguard Worker        if(error || !ifa)
2142*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2143*6236dae4SAndroid Build Coastguard Worker        else
2144*6236dae4SAndroid Build Coastguard Worker          exit(0);
2145*6236dae4SAndroid Build Coastguard Worker      ]])
2146*6236dae4SAndroid Build Coastguard Worker    ],[
2147*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2148*6236dae4SAndroid Build Coastguard Worker      tst_works_getifaddrs="yes"
2149*6236dae4SAndroid Build Coastguard Worker    ],[
2150*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2151*6236dae4SAndroid Build Coastguard Worker      tst_works_getifaddrs="no"
2152*6236dae4SAndroid Build Coastguard Worker    ])
2153*6236dae4SAndroid Build Coastguard Worker  fi
2154*6236dae4SAndroid Build Coastguard Worker  #
2155*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_getifaddrs" = "yes" &&
2156*6236dae4SAndroid Build Coastguard Worker    test "$tst_works_getifaddrs" != "no"; then
2157*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if getifaddrs usage allowed])
2158*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_getifaddrs" != "xyes"; then
2159*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2160*6236dae4SAndroid Build Coastguard Worker      tst_allow_getifaddrs="yes"
2161*6236dae4SAndroid Build Coastguard Worker    else
2162*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2163*6236dae4SAndroid Build Coastguard Worker      tst_allow_getifaddrs="no"
2164*6236dae4SAndroid Build Coastguard Worker    fi
2165*6236dae4SAndroid Build Coastguard Worker  fi
2166*6236dae4SAndroid Build Coastguard Worker  #
2167*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if getifaddrs might be used])
2168*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_getifaddrs" = "yes" &&
2169*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_getifaddrs" = "yes" &&
2170*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_getifaddrs" = "yes" &&
2171*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_getifaddrs" = "yes" &&
2172*6236dae4SAndroid Build Coastguard Worker     test "$tst_works_getifaddrs" != "no"; then
2173*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2174*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_GETIFADDRS, 1,
2175*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a working getifaddrs function.])
2176*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getifaddrs="yes"
2177*6236dae4SAndroid Build Coastguard Worker  else
2178*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2179*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_getifaddrs="no"
2180*6236dae4SAndroid Build Coastguard Worker  fi
2181*6236dae4SAndroid Build Coastguard Worker])
2182*6236dae4SAndroid Build Coastguard Worker
2183*6236dae4SAndroid Build Coastguard Worker
2184*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_GMTIME_R
2185*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2186*6236dae4SAndroid Build Coastguard Workerdnl Verify if gmtime_r is available, prototyped, can
2187*6236dae4SAndroid Build Coastguard Workerdnl be compiled and seems to work. If all of these are
2188*6236dae4SAndroid Build Coastguard Workerdnl true, and usage has not been previously disallowed
2189*6236dae4SAndroid Build Coastguard Workerdnl with shell variable curl_disallow_gmtime_r, then
2190*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GMTIME_R will be defined.
2191*6236dae4SAndroid Build Coastguard Worker
2192*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_GMTIME_R], [
2193*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
2194*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_TIME])dnl
2195*6236dae4SAndroid Build Coastguard Worker  #
2196*6236dae4SAndroid Build Coastguard Worker  tst_links_gmtime_r="unknown"
2197*6236dae4SAndroid Build Coastguard Worker  tst_proto_gmtime_r="unknown"
2198*6236dae4SAndroid Build Coastguard Worker  tst_compi_gmtime_r="unknown"
2199*6236dae4SAndroid Build Coastguard Worker  tst_works_gmtime_r="unknown"
2200*6236dae4SAndroid Build Coastguard Worker  tst_allow_gmtime_r="unknown"
2201*6236dae4SAndroid Build Coastguard Worker  #
2202*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if gmtime_r can be linked])
2203*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
2204*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([gmtime_r])
2205*6236dae4SAndroid Build Coastguard Worker  ],[
2206*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2207*6236dae4SAndroid Build Coastguard Worker    tst_links_gmtime_r="yes"
2208*6236dae4SAndroid Build Coastguard Worker  ],[
2209*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2210*6236dae4SAndroid Build Coastguard Worker    tst_links_gmtime_r="no"
2211*6236dae4SAndroid Build Coastguard Worker  ])
2212*6236dae4SAndroid Build Coastguard Worker  #
2213*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_gmtime_r" = "yes"; then
2214*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gmtime_r is prototyped])
2215*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([gmtime_r],[
2216*6236dae4SAndroid Build Coastguard Worker      $curl_includes_time
2217*6236dae4SAndroid Build Coastguard Worker    ],[
2218*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2219*6236dae4SAndroid Build Coastguard Worker      tst_proto_gmtime_r="yes"
2220*6236dae4SAndroid Build Coastguard Worker    ],[
2221*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2222*6236dae4SAndroid Build Coastguard Worker      tst_proto_gmtime_r="no"
2223*6236dae4SAndroid Build Coastguard Worker    ])
2224*6236dae4SAndroid Build Coastguard Worker  fi
2225*6236dae4SAndroid Build Coastguard Worker  #
2226*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_gmtime_r" = "yes"; then
2227*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gmtime_r is compilable])
2228*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2229*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2230*6236dae4SAndroid Build Coastguard Worker        $curl_includes_time
2231*6236dae4SAndroid Build Coastguard Worker      ]],[[
2232*6236dae4SAndroid Build Coastguard Worker        if(0 != gmtime_r(0, 0))
2233*6236dae4SAndroid Build Coastguard Worker          return 1;
2234*6236dae4SAndroid Build Coastguard Worker      ]])
2235*6236dae4SAndroid Build Coastguard Worker    ],[
2236*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2237*6236dae4SAndroid Build Coastguard Worker      tst_compi_gmtime_r="yes"
2238*6236dae4SAndroid Build Coastguard Worker    ],[
2239*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2240*6236dae4SAndroid Build Coastguard Worker      tst_compi_gmtime_r="no"
2241*6236dae4SAndroid Build Coastguard Worker    ])
2242*6236dae4SAndroid Build Coastguard Worker  fi
2243*6236dae4SAndroid Build Coastguard Worker  #
2244*6236dae4SAndroid Build Coastguard Worker  dnl only do runtime verification when not cross-compiling
2245*6236dae4SAndroid Build Coastguard Worker  if test "x$cross_compiling" != "xyes" &&
2246*6236dae4SAndroid Build Coastguard Worker    test "$tst_compi_gmtime_r" = "yes"; then
2247*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gmtime_r seems to work])
2248*6236dae4SAndroid Build Coastguard Worker    CURL_RUN_IFELSE([
2249*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2250*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stdlib
2251*6236dae4SAndroid Build Coastguard Worker        $curl_includes_time
2252*6236dae4SAndroid Build Coastguard Worker      ]],[[
2253*6236dae4SAndroid Build Coastguard Worker        time_t local = 1170352587;
2254*6236dae4SAndroid Build Coastguard Worker        struct tm *gmt = 0;
2255*6236dae4SAndroid Build Coastguard Worker        struct tm result;
2256*6236dae4SAndroid Build Coastguard Worker        gmt = gmtime_r(&local, &result);
2257*6236dae4SAndroid Build Coastguard Worker        if(gmt)
2258*6236dae4SAndroid Build Coastguard Worker          exit(0);
2259*6236dae4SAndroid Build Coastguard Worker        else
2260*6236dae4SAndroid Build Coastguard Worker          exit(1);
2261*6236dae4SAndroid Build Coastguard Worker      ]])
2262*6236dae4SAndroid Build Coastguard Worker    ],[
2263*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2264*6236dae4SAndroid Build Coastguard Worker      tst_works_gmtime_r="yes"
2265*6236dae4SAndroid Build Coastguard Worker    ],[
2266*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2267*6236dae4SAndroid Build Coastguard Worker      tst_works_gmtime_r="no"
2268*6236dae4SAndroid Build Coastguard Worker    ])
2269*6236dae4SAndroid Build Coastguard Worker  fi
2270*6236dae4SAndroid Build Coastguard Worker  #
2271*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_gmtime_r" = "yes" &&
2272*6236dae4SAndroid Build Coastguard Worker    test "$tst_works_gmtime_r" != "no"; then
2273*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if gmtime_r usage allowed])
2274*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_gmtime_r" != "xyes"; then
2275*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2276*6236dae4SAndroid Build Coastguard Worker      tst_allow_gmtime_r="yes"
2277*6236dae4SAndroid Build Coastguard Worker    else
2278*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2279*6236dae4SAndroid Build Coastguard Worker      tst_allow_gmtime_r="no"
2280*6236dae4SAndroid Build Coastguard Worker    fi
2281*6236dae4SAndroid Build Coastguard Worker  fi
2282*6236dae4SAndroid Build Coastguard Worker  #
2283*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if gmtime_r might be used])
2284*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_gmtime_r" = "yes" &&
2285*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_gmtime_r" = "yes" &&
2286*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_gmtime_r" = "yes" &&
2287*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_gmtime_r" = "yes" &&
2288*6236dae4SAndroid Build Coastguard Worker     test "$tst_works_gmtime_r" != "no"; then
2289*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2290*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_GMTIME_R, 1,
2291*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a working gmtime_r function.])
2292*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_gmtime_r="yes"
2293*6236dae4SAndroid Build Coastguard Worker  else
2294*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2295*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_gmtime_r="no"
2296*6236dae4SAndroid Build Coastguard Worker  fi
2297*6236dae4SAndroid Build Coastguard Worker])
2298*6236dae4SAndroid Build Coastguard Worker
2299*6236dae4SAndroid Build Coastguard Worker
2300*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_INET_NTOP
2301*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2302*6236dae4SAndroid Build Coastguard Workerdnl Verify if inet_ntop is available, prototyped, can
2303*6236dae4SAndroid Build Coastguard Workerdnl be compiled and seems to work. If all of these are
2304*6236dae4SAndroid Build Coastguard Workerdnl true, and usage has not been previously disallowed
2305*6236dae4SAndroid Build Coastguard Workerdnl with shell variable curl_disallow_inet_ntop, then
2306*6236dae4SAndroid Build Coastguard Workerdnl HAVE_INET_NTOP will be defined.
2307*6236dae4SAndroid Build Coastguard Worker
2308*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_INET_NTOP], [
2309*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
2310*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_ARPA_INET])dnl
2311*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
2312*6236dae4SAndroid Build Coastguard Worker  #
2313*6236dae4SAndroid Build Coastguard Worker  tst_links_inet_ntop="unknown"
2314*6236dae4SAndroid Build Coastguard Worker  tst_proto_inet_ntop="unknown"
2315*6236dae4SAndroid Build Coastguard Worker  tst_compi_inet_ntop="unknown"
2316*6236dae4SAndroid Build Coastguard Worker  tst_works_inet_ntop="unknown"
2317*6236dae4SAndroid Build Coastguard Worker  tst_allow_inet_ntop="unknown"
2318*6236dae4SAndroid Build Coastguard Worker  #
2319*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if inet_ntop can be linked])
2320*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
2321*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([inet_ntop])
2322*6236dae4SAndroid Build Coastguard Worker  ],[
2323*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2324*6236dae4SAndroid Build Coastguard Worker    tst_links_inet_ntop="yes"
2325*6236dae4SAndroid Build Coastguard Worker  ],[
2326*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2327*6236dae4SAndroid Build Coastguard Worker    tst_links_inet_ntop="no"
2328*6236dae4SAndroid Build Coastguard Worker  ])
2329*6236dae4SAndroid Build Coastguard Worker  #
2330*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_inet_ntop" = "yes"; then
2331*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if inet_ntop is prototyped])
2332*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([inet_ntop],[
2333*6236dae4SAndroid Build Coastguard Worker      $curl_includes_arpa_inet
2334*6236dae4SAndroid Build Coastguard Worker    ],[
2335*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2336*6236dae4SAndroid Build Coastguard Worker      tst_proto_inet_ntop="yes"
2337*6236dae4SAndroid Build Coastguard Worker    ],[
2338*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2339*6236dae4SAndroid Build Coastguard Worker      tst_proto_inet_ntop="no"
2340*6236dae4SAndroid Build Coastguard Worker    ])
2341*6236dae4SAndroid Build Coastguard Worker  fi
2342*6236dae4SAndroid Build Coastguard Worker  #
2343*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_inet_ntop" = "yes"; then
2344*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if inet_ntop is compilable])
2345*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2346*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2347*6236dae4SAndroid Build Coastguard Worker        $curl_includes_arpa_inet
2348*6236dae4SAndroid Build Coastguard Worker      ]],[[
2349*6236dae4SAndroid Build Coastguard Worker        if(0 != inet_ntop(0, 0, 0, 0))
2350*6236dae4SAndroid Build Coastguard Worker          return 1;
2351*6236dae4SAndroid Build Coastguard Worker      ]])
2352*6236dae4SAndroid Build Coastguard Worker    ],[
2353*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2354*6236dae4SAndroid Build Coastguard Worker      tst_compi_inet_ntop="yes"
2355*6236dae4SAndroid Build Coastguard Worker    ],[
2356*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2357*6236dae4SAndroid Build Coastguard Worker      tst_compi_inet_ntop="no"
2358*6236dae4SAndroid Build Coastguard Worker    ])
2359*6236dae4SAndroid Build Coastguard Worker  fi
2360*6236dae4SAndroid Build Coastguard Worker  #
2361*6236dae4SAndroid Build Coastguard Worker  dnl only do runtime verification when not cross-compiling
2362*6236dae4SAndroid Build Coastguard Worker  if test "x$cross_compiling" != "xyes" &&
2363*6236dae4SAndroid Build Coastguard Worker    test "$tst_compi_inet_ntop" = "yes"; then
2364*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if inet_ntop seems to work])
2365*6236dae4SAndroid Build Coastguard Worker    CURL_RUN_IFELSE([
2366*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2367*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stdlib
2368*6236dae4SAndroid Build Coastguard Worker        $curl_includes_arpa_inet
2369*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
2370*6236dae4SAndroid Build Coastguard Worker      ]],[[
2371*6236dae4SAndroid Build Coastguard Worker        char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
2372*6236dae4SAndroid Build Coastguard Worker        char ipv4res[sizeof "255.255.255.255"];
2373*6236dae4SAndroid Build Coastguard Worker        unsigned char ipv6a[26];
2374*6236dae4SAndroid Build Coastguard Worker        unsigned char ipv4a[5];
2375*6236dae4SAndroid Build Coastguard Worker        char *ipv6ptr = 0;
2376*6236dae4SAndroid Build Coastguard Worker        char *ipv4ptr = 0;
2377*6236dae4SAndroid Build Coastguard Worker        /* - */
2378*6236dae4SAndroid Build Coastguard Worker        ipv4res[0] = '\0';
2379*6236dae4SAndroid Build Coastguard Worker        ipv4a[0] = 0xc0;
2380*6236dae4SAndroid Build Coastguard Worker        ipv4a[1] = 0xa8;
2381*6236dae4SAndroid Build Coastguard Worker        ipv4a[2] = 0x64;
2382*6236dae4SAndroid Build Coastguard Worker        ipv4a[3] = 0x01;
2383*6236dae4SAndroid Build Coastguard Worker        ipv4a[4] = 0x01;
2384*6236dae4SAndroid Build Coastguard Worker        /* - */
2385*6236dae4SAndroid Build Coastguard Worker        ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res));
2386*6236dae4SAndroid Build Coastguard Worker        if(!ipv4ptr)
2387*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2388*6236dae4SAndroid Build Coastguard Worker        if(ipv4ptr != ipv4res)
2389*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2390*6236dae4SAndroid Build Coastguard Worker        if(!ipv4ptr[0])
2391*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2392*6236dae4SAndroid Build Coastguard Worker        if(memcmp(ipv4res, "192.168.100.1", 13) != 0)
2393*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2394*6236dae4SAndroid Build Coastguard Worker        /* - */
2395*6236dae4SAndroid Build Coastguard Worker        ipv6res[0] = '\0';
2396*6236dae4SAndroid Build Coastguard Worker        memset(ipv6a, 0, sizeof(ipv6a));
2397*6236dae4SAndroid Build Coastguard Worker        ipv6a[0] = 0xfe;
2398*6236dae4SAndroid Build Coastguard Worker        ipv6a[1] = 0x80;
2399*6236dae4SAndroid Build Coastguard Worker        ipv6a[8] = 0x02;
2400*6236dae4SAndroid Build Coastguard Worker        ipv6a[9] = 0x14;
2401*6236dae4SAndroid Build Coastguard Worker        ipv6a[10] = 0x4f;
2402*6236dae4SAndroid Build Coastguard Worker        ipv6a[11] = 0xff;
2403*6236dae4SAndroid Build Coastguard Worker        ipv6a[12] = 0xfe;
2404*6236dae4SAndroid Build Coastguard Worker        ipv6a[13] = 0x0b;
2405*6236dae4SAndroid Build Coastguard Worker        ipv6a[14] = 0x76;
2406*6236dae4SAndroid Build Coastguard Worker        ipv6a[15] = 0xc8;
2407*6236dae4SAndroid Build Coastguard Worker        ipv6a[25] = 0x01;
2408*6236dae4SAndroid Build Coastguard Worker        /* - */
2409*6236dae4SAndroid Build Coastguard Worker        ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res));
2410*6236dae4SAndroid Build Coastguard Worker        if(!ipv6ptr)
2411*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2412*6236dae4SAndroid Build Coastguard Worker        if(ipv6ptr != ipv6res)
2413*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2414*6236dae4SAndroid Build Coastguard Worker        if(!ipv6ptr[0])
2415*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2416*6236dae4SAndroid Build Coastguard Worker        if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0)
2417*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2418*6236dae4SAndroid Build Coastguard Worker        /* - */
2419*6236dae4SAndroid Build Coastguard Worker        exit(0);
2420*6236dae4SAndroid Build Coastguard Worker      ]])
2421*6236dae4SAndroid Build Coastguard Worker    ],[
2422*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2423*6236dae4SAndroid Build Coastguard Worker      tst_works_inet_ntop="yes"
2424*6236dae4SAndroid Build Coastguard Worker    ],[
2425*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2426*6236dae4SAndroid Build Coastguard Worker      tst_works_inet_ntop="no"
2427*6236dae4SAndroid Build Coastguard Worker    ])
2428*6236dae4SAndroid Build Coastguard Worker  fi
2429*6236dae4SAndroid Build Coastguard Worker  #
2430*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_inet_ntop" = "yes" &&
2431*6236dae4SAndroid Build Coastguard Worker    test "$tst_works_inet_ntop" != "no"; then
2432*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if inet_ntop usage allowed])
2433*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_inet_ntop" != "xyes"; then
2434*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2435*6236dae4SAndroid Build Coastguard Worker      tst_allow_inet_ntop="yes"
2436*6236dae4SAndroid Build Coastguard Worker    else
2437*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2438*6236dae4SAndroid Build Coastguard Worker      tst_allow_inet_ntop="no"
2439*6236dae4SAndroid Build Coastguard Worker    fi
2440*6236dae4SAndroid Build Coastguard Worker  fi
2441*6236dae4SAndroid Build Coastguard Worker  #
2442*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if inet_ntop might be used])
2443*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_inet_ntop" = "yes" &&
2444*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_inet_ntop" = "yes" &&
2445*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_inet_ntop" = "yes" &&
2446*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_inet_ntop" = "yes" &&
2447*6236dae4SAndroid Build Coastguard Worker     test "$tst_works_inet_ntop" != "no"; then
2448*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2449*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_INET_NTOP, 1,
2450*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a IPv6 capable working inet_ntop function.])
2451*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_inet_ntop="yes"
2452*6236dae4SAndroid Build Coastguard Worker  else
2453*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2454*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_inet_ntop="no"
2455*6236dae4SAndroid Build Coastguard Worker  fi
2456*6236dae4SAndroid Build Coastguard Worker])
2457*6236dae4SAndroid Build Coastguard Worker
2458*6236dae4SAndroid Build Coastguard Worker
2459*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_INET_PTON
2460*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2461*6236dae4SAndroid Build Coastguard Workerdnl Verify if inet_pton is available, prototyped, can
2462*6236dae4SAndroid Build Coastguard Workerdnl be compiled and seems to work. If all of these are
2463*6236dae4SAndroid Build Coastguard Workerdnl true, and usage has not been previously disallowed
2464*6236dae4SAndroid Build Coastguard Workerdnl with shell variable curl_disallow_inet_pton, then
2465*6236dae4SAndroid Build Coastguard Workerdnl HAVE_INET_PTON will be defined.
2466*6236dae4SAndroid Build Coastguard Worker
2467*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_INET_PTON], [
2468*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
2469*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_ARPA_INET])dnl
2470*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
2471*6236dae4SAndroid Build Coastguard Worker  #
2472*6236dae4SAndroid Build Coastguard Worker  tst_links_inet_pton="unknown"
2473*6236dae4SAndroid Build Coastguard Worker  tst_proto_inet_pton="unknown"
2474*6236dae4SAndroid Build Coastguard Worker  tst_compi_inet_pton="unknown"
2475*6236dae4SAndroid Build Coastguard Worker  tst_works_inet_pton="unknown"
2476*6236dae4SAndroid Build Coastguard Worker  tst_allow_inet_pton="unknown"
2477*6236dae4SAndroid Build Coastguard Worker  #
2478*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if inet_pton can be linked])
2479*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
2480*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([inet_pton])
2481*6236dae4SAndroid Build Coastguard Worker  ],[
2482*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2483*6236dae4SAndroid Build Coastguard Worker    tst_links_inet_pton="yes"
2484*6236dae4SAndroid Build Coastguard Worker  ],[
2485*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2486*6236dae4SAndroid Build Coastguard Worker    tst_links_inet_pton="no"
2487*6236dae4SAndroid Build Coastguard Worker  ])
2488*6236dae4SAndroid Build Coastguard Worker  #
2489*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_inet_pton" = "yes"; then
2490*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if inet_pton is prototyped])
2491*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([inet_pton],[
2492*6236dae4SAndroid Build Coastguard Worker      $curl_includes_arpa_inet
2493*6236dae4SAndroid Build Coastguard Worker    ],[
2494*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2495*6236dae4SAndroid Build Coastguard Worker      tst_proto_inet_pton="yes"
2496*6236dae4SAndroid Build Coastguard Worker    ],[
2497*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2498*6236dae4SAndroid Build Coastguard Worker      tst_proto_inet_pton="no"
2499*6236dae4SAndroid Build Coastguard Worker    ])
2500*6236dae4SAndroid Build Coastguard Worker  fi
2501*6236dae4SAndroid Build Coastguard Worker  #
2502*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_inet_pton" = "yes"; then
2503*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if inet_pton is compilable])
2504*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2505*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2506*6236dae4SAndroid Build Coastguard Worker        $curl_includes_arpa_inet
2507*6236dae4SAndroid Build Coastguard Worker      ]],[[
2508*6236dae4SAndroid Build Coastguard Worker        if(0 != inet_pton(0, 0, 0))
2509*6236dae4SAndroid Build Coastguard Worker          return 1;
2510*6236dae4SAndroid Build Coastguard Worker      ]])
2511*6236dae4SAndroid Build Coastguard Worker    ],[
2512*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2513*6236dae4SAndroid Build Coastguard Worker      tst_compi_inet_pton="yes"
2514*6236dae4SAndroid Build Coastguard Worker    ],[
2515*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2516*6236dae4SAndroid Build Coastguard Worker      tst_compi_inet_pton="no"
2517*6236dae4SAndroid Build Coastguard Worker    ])
2518*6236dae4SAndroid Build Coastguard Worker  fi
2519*6236dae4SAndroid Build Coastguard Worker  #
2520*6236dae4SAndroid Build Coastguard Worker  dnl only do runtime verification when not cross-compiling
2521*6236dae4SAndroid Build Coastguard Worker  if test "x$cross_compiling" != "xyes" &&
2522*6236dae4SAndroid Build Coastguard Worker    test "$tst_compi_inet_pton" = "yes"; then
2523*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if inet_pton seems to work])
2524*6236dae4SAndroid Build Coastguard Worker    CURL_RUN_IFELSE([
2525*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2526*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stdlib
2527*6236dae4SAndroid Build Coastguard Worker        $curl_includes_arpa_inet
2528*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
2529*6236dae4SAndroid Build Coastguard Worker      ]],[[
2530*6236dae4SAndroid Build Coastguard Worker        unsigned char ipv6a[16+1];
2531*6236dae4SAndroid Build Coastguard Worker        unsigned char ipv4a[4+1];
2532*6236dae4SAndroid Build Coastguard Worker        const char *ipv6src = "fe80::214:4fff:fe0b:76c8";
2533*6236dae4SAndroid Build Coastguard Worker        const char *ipv4src = "192.168.100.1";
2534*6236dae4SAndroid Build Coastguard Worker        /* - */
2535*6236dae4SAndroid Build Coastguard Worker        memset(ipv4a, 1, sizeof(ipv4a));
2536*6236dae4SAndroid Build Coastguard Worker        if(1 != inet_pton(AF_INET, ipv4src, ipv4a))
2537*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2538*6236dae4SAndroid Build Coastguard Worker        /* - */
2539*6236dae4SAndroid Build Coastguard Worker        if( (ipv4a[0] != 0xc0) ||
2540*6236dae4SAndroid Build Coastguard Worker            (ipv4a[1] != 0xa8) ||
2541*6236dae4SAndroid Build Coastguard Worker            (ipv4a[2] != 0x64) ||
2542*6236dae4SAndroid Build Coastguard Worker            (ipv4a[3] != 0x01) ||
2543*6236dae4SAndroid Build Coastguard Worker            (ipv4a[4] != 0x01) )
2544*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2545*6236dae4SAndroid Build Coastguard Worker        /* - */
2546*6236dae4SAndroid Build Coastguard Worker        memset(ipv6a, 1, sizeof(ipv6a));
2547*6236dae4SAndroid Build Coastguard Worker        if(1 != inet_pton(AF_INET6, ipv6src, ipv6a))
2548*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2549*6236dae4SAndroid Build Coastguard Worker        /* - */
2550*6236dae4SAndroid Build Coastguard Worker        if( (ipv6a[0]  != 0xfe) ||
2551*6236dae4SAndroid Build Coastguard Worker            (ipv6a[1]  != 0x80) ||
2552*6236dae4SAndroid Build Coastguard Worker            (ipv6a[8]  != 0x02) ||
2553*6236dae4SAndroid Build Coastguard Worker            (ipv6a[9]  != 0x14) ||
2554*6236dae4SAndroid Build Coastguard Worker            (ipv6a[10] != 0x4f) ||
2555*6236dae4SAndroid Build Coastguard Worker            (ipv6a[11] != 0xff) ||
2556*6236dae4SAndroid Build Coastguard Worker            (ipv6a[12] != 0xfe) ||
2557*6236dae4SAndroid Build Coastguard Worker            (ipv6a[13] != 0x0b) ||
2558*6236dae4SAndroid Build Coastguard Worker            (ipv6a[14] != 0x76) ||
2559*6236dae4SAndroid Build Coastguard Worker            (ipv6a[15] != 0xc8) ||
2560*6236dae4SAndroid Build Coastguard Worker            (ipv6a[16] != 0x01) )
2561*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2562*6236dae4SAndroid Build Coastguard Worker        /* - */
2563*6236dae4SAndroid Build Coastguard Worker        if( (ipv6a[2]  != 0x0) ||
2564*6236dae4SAndroid Build Coastguard Worker            (ipv6a[3]  != 0x0) ||
2565*6236dae4SAndroid Build Coastguard Worker            (ipv6a[4]  != 0x0) ||
2566*6236dae4SAndroid Build Coastguard Worker            (ipv6a[5]  != 0x0) ||
2567*6236dae4SAndroid Build Coastguard Worker            (ipv6a[6]  != 0x0) ||
2568*6236dae4SAndroid Build Coastguard Worker            (ipv6a[7]  != 0x0) )
2569*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
2570*6236dae4SAndroid Build Coastguard Worker        /* - */
2571*6236dae4SAndroid Build Coastguard Worker        exit(0);
2572*6236dae4SAndroid Build Coastguard Worker      ]])
2573*6236dae4SAndroid Build Coastguard Worker    ],[
2574*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2575*6236dae4SAndroid Build Coastguard Worker      tst_works_inet_pton="yes"
2576*6236dae4SAndroid Build Coastguard Worker    ],[
2577*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2578*6236dae4SAndroid Build Coastguard Worker      tst_works_inet_pton="no"
2579*6236dae4SAndroid Build Coastguard Worker    ])
2580*6236dae4SAndroid Build Coastguard Worker  fi
2581*6236dae4SAndroid Build Coastguard Worker  #
2582*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_inet_pton" = "yes" &&
2583*6236dae4SAndroid Build Coastguard Worker    test "$tst_works_inet_pton" != "no"; then
2584*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if inet_pton usage allowed])
2585*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_inet_pton" != "xyes"; then
2586*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2587*6236dae4SAndroid Build Coastguard Worker      tst_allow_inet_pton="yes"
2588*6236dae4SAndroid Build Coastguard Worker    else
2589*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2590*6236dae4SAndroid Build Coastguard Worker      tst_allow_inet_pton="no"
2591*6236dae4SAndroid Build Coastguard Worker    fi
2592*6236dae4SAndroid Build Coastguard Worker  fi
2593*6236dae4SAndroid Build Coastguard Worker  #
2594*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if inet_pton might be used])
2595*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_inet_pton" = "yes" &&
2596*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_inet_pton" = "yes" &&
2597*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_inet_pton" = "yes" &&
2598*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_inet_pton" = "yes" &&
2599*6236dae4SAndroid Build Coastguard Worker     test "$tst_works_inet_pton" != "no"; then
2600*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2601*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_INET_PTON, 1,
2602*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a IPv6 capable working inet_pton function.])
2603*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_inet_pton="yes"
2604*6236dae4SAndroid Build Coastguard Worker  else
2605*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2606*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_inet_pton="no"
2607*6236dae4SAndroid Build Coastguard Worker  fi
2608*6236dae4SAndroid Build Coastguard Worker])
2609*6236dae4SAndroid Build Coastguard Worker
2610*6236dae4SAndroid Build Coastguard Worker
2611*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_IOCTL
2612*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2613*6236dae4SAndroid Build Coastguard Workerdnl Verify if ioctl is available, prototyped, and
2614*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
2615*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
2616*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_ioctl, then
2617*6236dae4SAndroid Build Coastguard Workerdnl HAVE_IOCTL will be defined.
2618*6236dae4SAndroid Build Coastguard Worker
2619*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_IOCTL], [
2620*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
2621*6236dae4SAndroid Build Coastguard Worker  #
2622*6236dae4SAndroid Build Coastguard Worker  tst_links_ioctl="unknown"
2623*6236dae4SAndroid Build Coastguard Worker  tst_proto_ioctl="unknown"
2624*6236dae4SAndroid Build Coastguard Worker  tst_compi_ioctl="unknown"
2625*6236dae4SAndroid Build Coastguard Worker  tst_allow_ioctl="unknown"
2626*6236dae4SAndroid Build Coastguard Worker  #
2627*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ioctl can be linked])
2628*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
2629*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([ioctl])
2630*6236dae4SAndroid Build Coastguard Worker  ],[
2631*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2632*6236dae4SAndroid Build Coastguard Worker    tst_links_ioctl="yes"
2633*6236dae4SAndroid Build Coastguard Worker  ],[
2634*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2635*6236dae4SAndroid Build Coastguard Worker    tst_links_ioctl="no"
2636*6236dae4SAndroid Build Coastguard Worker  ])
2637*6236dae4SAndroid Build Coastguard Worker  #
2638*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_ioctl" = "yes"; then
2639*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctl is prototyped])
2640*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([ioctl],[
2641*6236dae4SAndroid Build Coastguard Worker      $curl_includes_stropts
2642*6236dae4SAndroid Build Coastguard Worker    ],[
2643*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2644*6236dae4SAndroid Build Coastguard Worker      tst_proto_ioctl="yes"
2645*6236dae4SAndroid Build Coastguard Worker    ],[
2646*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2647*6236dae4SAndroid Build Coastguard Worker      tst_proto_ioctl="no"
2648*6236dae4SAndroid Build Coastguard Worker    ])
2649*6236dae4SAndroid Build Coastguard Worker  fi
2650*6236dae4SAndroid Build Coastguard Worker  #
2651*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_ioctl" = "yes"; then
2652*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctl is compilable])
2653*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2654*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2655*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stropts
2656*6236dae4SAndroid Build Coastguard Worker      ]],[[
2657*6236dae4SAndroid Build Coastguard Worker        if(0 != ioctl(0, 0, 0))
2658*6236dae4SAndroid Build Coastguard Worker          return 1;
2659*6236dae4SAndroid Build Coastguard Worker      ]])
2660*6236dae4SAndroid Build Coastguard Worker    ],[
2661*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2662*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctl="yes"
2663*6236dae4SAndroid Build Coastguard Worker    ],[
2664*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2665*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctl="no"
2666*6236dae4SAndroid Build Coastguard Worker    ])
2667*6236dae4SAndroid Build Coastguard Worker  fi
2668*6236dae4SAndroid Build Coastguard Worker  #
2669*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctl" = "yes"; then
2670*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctl usage allowed])
2671*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_ioctl" != "xyes"; then
2672*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2673*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctl="yes"
2674*6236dae4SAndroid Build Coastguard Worker    else
2675*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2676*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctl="no"
2677*6236dae4SAndroid Build Coastguard Worker    fi
2678*6236dae4SAndroid Build Coastguard Worker  fi
2679*6236dae4SAndroid Build Coastguard Worker  #
2680*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ioctl might be used])
2681*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_ioctl" = "yes" &&
2682*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_ioctl" = "yes" &&
2683*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_ioctl" = "yes" &&
2684*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_ioctl" = "yes"; then
2685*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2686*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_IOCTL, 1,
2687*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the ioctl function.])
2688*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctl="yes"
2689*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_FUNC_IOCTL_FIONBIO
2690*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
2691*6236dae4SAndroid Build Coastguard Worker  else
2692*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2693*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctl="no"
2694*6236dae4SAndroid Build Coastguard Worker  fi
2695*6236dae4SAndroid Build Coastguard Worker])
2696*6236dae4SAndroid Build Coastguard Worker
2697*6236dae4SAndroid Build Coastguard Worker
2698*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_IOCTL_FIONBIO
2699*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2700*6236dae4SAndroid Build Coastguard Workerdnl Verify if ioctl with the FIONBIO command is
2701*6236dae4SAndroid Build Coastguard Workerdnl available, can be compiled, and seems to work. If
2702*6236dae4SAndroid Build Coastguard Workerdnl all of these are true, then HAVE_IOCTL_FIONBIO
2703*6236dae4SAndroid Build Coastguard Workerdnl will be defined.
2704*6236dae4SAndroid Build Coastguard Worker
2705*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_IOCTL_FIONBIO], [
2706*6236dae4SAndroid Build Coastguard Worker  #
2707*6236dae4SAndroid Build Coastguard Worker  tst_compi_ioctl_fionbio="unknown"
2708*6236dae4SAndroid Build Coastguard Worker  tst_allow_ioctl_fionbio="unknown"
2709*6236dae4SAndroid Build Coastguard Worker  #
2710*6236dae4SAndroid Build Coastguard Worker  if test "$curl_cv_func_ioctl" = "yes"; then
2711*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctl FIONBIO is compilable])
2712*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2713*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2714*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stropts
2715*6236dae4SAndroid Build Coastguard Worker      ]],[[
2716*6236dae4SAndroid Build Coastguard Worker        int flags = 0;
2717*6236dae4SAndroid Build Coastguard Worker        if(0 != ioctl(0, FIONBIO, &flags))
2718*6236dae4SAndroid Build Coastguard Worker          return 1;
2719*6236dae4SAndroid Build Coastguard Worker      ]])
2720*6236dae4SAndroid Build Coastguard Worker    ],[
2721*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2722*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctl_fionbio="yes"
2723*6236dae4SAndroid Build Coastguard Worker    ],[
2724*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2725*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctl_fionbio="no"
2726*6236dae4SAndroid Build Coastguard Worker    ])
2727*6236dae4SAndroid Build Coastguard Worker  fi
2728*6236dae4SAndroid Build Coastguard Worker  #
2729*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctl_fionbio" = "yes"; then
2730*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctl FIONBIO usage allowed])
2731*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_ioctl_fionbio" != "xyes"; then
2732*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2733*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctl_fionbio="yes"
2734*6236dae4SAndroid Build Coastguard Worker    else
2735*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2736*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctl_fionbio="no"
2737*6236dae4SAndroid Build Coastguard Worker    fi
2738*6236dae4SAndroid Build Coastguard Worker  fi
2739*6236dae4SAndroid Build Coastguard Worker  #
2740*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ioctl FIONBIO might be used])
2741*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctl_fionbio" = "yes" &&
2742*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_ioctl_fionbio" = "yes"; then
2743*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2744*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_IOCTL_FIONBIO, 1,
2745*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a working ioctl FIONBIO function.])
2746*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctl_fionbio="yes"
2747*6236dae4SAndroid Build Coastguard Worker  else
2748*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2749*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctl_fionbio="no"
2750*6236dae4SAndroid Build Coastguard Worker  fi
2751*6236dae4SAndroid Build Coastguard Worker])
2752*6236dae4SAndroid Build Coastguard Worker
2753*6236dae4SAndroid Build Coastguard Worker
2754*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
2755*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2756*6236dae4SAndroid Build Coastguard Workerdnl Verify if ioctl with the SIOCGIFADDR command is available,
2757*6236dae4SAndroid Build Coastguard Workerdnl struct ifreq is defined, they can be compiled, and seem to
2758*6236dae4SAndroid Build Coastguard Workerdnl work. If all of these are true, then HAVE_IOCTL_SIOCGIFADDR
2759*6236dae4SAndroid Build Coastguard Workerdnl will be defined.
2760*6236dae4SAndroid Build Coastguard Worker
2761*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR], [
2762*6236dae4SAndroid Build Coastguard Worker  #
2763*6236dae4SAndroid Build Coastguard Worker  tst_compi_ioctl_siocgifaddr="unknown"
2764*6236dae4SAndroid Build Coastguard Worker  tst_allow_ioctl_siocgifaddr="unknown"
2765*6236dae4SAndroid Build Coastguard Worker  #
2766*6236dae4SAndroid Build Coastguard Worker  if test "$curl_cv_func_ioctl" = "yes"; then
2767*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctl SIOCGIFADDR is compilable])
2768*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2769*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2770*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stropts
2771*6236dae4SAndroid Build Coastguard Worker        #include <net/if.h>
2772*6236dae4SAndroid Build Coastguard Worker      ]],[[
2773*6236dae4SAndroid Build Coastguard Worker        struct ifreq ifr;
2774*6236dae4SAndroid Build Coastguard Worker        if(0 != ioctl(0, SIOCGIFADDR, &ifr))
2775*6236dae4SAndroid Build Coastguard Worker          return 1;
2776*6236dae4SAndroid Build Coastguard Worker      ]])
2777*6236dae4SAndroid Build Coastguard Worker    ],[
2778*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2779*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctl_siocgifaddr="yes"
2780*6236dae4SAndroid Build Coastguard Worker    ],[
2781*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2782*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctl_siocgifaddr="no"
2783*6236dae4SAndroid Build Coastguard Worker    ])
2784*6236dae4SAndroid Build Coastguard Worker  fi
2785*6236dae4SAndroid Build Coastguard Worker  #
2786*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then
2787*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctl SIOCGIFADDR usage allowed])
2788*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_ioctl_siocgifaddr" != "xyes"; then
2789*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2790*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctl_siocgifaddr="yes"
2791*6236dae4SAndroid Build Coastguard Worker    else
2792*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2793*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctl_siocgifaddr="no"
2794*6236dae4SAndroid Build Coastguard Worker    fi
2795*6236dae4SAndroid Build Coastguard Worker  fi
2796*6236dae4SAndroid Build Coastguard Worker  #
2797*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ioctl SIOCGIFADDR might be used])
2798*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctl_siocgifaddr" = "yes" &&
2799*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_ioctl_siocgifaddr" = "yes"; then
2800*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2801*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_IOCTL_SIOCGIFADDR, 1,
2802*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a working ioctl SIOCGIFADDR function.])
2803*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctl_siocgifaddr="yes"
2804*6236dae4SAndroid Build Coastguard Worker  else
2805*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2806*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctl_siocgifaddr="no"
2807*6236dae4SAndroid Build Coastguard Worker  fi
2808*6236dae4SAndroid Build Coastguard Worker])
2809*6236dae4SAndroid Build Coastguard Worker
2810*6236dae4SAndroid Build Coastguard Worker
2811*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_IOCTLSOCKET
2812*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2813*6236dae4SAndroid Build Coastguard Workerdnl Verify if ioctlsocket is available, prototyped, and
2814*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
2815*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
2816*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_ioctlsocket, then
2817*6236dae4SAndroid Build Coastguard Workerdnl HAVE_IOCTLSOCKET will be defined.
2818*6236dae4SAndroid Build Coastguard Worker
2819*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
2820*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
2821*6236dae4SAndroid Build Coastguard Worker  #
2822*6236dae4SAndroid Build Coastguard Worker  tst_links_ioctlsocket="unknown"
2823*6236dae4SAndroid Build Coastguard Worker  tst_proto_ioctlsocket="unknown"
2824*6236dae4SAndroid Build Coastguard Worker  tst_compi_ioctlsocket="unknown"
2825*6236dae4SAndroid Build Coastguard Worker  tst_allow_ioctlsocket="unknown"
2826*6236dae4SAndroid Build Coastguard Worker  #
2827*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ioctlsocket can be linked])
2828*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
2829*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
2830*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
2831*6236dae4SAndroid Build Coastguard Worker    ]],[[
2832*6236dae4SAndroid Build Coastguard Worker      if(0 != ioctlsocket(0, 0, 0))
2833*6236dae4SAndroid Build Coastguard Worker        return 1;
2834*6236dae4SAndroid Build Coastguard Worker    ]])
2835*6236dae4SAndroid Build Coastguard Worker  ],[
2836*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2837*6236dae4SAndroid Build Coastguard Worker    tst_links_ioctlsocket="yes"
2838*6236dae4SAndroid Build Coastguard Worker  ],[
2839*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2840*6236dae4SAndroid Build Coastguard Worker    tst_links_ioctlsocket="no"
2841*6236dae4SAndroid Build Coastguard Worker  ])
2842*6236dae4SAndroid Build Coastguard Worker  #
2843*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_ioctlsocket" = "yes"; then
2844*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctlsocket is prototyped])
2845*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([ioctlsocket],[
2846*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
2847*6236dae4SAndroid Build Coastguard Worker    ],[
2848*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2849*6236dae4SAndroid Build Coastguard Worker      tst_proto_ioctlsocket="yes"
2850*6236dae4SAndroid Build Coastguard Worker    ],[
2851*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2852*6236dae4SAndroid Build Coastguard Worker      tst_proto_ioctlsocket="no"
2853*6236dae4SAndroid Build Coastguard Worker    ])
2854*6236dae4SAndroid Build Coastguard Worker  fi
2855*6236dae4SAndroid Build Coastguard Worker  #
2856*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_ioctlsocket" = "yes"; then
2857*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctlsocket is compilable])
2858*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2859*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2860*6236dae4SAndroid Build Coastguard Worker        $curl_includes_winsock2
2861*6236dae4SAndroid Build Coastguard Worker      ]],[[
2862*6236dae4SAndroid Build Coastguard Worker        if(0 != ioctlsocket(0, 0, 0))
2863*6236dae4SAndroid Build Coastguard Worker          return 1;
2864*6236dae4SAndroid Build Coastguard Worker      ]])
2865*6236dae4SAndroid Build Coastguard Worker    ],[
2866*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2867*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctlsocket="yes"
2868*6236dae4SAndroid Build Coastguard Worker    ],[
2869*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2870*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctlsocket="no"
2871*6236dae4SAndroid Build Coastguard Worker    ])
2872*6236dae4SAndroid Build Coastguard Worker  fi
2873*6236dae4SAndroid Build Coastguard Worker  #
2874*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctlsocket" = "yes"; then
2875*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctlsocket usage allowed])
2876*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_ioctlsocket" != "xyes"; then
2877*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2878*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctlsocket="yes"
2879*6236dae4SAndroid Build Coastguard Worker    else
2880*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2881*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctlsocket="no"
2882*6236dae4SAndroid Build Coastguard Worker    fi
2883*6236dae4SAndroid Build Coastguard Worker  fi
2884*6236dae4SAndroid Build Coastguard Worker  #
2885*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ioctlsocket might be used])
2886*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_ioctlsocket" = "yes" &&
2887*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_ioctlsocket" = "yes" &&
2888*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_ioctlsocket" = "yes" &&
2889*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_ioctlsocket" = "yes"; then
2890*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2891*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET, 1,
2892*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the ioctlsocket function.])
2893*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctlsocket="yes"
2894*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO
2895*6236dae4SAndroid Build Coastguard Worker  else
2896*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2897*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctlsocket="no"
2898*6236dae4SAndroid Build Coastguard Worker  fi
2899*6236dae4SAndroid Build Coastguard Worker])
2900*6236dae4SAndroid Build Coastguard Worker
2901*6236dae4SAndroid Build Coastguard Worker
2902*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO
2903*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2904*6236dae4SAndroid Build Coastguard Workerdnl Verify if ioctlsocket with the FIONBIO command is
2905*6236dae4SAndroid Build Coastguard Workerdnl available, can be compiled, and seems to work. If
2906*6236dae4SAndroid Build Coastguard Workerdnl all of these are true, then HAVE_IOCTLSOCKET_FIONBIO
2907*6236dae4SAndroid Build Coastguard Workerdnl will be defined.
2908*6236dae4SAndroid Build Coastguard Worker
2909*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO], [
2910*6236dae4SAndroid Build Coastguard Worker  #
2911*6236dae4SAndroid Build Coastguard Worker  tst_compi_ioctlsocket_fionbio="unknown"
2912*6236dae4SAndroid Build Coastguard Worker  tst_allow_ioctlsocket_fionbio="unknown"
2913*6236dae4SAndroid Build Coastguard Worker  #
2914*6236dae4SAndroid Build Coastguard Worker  if test "$curl_cv_func_ioctlsocket" = "yes"; then
2915*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctlsocket FIONBIO is compilable])
2916*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
2917*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
2918*6236dae4SAndroid Build Coastguard Worker        $curl_includes_winsock2
2919*6236dae4SAndroid Build Coastguard Worker      ]],[[
2920*6236dae4SAndroid Build Coastguard Worker        unsigned long flags = 0;
2921*6236dae4SAndroid Build Coastguard Worker        if(0 != ioctlsocket(0, FIONBIO, &flags))
2922*6236dae4SAndroid Build Coastguard Worker          return 1;
2923*6236dae4SAndroid Build Coastguard Worker      ]])
2924*6236dae4SAndroid Build Coastguard Worker    ],[
2925*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2926*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctlsocket_fionbio="yes"
2927*6236dae4SAndroid Build Coastguard Worker    ],[
2928*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2929*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctlsocket_fionbio="no"
2930*6236dae4SAndroid Build Coastguard Worker    ])
2931*6236dae4SAndroid Build Coastguard Worker  fi
2932*6236dae4SAndroid Build Coastguard Worker  #
2933*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctlsocket_fionbio" = "yes"; then
2934*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if ioctlsocket FIONBIO usage allowed])
2935*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_ioctlsocket_fionbio" != "xyes"; then
2936*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2937*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctlsocket_fionbio="yes"
2938*6236dae4SAndroid Build Coastguard Worker    else
2939*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2940*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctlsocket_fionbio="no"
2941*6236dae4SAndroid Build Coastguard Worker    fi
2942*6236dae4SAndroid Build Coastguard Worker  fi
2943*6236dae4SAndroid Build Coastguard Worker  #
2944*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if ioctlsocket FIONBIO might be used])
2945*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctlsocket_fionbio" = "yes" &&
2946*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_ioctlsocket_fionbio" = "yes"; then
2947*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2948*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_FIONBIO, 1,
2949*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a working ioctlsocket FIONBIO function.])
2950*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctlsocket_fionbio="yes"
2951*6236dae4SAndroid Build Coastguard Worker  else
2952*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2953*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctlsocket_fionbio="no"
2954*6236dae4SAndroid Build Coastguard Worker  fi
2955*6236dae4SAndroid Build Coastguard Worker])
2956*6236dae4SAndroid Build Coastguard Worker
2957*6236dae4SAndroid Build Coastguard Worker
2958*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
2959*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
2960*6236dae4SAndroid Build Coastguard Workerdnl Verify if IoctlSocket is available, prototyped, and
2961*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
2962*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
2963*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_ioctlsocket_camel,
2964*6236dae4SAndroid Build Coastguard Workerdnl then HAVE_IOCTLSOCKET_CAMEL will be defined.
2965*6236dae4SAndroid Build Coastguard Worker
2966*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
2967*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
2968*6236dae4SAndroid Build Coastguard Worker  #
2969*6236dae4SAndroid Build Coastguard Worker  tst_links_ioctlsocket_camel="unknown"
2970*6236dae4SAndroid Build Coastguard Worker  tst_proto_ioctlsocket_camel="unknown"
2971*6236dae4SAndroid Build Coastguard Worker  tst_compi_ioctlsocket_camel="unknown"
2972*6236dae4SAndroid Build Coastguard Worker  tst_allow_ioctlsocket_camel="unknown"
2973*6236dae4SAndroid Build Coastguard Worker  #
2974*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if IoctlSocket can be linked])
2975*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
2976*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
2977*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
2978*6236dae4SAndroid Build Coastguard Worker    ]],[[
2979*6236dae4SAndroid Build Coastguard Worker      IoctlSocket(0, 0, 0);
2980*6236dae4SAndroid Build Coastguard Worker    ]])
2981*6236dae4SAndroid Build Coastguard Worker  ],[
2982*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
2983*6236dae4SAndroid Build Coastguard Worker    tst_links_ioctlsocket_camel="yes"
2984*6236dae4SAndroid Build Coastguard Worker  ],[
2985*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
2986*6236dae4SAndroid Build Coastguard Worker    tst_links_ioctlsocket_camel="no"
2987*6236dae4SAndroid Build Coastguard Worker  ])
2988*6236dae4SAndroid Build Coastguard Worker  #
2989*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_ioctlsocket_camel" = "yes"; then
2990*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if IoctlSocket is prototyped])
2991*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([IoctlSocket],[
2992*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
2993*6236dae4SAndroid Build Coastguard Worker    ],[
2994*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
2995*6236dae4SAndroid Build Coastguard Worker      tst_proto_ioctlsocket_camel="yes"
2996*6236dae4SAndroid Build Coastguard Worker    ],[
2997*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
2998*6236dae4SAndroid Build Coastguard Worker      tst_proto_ioctlsocket_camel="no"
2999*6236dae4SAndroid Build Coastguard Worker    ])
3000*6236dae4SAndroid Build Coastguard Worker  fi
3001*6236dae4SAndroid Build Coastguard Worker  #
3002*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_ioctlsocket_camel" = "yes"; then
3003*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if IoctlSocket is compilable])
3004*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3005*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3006*6236dae4SAndroid Build Coastguard Worker        $curl_includes_bsdsocket
3007*6236dae4SAndroid Build Coastguard Worker      ]],[[
3008*6236dae4SAndroid Build Coastguard Worker        if(0 != IoctlSocket(0, 0, 0))
3009*6236dae4SAndroid Build Coastguard Worker          return 1;
3010*6236dae4SAndroid Build Coastguard Worker      ]])
3011*6236dae4SAndroid Build Coastguard Worker    ],[
3012*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3013*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctlsocket_camel="yes"
3014*6236dae4SAndroid Build Coastguard Worker    ],[
3015*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3016*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctlsocket_camel="no"
3017*6236dae4SAndroid Build Coastguard Worker    ])
3018*6236dae4SAndroid Build Coastguard Worker  fi
3019*6236dae4SAndroid Build Coastguard Worker  #
3020*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctlsocket_camel" = "yes"; then
3021*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if IoctlSocket usage allowed])
3022*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_ioctlsocket_camel" != "xyes"; then
3023*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3024*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctlsocket_camel="yes"
3025*6236dae4SAndroid Build Coastguard Worker    else
3026*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3027*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctlsocket_camel="no"
3028*6236dae4SAndroid Build Coastguard Worker    fi
3029*6236dae4SAndroid Build Coastguard Worker  fi
3030*6236dae4SAndroid Build Coastguard Worker  #
3031*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if IoctlSocket might be used])
3032*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_ioctlsocket_camel" = "yes" &&
3033*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_ioctlsocket_camel" = "yes" &&
3034*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_ioctlsocket_camel" = "yes" &&
3035*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_ioctlsocket_camel" = "yes"; then
3036*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3037*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_CAMEL, 1,
3038*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the IoctlSocket camel case function.])
3039*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctlsocket_camel="yes"
3040*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO
3041*6236dae4SAndroid Build Coastguard Worker  else
3042*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3043*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctlsocket_camel="no"
3044*6236dae4SAndroid Build Coastguard Worker  fi
3045*6236dae4SAndroid Build Coastguard Worker])
3046*6236dae4SAndroid Build Coastguard Worker
3047*6236dae4SAndroid Build Coastguard Worker
3048*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO
3049*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3050*6236dae4SAndroid Build Coastguard Workerdnl Verify if IoctlSocket with FIONBIO command is available,
3051*6236dae4SAndroid Build Coastguard Workerdnl can be compiled, and seems to work. If all of these are
3052*6236dae4SAndroid Build Coastguard Workerdnl true, then HAVE_IOCTLSOCKET_CAMEL_FIONBIO will be defined.
3053*6236dae4SAndroid Build Coastguard Worker
3054*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [
3055*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
3056*6236dae4SAndroid Build Coastguard Worker  #
3057*6236dae4SAndroid Build Coastguard Worker  tst_compi_ioctlsocket_camel_fionbio="unknown"
3058*6236dae4SAndroid Build Coastguard Worker  tst_allow_ioctlsocket_camel_fionbio="unknown"
3059*6236dae4SAndroid Build Coastguard Worker  #
3060*6236dae4SAndroid Build Coastguard Worker  if test "$curl_cv_func_ioctlsocket_camel" = "yes"; then
3061*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if IoctlSocket FIONBIO is compilable])
3062*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3063*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3064*6236dae4SAndroid Build Coastguard Worker        $curl_includes_bsdsocket
3065*6236dae4SAndroid Build Coastguard Worker      ]],[[
3066*6236dae4SAndroid Build Coastguard Worker        long flags = 0;
3067*6236dae4SAndroid Build Coastguard Worker        if(0 != IoctlSocket(0, FIONBIO, &flags))
3068*6236dae4SAndroid Build Coastguard Worker          return 1;
3069*6236dae4SAndroid Build Coastguard Worker      ]])
3070*6236dae4SAndroid Build Coastguard Worker    ],[
3071*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3072*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctlsocket_camel_fionbio="yes"
3073*6236dae4SAndroid Build Coastguard Worker    ],[
3074*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3075*6236dae4SAndroid Build Coastguard Worker      tst_compi_ioctlsocket_camel_fionbio="no"
3076*6236dae4SAndroid Build Coastguard Worker    ])
3077*6236dae4SAndroid Build Coastguard Worker  fi
3078*6236dae4SAndroid Build Coastguard Worker  #
3079*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes"; then
3080*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if IoctlSocket FIONBIO usage allowed])
3081*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_ioctlsocket_camel_fionbio" != "xyes"; then
3082*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3083*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctlsocket_camel_fionbio="yes"
3084*6236dae4SAndroid Build Coastguard Worker    else
3085*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3086*6236dae4SAndroid Build Coastguard Worker      tst_allow_ioctlsocket_camel_fionbio="no"
3087*6236dae4SAndroid Build Coastguard Worker    fi
3088*6236dae4SAndroid Build Coastguard Worker  fi
3089*6236dae4SAndroid Build Coastguard Worker  #
3090*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if IoctlSocket FIONBIO might be used])
3091*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes" &&
3092*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_ioctlsocket_camel_fionbio" = "yes"; then
3093*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3094*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_CAMEL_FIONBIO, 1,
3095*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have a working IoctlSocket camel case FIONBIO function.])
3096*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctlsocket_camel_fionbio="yes"
3097*6236dae4SAndroid Build Coastguard Worker  else
3098*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3099*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_ioctlsocket_camel_fionbio="no"
3100*6236dae4SAndroid Build Coastguard Worker  fi
3101*6236dae4SAndroid Build Coastguard Worker])
3102*6236dae4SAndroid Build Coastguard Worker
3103*6236dae4SAndroid Build Coastguard Worker
3104*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_MEMRCHR
3105*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3106*6236dae4SAndroid Build Coastguard Workerdnl Verify if memrchr is available, prototyped, and
3107*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3108*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3109*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_memrchr, then
3110*6236dae4SAndroid Build Coastguard Workerdnl HAVE_MEMRCHR will be defined.
3111*6236dae4SAndroid Build Coastguard Worker
3112*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_MEMRCHR], [
3113*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
3114*6236dae4SAndroid Build Coastguard Worker  #
3115*6236dae4SAndroid Build Coastguard Worker  tst_links_memrchr="unknown"
3116*6236dae4SAndroid Build Coastguard Worker  tst_macro_memrchr="unknown"
3117*6236dae4SAndroid Build Coastguard Worker  tst_proto_memrchr="unknown"
3118*6236dae4SAndroid Build Coastguard Worker  tst_compi_memrchr="unknown"
3119*6236dae4SAndroid Build Coastguard Worker  tst_allow_memrchr="unknown"
3120*6236dae4SAndroid Build Coastguard Worker  #
3121*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if memrchr can be linked])
3122*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3123*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([memrchr])
3124*6236dae4SAndroid Build Coastguard Worker  ],[
3125*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3126*6236dae4SAndroid Build Coastguard Worker    tst_links_memrchr="yes"
3127*6236dae4SAndroid Build Coastguard Worker  ],[
3128*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3129*6236dae4SAndroid Build Coastguard Worker    tst_links_memrchr="no"
3130*6236dae4SAndroid Build Coastguard Worker  ])
3131*6236dae4SAndroid Build Coastguard Worker  #
3132*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_memrchr" = "no"; then
3133*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if memrchr seems a macro])
3134*6236dae4SAndroid Build Coastguard Worker    AC_LINK_IFELSE([
3135*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3136*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
3137*6236dae4SAndroid Build Coastguard Worker      ]],[[
3138*6236dae4SAndroid Build Coastguard Worker        if(0 != memrchr(0, 0, 0))
3139*6236dae4SAndroid Build Coastguard Worker          return 1;
3140*6236dae4SAndroid Build Coastguard Worker      ]])
3141*6236dae4SAndroid Build Coastguard Worker    ],[
3142*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3143*6236dae4SAndroid Build Coastguard Worker      tst_macro_memrchr="yes"
3144*6236dae4SAndroid Build Coastguard Worker    ],[
3145*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3146*6236dae4SAndroid Build Coastguard Worker      tst_macro_memrchr="no"
3147*6236dae4SAndroid Build Coastguard Worker    ])
3148*6236dae4SAndroid Build Coastguard Worker  fi
3149*6236dae4SAndroid Build Coastguard Worker  #
3150*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_memrchr" = "yes"; then
3151*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if memrchr is prototyped])
3152*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([memrchr],[
3153*6236dae4SAndroid Build Coastguard Worker      $curl_includes_string
3154*6236dae4SAndroid Build Coastguard Worker    ],[
3155*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3156*6236dae4SAndroid Build Coastguard Worker      tst_proto_memrchr="yes"
3157*6236dae4SAndroid Build Coastguard Worker    ],[
3158*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3159*6236dae4SAndroid Build Coastguard Worker      tst_proto_memrchr="no"
3160*6236dae4SAndroid Build Coastguard Worker    ])
3161*6236dae4SAndroid Build Coastguard Worker  fi
3162*6236dae4SAndroid Build Coastguard Worker  #
3163*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_memrchr" = "yes" ||
3164*6236dae4SAndroid Build Coastguard Worker     test "$tst_macro_memrchr" = "yes"; then
3165*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if memrchr is compilable])
3166*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3167*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3168*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
3169*6236dae4SAndroid Build Coastguard Worker      ]],[[
3170*6236dae4SAndroid Build Coastguard Worker        if(0 != memrchr(0, 0, 0))
3171*6236dae4SAndroid Build Coastguard Worker          return 1;
3172*6236dae4SAndroid Build Coastguard Worker      ]])
3173*6236dae4SAndroid Build Coastguard Worker    ],[
3174*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3175*6236dae4SAndroid Build Coastguard Worker      tst_compi_memrchr="yes"
3176*6236dae4SAndroid Build Coastguard Worker    ],[
3177*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3178*6236dae4SAndroid Build Coastguard Worker      tst_compi_memrchr="no"
3179*6236dae4SAndroid Build Coastguard Worker    ])
3180*6236dae4SAndroid Build Coastguard Worker  fi
3181*6236dae4SAndroid Build Coastguard Worker  #
3182*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_memrchr" = "yes"; then
3183*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if memrchr usage allowed])
3184*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_memrchr" != "xyes"; then
3185*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3186*6236dae4SAndroid Build Coastguard Worker      tst_allow_memrchr="yes"
3187*6236dae4SAndroid Build Coastguard Worker    else
3188*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3189*6236dae4SAndroid Build Coastguard Worker      tst_allow_memrchr="no"
3190*6236dae4SAndroid Build Coastguard Worker    fi
3191*6236dae4SAndroid Build Coastguard Worker  fi
3192*6236dae4SAndroid Build Coastguard Worker  #
3193*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if memrchr might be used])
3194*6236dae4SAndroid Build Coastguard Worker  if (test "$tst_proto_memrchr" = "yes" ||
3195*6236dae4SAndroid Build Coastguard Worker      test "$tst_macro_memrchr" = "yes") &&
3196*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_memrchr" = "yes" &&
3197*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_memrchr" = "yes"; then
3198*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3199*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_MEMRCHR, 1,
3200*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the memrchr function or macro.])
3201*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_memrchr="yes"
3202*6236dae4SAndroid Build Coastguard Worker  else
3203*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3204*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_memrchr="no"
3205*6236dae4SAndroid Build Coastguard Worker  fi
3206*6236dae4SAndroid Build Coastguard Worker])
3207*6236dae4SAndroid Build Coastguard Worker
3208*6236dae4SAndroid Build Coastguard Worker
3209*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_SIGACTION
3210*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3211*6236dae4SAndroid Build Coastguard Workerdnl Verify if sigaction is available, prototyped, and
3212*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3213*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3214*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_sigaction, then
3215*6236dae4SAndroid Build Coastguard Workerdnl HAVE_SIGACTION will be defined.
3216*6236dae4SAndroid Build Coastguard Worker
3217*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_SIGACTION], [
3218*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SIGNAL])dnl
3219*6236dae4SAndroid Build Coastguard Worker  #
3220*6236dae4SAndroid Build Coastguard Worker  tst_links_sigaction="unknown"
3221*6236dae4SAndroid Build Coastguard Worker  tst_proto_sigaction="unknown"
3222*6236dae4SAndroid Build Coastguard Worker  tst_compi_sigaction="unknown"
3223*6236dae4SAndroid Build Coastguard Worker  tst_allow_sigaction="unknown"
3224*6236dae4SAndroid Build Coastguard Worker  #
3225*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if sigaction can be linked])
3226*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3227*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([sigaction])
3228*6236dae4SAndroid Build Coastguard Worker  ],[
3229*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3230*6236dae4SAndroid Build Coastguard Worker    tst_links_sigaction="yes"
3231*6236dae4SAndroid Build Coastguard Worker  ],[
3232*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3233*6236dae4SAndroid Build Coastguard Worker    tst_links_sigaction="no"
3234*6236dae4SAndroid Build Coastguard Worker  ])
3235*6236dae4SAndroid Build Coastguard Worker  #
3236*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_sigaction" = "yes"; then
3237*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if sigaction is prototyped])
3238*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([sigaction],[
3239*6236dae4SAndroid Build Coastguard Worker      $curl_includes_signal
3240*6236dae4SAndroid Build Coastguard Worker    ],[
3241*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3242*6236dae4SAndroid Build Coastguard Worker      tst_proto_sigaction="yes"
3243*6236dae4SAndroid Build Coastguard Worker    ],[
3244*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3245*6236dae4SAndroid Build Coastguard Worker      tst_proto_sigaction="no"
3246*6236dae4SAndroid Build Coastguard Worker    ])
3247*6236dae4SAndroid Build Coastguard Worker  fi
3248*6236dae4SAndroid Build Coastguard Worker  #
3249*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_sigaction" = "yes"; then
3250*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if sigaction is compilable])
3251*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3252*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3253*6236dae4SAndroid Build Coastguard Worker        $curl_includes_signal
3254*6236dae4SAndroid Build Coastguard Worker      ]],[[
3255*6236dae4SAndroid Build Coastguard Worker        if(0 != sigaction(0, 0, 0))
3256*6236dae4SAndroid Build Coastguard Worker          return 1;
3257*6236dae4SAndroid Build Coastguard Worker      ]])
3258*6236dae4SAndroid Build Coastguard Worker    ],[
3259*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3260*6236dae4SAndroid Build Coastguard Worker      tst_compi_sigaction="yes"
3261*6236dae4SAndroid Build Coastguard Worker    ],[
3262*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3263*6236dae4SAndroid Build Coastguard Worker      tst_compi_sigaction="no"
3264*6236dae4SAndroid Build Coastguard Worker    ])
3265*6236dae4SAndroid Build Coastguard Worker  fi
3266*6236dae4SAndroid Build Coastguard Worker  #
3267*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_sigaction" = "yes"; then
3268*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if sigaction usage allowed])
3269*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_sigaction" != "xyes"; then
3270*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3271*6236dae4SAndroid Build Coastguard Worker      tst_allow_sigaction="yes"
3272*6236dae4SAndroid Build Coastguard Worker    else
3273*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3274*6236dae4SAndroid Build Coastguard Worker      tst_allow_sigaction="no"
3275*6236dae4SAndroid Build Coastguard Worker    fi
3276*6236dae4SAndroid Build Coastguard Worker  fi
3277*6236dae4SAndroid Build Coastguard Worker  #
3278*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if sigaction might be used])
3279*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_sigaction" = "yes" &&
3280*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_sigaction" = "yes" &&
3281*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_sigaction" = "yes" &&
3282*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_sigaction" = "yes"; then
3283*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3284*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_SIGACTION, 1,
3285*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the sigaction function.])
3286*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_sigaction="yes"
3287*6236dae4SAndroid Build Coastguard Worker  else
3288*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3289*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_sigaction="no"
3290*6236dae4SAndroid Build Coastguard Worker  fi
3291*6236dae4SAndroid Build Coastguard Worker])
3292*6236dae4SAndroid Build Coastguard Worker
3293*6236dae4SAndroid Build Coastguard Worker
3294*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_SIGINTERRUPT
3295*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3296*6236dae4SAndroid Build Coastguard Workerdnl Verify if siginterrupt is available, prototyped, and
3297*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3298*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3299*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_siginterrupt, then
3300*6236dae4SAndroid Build Coastguard Workerdnl HAVE_SIGINTERRUPT will be defined.
3301*6236dae4SAndroid Build Coastguard Worker
3302*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_SIGINTERRUPT], [
3303*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SIGNAL])dnl
3304*6236dae4SAndroid Build Coastguard Worker  #
3305*6236dae4SAndroid Build Coastguard Worker  tst_links_siginterrupt="unknown"
3306*6236dae4SAndroid Build Coastguard Worker  tst_proto_siginterrupt="unknown"
3307*6236dae4SAndroid Build Coastguard Worker  tst_compi_siginterrupt="unknown"
3308*6236dae4SAndroid Build Coastguard Worker  tst_allow_siginterrupt="unknown"
3309*6236dae4SAndroid Build Coastguard Worker  #
3310*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if siginterrupt can be linked])
3311*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3312*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([siginterrupt])
3313*6236dae4SAndroid Build Coastguard Worker  ],[
3314*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3315*6236dae4SAndroid Build Coastguard Worker    tst_links_siginterrupt="yes"
3316*6236dae4SAndroid Build Coastguard Worker  ],[
3317*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3318*6236dae4SAndroid Build Coastguard Worker    tst_links_siginterrupt="no"
3319*6236dae4SAndroid Build Coastguard Worker  ])
3320*6236dae4SAndroid Build Coastguard Worker  #
3321*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_siginterrupt" = "yes"; then
3322*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if siginterrupt is prototyped])
3323*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([siginterrupt],[
3324*6236dae4SAndroid Build Coastguard Worker      $curl_includes_signal
3325*6236dae4SAndroid Build Coastguard Worker    ],[
3326*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3327*6236dae4SAndroid Build Coastguard Worker      tst_proto_siginterrupt="yes"
3328*6236dae4SAndroid Build Coastguard Worker    ],[
3329*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3330*6236dae4SAndroid Build Coastguard Worker      tst_proto_siginterrupt="no"
3331*6236dae4SAndroid Build Coastguard Worker    ])
3332*6236dae4SAndroid Build Coastguard Worker  fi
3333*6236dae4SAndroid Build Coastguard Worker  #
3334*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_siginterrupt" = "yes"; then
3335*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if siginterrupt is compilable])
3336*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3337*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3338*6236dae4SAndroid Build Coastguard Worker        $curl_includes_signal
3339*6236dae4SAndroid Build Coastguard Worker      ]],[[
3340*6236dae4SAndroid Build Coastguard Worker        if(0 != siginterrupt(0, 0))
3341*6236dae4SAndroid Build Coastguard Worker          return 1;
3342*6236dae4SAndroid Build Coastguard Worker      ]])
3343*6236dae4SAndroid Build Coastguard Worker    ],[
3344*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3345*6236dae4SAndroid Build Coastguard Worker      tst_compi_siginterrupt="yes"
3346*6236dae4SAndroid Build Coastguard Worker    ],[
3347*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3348*6236dae4SAndroid Build Coastguard Worker      tst_compi_siginterrupt="no"
3349*6236dae4SAndroid Build Coastguard Worker    ])
3350*6236dae4SAndroid Build Coastguard Worker  fi
3351*6236dae4SAndroid Build Coastguard Worker  #
3352*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_siginterrupt" = "yes"; then
3353*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if siginterrupt usage allowed])
3354*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_siginterrupt" != "xyes"; then
3355*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3356*6236dae4SAndroid Build Coastguard Worker      tst_allow_siginterrupt="yes"
3357*6236dae4SAndroid Build Coastguard Worker    else
3358*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3359*6236dae4SAndroid Build Coastguard Worker      tst_allow_siginterrupt="no"
3360*6236dae4SAndroid Build Coastguard Worker    fi
3361*6236dae4SAndroid Build Coastguard Worker  fi
3362*6236dae4SAndroid Build Coastguard Worker  #
3363*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if siginterrupt might be used])
3364*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_siginterrupt" = "yes" &&
3365*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_siginterrupt" = "yes" &&
3366*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_siginterrupt" = "yes" &&
3367*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_siginterrupt" = "yes"; then
3368*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3369*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_SIGINTERRUPT, 1,
3370*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the siginterrupt function.])
3371*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_siginterrupt="yes"
3372*6236dae4SAndroid Build Coastguard Worker  else
3373*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3374*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_siginterrupt="no"
3375*6236dae4SAndroid Build Coastguard Worker  fi
3376*6236dae4SAndroid Build Coastguard Worker])
3377*6236dae4SAndroid Build Coastguard Worker
3378*6236dae4SAndroid Build Coastguard Worker
3379*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_SIGNAL
3380*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3381*6236dae4SAndroid Build Coastguard Workerdnl Verify if signal is available, prototyped, and
3382*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3383*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3384*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_signal, then
3385*6236dae4SAndroid Build Coastguard Workerdnl HAVE_SIGNAL will be defined.
3386*6236dae4SAndroid Build Coastguard Worker
3387*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_SIGNAL], [
3388*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SIGNAL])dnl
3389*6236dae4SAndroid Build Coastguard Worker  #
3390*6236dae4SAndroid Build Coastguard Worker  tst_links_signal="unknown"
3391*6236dae4SAndroid Build Coastguard Worker  tst_proto_signal="unknown"
3392*6236dae4SAndroid Build Coastguard Worker  tst_compi_signal="unknown"
3393*6236dae4SAndroid Build Coastguard Worker  tst_allow_signal="unknown"
3394*6236dae4SAndroid Build Coastguard Worker  #
3395*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if signal can be linked])
3396*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3397*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([signal])
3398*6236dae4SAndroid Build Coastguard Worker  ],[
3399*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3400*6236dae4SAndroid Build Coastguard Worker    tst_links_signal="yes"
3401*6236dae4SAndroid Build Coastguard Worker  ],[
3402*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3403*6236dae4SAndroid Build Coastguard Worker    tst_links_signal="no"
3404*6236dae4SAndroid Build Coastguard Worker  ])
3405*6236dae4SAndroid Build Coastguard Worker  #
3406*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_signal" = "yes"; then
3407*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if signal is prototyped])
3408*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([signal],[
3409*6236dae4SAndroid Build Coastguard Worker      $curl_includes_signal
3410*6236dae4SAndroid Build Coastguard Worker    ],[
3411*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3412*6236dae4SAndroid Build Coastguard Worker      tst_proto_signal="yes"
3413*6236dae4SAndroid Build Coastguard Worker    ],[
3414*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3415*6236dae4SAndroid Build Coastguard Worker      tst_proto_signal="no"
3416*6236dae4SAndroid Build Coastguard Worker    ])
3417*6236dae4SAndroid Build Coastguard Worker  fi
3418*6236dae4SAndroid Build Coastguard Worker  #
3419*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_signal" = "yes"; then
3420*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if signal is compilable])
3421*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3422*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3423*6236dae4SAndroid Build Coastguard Worker        $curl_includes_signal
3424*6236dae4SAndroid Build Coastguard Worker      ]],[[
3425*6236dae4SAndroid Build Coastguard Worker        if(0 != signal(0, 0))
3426*6236dae4SAndroid Build Coastguard Worker          return 1;
3427*6236dae4SAndroid Build Coastguard Worker      ]])
3428*6236dae4SAndroid Build Coastguard Worker    ],[
3429*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3430*6236dae4SAndroid Build Coastguard Worker      tst_compi_signal="yes"
3431*6236dae4SAndroid Build Coastguard Worker    ],[
3432*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3433*6236dae4SAndroid Build Coastguard Worker      tst_compi_signal="no"
3434*6236dae4SAndroid Build Coastguard Worker    ])
3435*6236dae4SAndroid Build Coastguard Worker  fi
3436*6236dae4SAndroid Build Coastguard Worker  #
3437*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_signal" = "yes"; then
3438*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if signal usage allowed])
3439*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_signal" != "xyes"; then
3440*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3441*6236dae4SAndroid Build Coastguard Worker      tst_allow_signal="yes"
3442*6236dae4SAndroid Build Coastguard Worker    else
3443*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3444*6236dae4SAndroid Build Coastguard Worker      tst_allow_signal="no"
3445*6236dae4SAndroid Build Coastguard Worker    fi
3446*6236dae4SAndroid Build Coastguard Worker  fi
3447*6236dae4SAndroid Build Coastguard Worker  #
3448*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if signal might be used])
3449*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_signal" = "yes" &&
3450*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_signal" = "yes" &&
3451*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_signal" = "yes" &&
3452*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_signal" = "yes"; then
3453*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3454*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_SIGNAL, 1,
3455*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the signal function.])
3456*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_signal="yes"
3457*6236dae4SAndroid Build Coastguard Worker  else
3458*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3459*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_signal="no"
3460*6236dae4SAndroid Build Coastguard Worker  fi
3461*6236dae4SAndroid Build Coastguard Worker])
3462*6236dae4SAndroid Build Coastguard Worker
3463*6236dae4SAndroid Build Coastguard Worker
3464*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_SIGSETJMP
3465*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3466*6236dae4SAndroid Build Coastguard Workerdnl Verify if sigsetjmp is available, prototyped, and
3467*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3468*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3469*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_sigsetjmp, then
3470*6236dae4SAndroid Build Coastguard Workerdnl HAVE_SIGSETJMP will be defined.
3471*6236dae4SAndroid Build Coastguard Worker
3472*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_SIGSETJMP], [
3473*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SETJMP])dnl
3474*6236dae4SAndroid Build Coastguard Worker  #
3475*6236dae4SAndroid Build Coastguard Worker  tst_links_sigsetjmp="unknown"
3476*6236dae4SAndroid Build Coastguard Worker  tst_macro_sigsetjmp="unknown"
3477*6236dae4SAndroid Build Coastguard Worker  tst_proto_sigsetjmp="unknown"
3478*6236dae4SAndroid Build Coastguard Worker  tst_compi_sigsetjmp="unknown"
3479*6236dae4SAndroid Build Coastguard Worker  tst_allow_sigsetjmp="unknown"
3480*6236dae4SAndroid Build Coastguard Worker  #
3481*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if sigsetjmp can be linked])
3482*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3483*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([sigsetjmp])
3484*6236dae4SAndroid Build Coastguard Worker  ],[
3485*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3486*6236dae4SAndroid Build Coastguard Worker    tst_links_sigsetjmp="yes"
3487*6236dae4SAndroid Build Coastguard Worker  ],[
3488*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3489*6236dae4SAndroid Build Coastguard Worker    tst_links_sigsetjmp="no"
3490*6236dae4SAndroid Build Coastguard Worker  ])
3491*6236dae4SAndroid Build Coastguard Worker  #
3492*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_sigsetjmp" = "no"; then
3493*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if sigsetjmp seems a macro])
3494*6236dae4SAndroid Build Coastguard Worker    AC_LINK_IFELSE([
3495*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3496*6236dae4SAndroid Build Coastguard Worker        $curl_includes_setjmp
3497*6236dae4SAndroid Build Coastguard Worker      ]],[[
3498*6236dae4SAndroid Build Coastguard Worker        sigjmp_buf env;
3499*6236dae4SAndroid Build Coastguard Worker        if(0 != sigsetjmp(env, 0))
3500*6236dae4SAndroid Build Coastguard Worker          return 1;
3501*6236dae4SAndroid Build Coastguard Worker      ]])
3502*6236dae4SAndroid Build Coastguard Worker    ],[
3503*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3504*6236dae4SAndroid Build Coastguard Worker      tst_macro_sigsetjmp="yes"
3505*6236dae4SAndroid Build Coastguard Worker    ],[
3506*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3507*6236dae4SAndroid Build Coastguard Worker      tst_macro_sigsetjmp="no"
3508*6236dae4SAndroid Build Coastguard Worker    ])
3509*6236dae4SAndroid Build Coastguard Worker  fi
3510*6236dae4SAndroid Build Coastguard Worker  #
3511*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_sigsetjmp" = "yes"; then
3512*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if sigsetjmp is prototyped])
3513*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([sigsetjmp],[
3514*6236dae4SAndroid Build Coastguard Worker      $curl_includes_setjmp
3515*6236dae4SAndroid Build Coastguard Worker    ],[
3516*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3517*6236dae4SAndroid Build Coastguard Worker      tst_proto_sigsetjmp="yes"
3518*6236dae4SAndroid Build Coastguard Worker    ],[
3519*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3520*6236dae4SAndroid Build Coastguard Worker      tst_proto_sigsetjmp="no"
3521*6236dae4SAndroid Build Coastguard Worker    ])
3522*6236dae4SAndroid Build Coastguard Worker  fi
3523*6236dae4SAndroid Build Coastguard Worker  #
3524*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_sigsetjmp" = "yes" ||
3525*6236dae4SAndroid Build Coastguard Worker     test "$tst_macro_sigsetjmp" = "yes"; then
3526*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if sigsetjmp is compilable])
3527*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3528*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3529*6236dae4SAndroid Build Coastguard Worker        $curl_includes_setjmp
3530*6236dae4SAndroid Build Coastguard Worker      ]],[[
3531*6236dae4SAndroid Build Coastguard Worker        sigjmp_buf env;
3532*6236dae4SAndroid Build Coastguard Worker        if(0 != sigsetjmp(env, 0))
3533*6236dae4SAndroid Build Coastguard Worker          return 1;
3534*6236dae4SAndroid Build Coastguard Worker      ]])
3535*6236dae4SAndroid Build Coastguard Worker    ],[
3536*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3537*6236dae4SAndroid Build Coastguard Worker      tst_compi_sigsetjmp="yes"
3538*6236dae4SAndroid Build Coastguard Worker    ],[
3539*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3540*6236dae4SAndroid Build Coastguard Worker      tst_compi_sigsetjmp="no"
3541*6236dae4SAndroid Build Coastguard Worker    ])
3542*6236dae4SAndroid Build Coastguard Worker  fi
3543*6236dae4SAndroid Build Coastguard Worker  #
3544*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_sigsetjmp" = "yes"; then
3545*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if sigsetjmp usage allowed])
3546*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_sigsetjmp" != "xyes"; then
3547*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3548*6236dae4SAndroid Build Coastguard Worker      tst_allow_sigsetjmp="yes"
3549*6236dae4SAndroid Build Coastguard Worker    else
3550*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3551*6236dae4SAndroid Build Coastguard Worker      tst_allow_sigsetjmp="no"
3552*6236dae4SAndroid Build Coastguard Worker    fi
3553*6236dae4SAndroid Build Coastguard Worker  fi
3554*6236dae4SAndroid Build Coastguard Worker  #
3555*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if sigsetjmp might be used])
3556*6236dae4SAndroid Build Coastguard Worker  if (test "$tst_proto_sigsetjmp" = "yes" ||
3557*6236dae4SAndroid Build Coastguard Worker      test "$tst_macro_sigsetjmp" = "yes") &&
3558*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_sigsetjmp" = "yes" &&
3559*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_sigsetjmp" = "yes"; then
3560*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3561*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_SIGSETJMP, 1,
3562*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the sigsetjmp function or macro.])
3563*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_sigsetjmp="yes"
3564*6236dae4SAndroid Build Coastguard Worker  else
3565*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3566*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_sigsetjmp="no"
3567*6236dae4SAndroid Build Coastguard Worker  fi
3568*6236dae4SAndroid Build Coastguard Worker])
3569*6236dae4SAndroid Build Coastguard Worker
3570*6236dae4SAndroid Build Coastguard Worker
3571*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_SOCKET
3572*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3573*6236dae4SAndroid Build Coastguard Workerdnl Verify if socket is available, prototyped, and
3574*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3575*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3576*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_socket, then
3577*6236dae4SAndroid Build Coastguard Workerdnl HAVE_SOCKET will be defined.
3578*6236dae4SAndroid Build Coastguard Worker
3579*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_SOCKET], [
3580*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
3581*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
3582*6236dae4SAndroid Build Coastguard Worker  #
3583*6236dae4SAndroid Build Coastguard Worker  tst_links_socket="unknown"
3584*6236dae4SAndroid Build Coastguard Worker  tst_proto_socket="unknown"
3585*6236dae4SAndroid Build Coastguard Worker  tst_compi_socket="unknown"
3586*6236dae4SAndroid Build Coastguard Worker  tst_allow_socket="unknown"
3587*6236dae4SAndroid Build Coastguard Worker  #
3588*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if socket can be linked])
3589*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3590*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
3591*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
3592*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
3593*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
3594*6236dae4SAndroid Build Coastguard Worker    ]],[[
3595*6236dae4SAndroid Build Coastguard Worker      if(0 != socket(0, 0, 0))
3596*6236dae4SAndroid Build Coastguard Worker        return 1;
3597*6236dae4SAndroid Build Coastguard Worker    ]])
3598*6236dae4SAndroid Build Coastguard Worker  ],[
3599*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3600*6236dae4SAndroid Build Coastguard Worker    tst_links_socket="yes"
3601*6236dae4SAndroid Build Coastguard Worker  ],[
3602*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3603*6236dae4SAndroid Build Coastguard Worker    tst_links_socket="no"
3604*6236dae4SAndroid Build Coastguard Worker  ])
3605*6236dae4SAndroid Build Coastguard Worker  #
3606*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_socket" = "yes"; then
3607*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if socket is prototyped])
3608*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([socket],[
3609*6236dae4SAndroid Build Coastguard Worker      $curl_includes_winsock2
3610*6236dae4SAndroid Build Coastguard Worker      $curl_includes_bsdsocket
3611*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
3612*6236dae4SAndroid Build Coastguard Worker    ],[
3613*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3614*6236dae4SAndroid Build Coastguard Worker      tst_proto_socket="yes"
3615*6236dae4SAndroid Build Coastguard Worker    ],[
3616*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3617*6236dae4SAndroid Build Coastguard Worker      tst_proto_socket="no"
3618*6236dae4SAndroid Build Coastguard Worker    ])
3619*6236dae4SAndroid Build Coastguard Worker  fi
3620*6236dae4SAndroid Build Coastguard Worker  #
3621*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_socket" = "yes"; then
3622*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if socket is compilable])
3623*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3624*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3625*6236dae4SAndroid Build Coastguard Worker        $curl_includes_winsock2
3626*6236dae4SAndroid Build Coastguard Worker        $curl_includes_bsdsocket
3627*6236dae4SAndroid Build Coastguard Worker        $curl_includes_sys_socket
3628*6236dae4SAndroid Build Coastguard Worker      ]],[[
3629*6236dae4SAndroid Build Coastguard Worker        if(0 != socket(0, 0, 0))
3630*6236dae4SAndroid Build Coastguard Worker          return 1;
3631*6236dae4SAndroid Build Coastguard Worker      ]])
3632*6236dae4SAndroid Build Coastguard Worker    ],[
3633*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3634*6236dae4SAndroid Build Coastguard Worker      tst_compi_socket="yes"
3635*6236dae4SAndroid Build Coastguard Worker    ],[
3636*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3637*6236dae4SAndroid Build Coastguard Worker      tst_compi_socket="no"
3638*6236dae4SAndroid Build Coastguard Worker    ])
3639*6236dae4SAndroid Build Coastguard Worker  fi
3640*6236dae4SAndroid Build Coastguard Worker  #
3641*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_socket" = "yes"; then
3642*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if socket usage allowed])
3643*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_socket" != "xyes"; then
3644*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3645*6236dae4SAndroid Build Coastguard Worker      tst_allow_socket="yes"
3646*6236dae4SAndroid Build Coastguard Worker    else
3647*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3648*6236dae4SAndroid Build Coastguard Worker      tst_allow_socket="no"
3649*6236dae4SAndroid Build Coastguard Worker    fi
3650*6236dae4SAndroid Build Coastguard Worker  fi
3651*6236dae4SAndroid Build Coastguard Worker  #
3652*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if socket might be used])
3653*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_socket" = "yes" &&
3654*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_socket" = "yes" &&
3655*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_socket" = "yes" &&
3656*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_socket" = "yes"; then
3657*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3658*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_SOCKET, 1,
3659*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the socket function.])
3660*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_socket="yes"
3661*6236dae4SAndroid Build Coastguard Worker  else
3662*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3663*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_socket="no"
3664*6236dae4SAndroid Build Coastguard Worker  fi
3665*6236dae4SAndroid Build Coastguard Worker])
3666*6236dae4SAndroid Build Coastguard Worker
3667*6236dae4SAndroid Build Coastguard Worker
3668*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_SOCKETPAIR
3669*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3670*6236dae4SAndroid Build Coastguard Workerdnl Verify if socketpair is available, prototyped, and
3671*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3672*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3673*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_socketpair, then
3674*6236dae4SAndroid Build Coastguard Workerdnl HAVE_SOCKETPAIR will be defined.
3675*6236dae4SAndroid Build Coastguard Worker
3676*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_SOCKETPAIR], [
3677*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
3678*6236dae4SAndroid Build Coastguard Worker  #
3679*6236dae4SAndroid Build Coastguard Worker  tst_links_socketpair="unknown"
3680*6236dae4SAndroid Build Coastguard Worker  tst_proto_socketpair="unknown"
3681*6236dae4SAndroid Build Coastguard Worker  tst_compi_socketpair="unknown"
3682*6236dae4SAndroid Build Coastguard Worker  tst_allow_socketpair="unknown"
3683*6236dae4SAndroid Build Coastguard Worker  #
3684*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if socketpair can be linked])
3685*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3686*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([socketpair])
3687*6236dae4SAndroid Build Coastguard Worker  ],[
3688*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3689*6236dae4SAndroid Build Coastguard Worker    tst_links_socketpair="yes"
3690*6236dae4SAndroid Build Coastguard Worker  ],[
3691*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3692*6236dae4SAndroid Build Coastguard Worker    tst_links_socketpair="no"
3693*6236dae4SAndroid Build Coastguard Worker  ])
3694*6236dae4SAndroid Build Coastguard Worker  #
3695*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_socketpair" = "yes"; then
3696*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if socketpair is prototyped])
3697*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([socketpair],[
3698*6236dae4SAndroid Build Coastguard Worker      $curl_includes_sys_socket
3699*6236dae4SAndroid Build Coastguard Worker    ],[
3700*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3701*6236dae4SAndroid Build Coastguard Worker      tst_proto_socketpair="yes"
3702*6236dae4SAndroid Build Coastguard Worker    ],[
3703*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3704*6236dae4SAndroid Build Coastguard Worker      tst_proto_socketpair="no"
3705*6236dae4SAndroid Build Coastguard Worker    ])
3706*6236dae4SAndroid Build Coastguard Worker  fi
3707*6236dae4SAndroid Build Coastguard Worker  #
3708*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_socketpair" = "yes"; then
3709*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if socketpair is compilable])
3710*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3711*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3712*6236dae4SAndroid Build Coastguard Worker        $curl_includes_sys_socket
3713*6236dae4SAndroid Build Coastguard Worker      ]],[[
3714*6236dae4SAndroid Build Coastguard Worker        int sv[2];
3715*6236dae4SAndroid Build Coastguard Worker        if(0 != socketpair(0, 0, 0, sv))
3716*6236dae4SAndroid Build Coastguard Worker          return 1;
3717*6236dae4SAndroid Build Coastguard Worker      ]])
3718*6236dae4SAndroid Build Coastguard Worker    ],[
3719*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3720*6236dae4SAndroid Build Coastguard Worker      tst_compi_socketpair="yes"
3721*6236dae4SAndroid Build Coastguard Worker    ],[
3722*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3723*6236dae4SAndroid Build Coastguard Worker      tst_compi_socketpair="no"
3724*6236dae4SAndroid Build Coastguard Worker    ])
3725*6236dae4SAndroid Build Coastguard Worker  fi
3726*6236dae4SAndroid Build Coastguard Worker  #
3727*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_socketpair" = "yes"; then
3728*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if socketpair usage allowed])
3729*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_socketpair" != "xyes"; then
3730*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3731*6236dae4SAndroid Build Coastguard Worker      tst_allow_socketpair="yes"
3732*6236dae4SAndroid Build Coastguard Worker    else
3733*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3734*6236dae4SAndroid Build Coastguard Worker      tst_allow_socketpair="no"
3735*6236dae4SAndroid Build Coastguard Worker    fi
3736*6236dae4SAndroid Build Coastguard Worker  fi
3737*6236dae4SAndroid Build Coastguard Worker  #
3738*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if socketpair might be used])
3739*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_socketpair" = "yes" &&
3740*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_socketpair" = "yes" &&
3741*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_socketpair" = "yes" &&
3742*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_socketpair" = "yes"; then
3743*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3744*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_SOCKETPAIR, 1,
3745*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the socketpair function.])
3746*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_socketpair="yes"
3747*6236dae4SAndroid Build Coastguard Worker  else
3748*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3749*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_socketpair="no"
3750*6236dae4SAndroid Build Coastguard Worker  fi
3751*6236dae4SAndroid Build Coastguard Worker])
3752*6236dae4SAndroid Build Coastguard Worker
3753*6236dae4SAndroid Build Coastguard Worker
3754*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_STRCASECMP
3755*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3756*6236dae4SAndroid Build Coastguard Workerdnl Verify if strcasecmp is available, prototyped, and
3757*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3758*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3759*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_strcasecmp, then
3760*6236dae4SAndroid Build Coastguard Workerdnl HAVE_STRCASECMP will be defined.
3761*6236dae4SAndroid Build Coastguard Worker
3762*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_STRCASECMP], [
3763*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
3764*6236dae4SAndroid Build Coastguard Worker  #
3765*6236dae4SAndroid Build Coastguard Worker  tst_links_strcasecmp="unknown"
3766*6236dae4SAndroid Build Coastguard Worker  tst_proto_strcasecmp="unknown"
3767*6236dae4SAndroid Build Coastguard Worker  tst_compi_strcasecmp="unknown"
3768*6236dae4SAndroid Build Coastguard Worker  tst_allow_strcasecmp="unknown"
3769*6236dae4SAndroid Build Coastguard Worker  #
3770*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strcasecmp can be linked])
3771*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3772*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([strcasecmp])
3773*6236dae4SAndroid Build Coastguard Worker  ],[
3774*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3775*6236dae4SAndroid Build Coastguard Worker    tst_links_strcasecmp="yes"
3776*6236dae4SAndroid Build Coastguard Worker  ],[
3777*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3778*6236dae4SAndroid Build Coastguard Worker    tst_links_strcasecmp="no"
3779*6236dae4SAndroid Build Coastguard Worker  ])
3780*6236dae4SAndroid Build Coastguard Worker  #
3781*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strcasecmp" = "yes"; then
3782*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strcasecmp is prototyped])
3783*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([strcasecmp],[
3784*6236dae4SAndroid Build Coastguard Worker      $curl_includes_string
3785*6236dae4SAndroid Build Coastguard Worker    ],[
3786*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3787*6236dae4SAndroid Build Coastguard Worker      tst_proto_strcasecmp="yes"
3788*6236dae4SAndroid Build Coastguard Worker    ],[
3789*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3790*6236dae4SAndroid Build Coastguard Worker      tst_proto_strcasecmp="no"
3791*6236dae4SAndroid Build Coastguard Worker    ])
3792*6236dae4SAndroid Build Coastguard Worker  fi
3793*6236dae4SAndroid Build Coastguard Worker  #
3794*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_strcasecmp" = "yes"; then
3795*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strcasecmp is compilable])
3796*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3797*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3798*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
3799*6236dae4SAndroid Build Coastguard Worker      ]],[[
3800*6236dae4SAndroid Build Coastguard Worker        if(0 != strcasecmp(0, 0))
3801*6236dae4SAndroid Build Coastguard Worker          return 1;
3802*6236dae4SAndroid Build Coastguard Worker      ]])
3803*6236dae4SAndroid Build Coastguard Worker    ],[
3804*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3805*6236dae4SAndroid Build Coastguard Worker      tst_compi_strcasecmp="yes"
3806*6236dae4SAndroid Build Coastguard Worker    ],[
3807*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3808*6236dae4SAndroid Build Coastguard Worker      tst_compi_strcasecmp="no"
3809*6236dae4SAndroid Build Coastguard Worker    ])
3810*6236dae4SAndroid Build Coastguard Worker  fi
3811*6236dae4SAndroid Build Coastguard Worker  #
3812*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_strcasecmp" = "yes"; then
3813*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strcasecmp usage allowed])
3814*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_strcasecmp" != "xyes"; then
3815*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3816*6236dae4SAndroid Build Coastguard Worker      tst_allow_strcasecmp="yes"
3817*6236dae4SAndroid Build Coastguard Worker    else
3818*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3819*6236dae4SAndroid Build Coastguard Worker      tst_allow_strcasecmp="no"
3820*6236dae4SAndroid Build Coastguard Worker    fi
3821*6236dae4SAndroid Build Coastguard Worker  fi
3822*6236dae4SAndroid Build Coastguard Worker  #
3823*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strcasecmp might be used])
3824*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strcasecmp" = "yes" &&
3825*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_strcasecmp" = "yes" &&
3826*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_strcasecmp" = "yes" &&
3827*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_strcasecmp" = "yes"; then
3828*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3829*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_STRCASECMP, 1,
3830*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the strcasecmp function.])
3831*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strcasecmp="yes"
3832*6236dae4SAndroid Build Coastguard Worker  else
3833*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3834*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strcasecmp="no"
3835*6236dae4SAndroid Build Coastguard Worker  fi
3836*6236dae4SAndroid Build Coastguard Worker])
3837*6236dae4SAndroid Build Coastguard Worker
3838*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_STRCMPI
3839*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3840*6236dae4SAndroid Build Coastguard Workerdnl Verify if strcmpi is available, prototyped, and
3841*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3842*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3843*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_strcmpi, then
3844*6236dae4SAndroid Build Coastguard Workerdnl HAVE_STRCMPI will be defined.
3845*6236dae4SAndroid Build Coastguard Worker
3846*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_STRCMPI], [
3847*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
3848*6236dae4SAndroid Build Coastguard Worker  #
3849*6236dae4SAndroid Build Coastguard Worker  tst_links_strcmpi="unknown"
3850*6236dae4SAndroid Build Coastguard Worker  tst_proto_strcmpi="unknown"
3851*6236dae4SAndroid Build Coastguard Worker  tst_compi_strcmpi="unknown"
3852*6236dae4SAndroid Build Coastguard Worker  tst_allow_strcmpi="unknown"
3853*6236dae4SAndroid Build Coastguard Worker  #
3854*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strcmpi can be linked])
3855*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3856*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([strcmpi])
3857*6236dae4SAndroid Build Coastguard Worker  ],[
3858*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3859*6236dae4SAndroid Build Coastguard Worker    tst_links_strcmpi="yes"
3860*6236dae4SAndroid Build Coastguard Worker  ],[
3861*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3862*6236dae4SAndroid Build Coastguard Worker    tst_links_strcmpi="no"
3863*6236dae4SAndroid Build Coastguard Worker  ])
3864*6236dae4SAndroid Build Coastguard Worker  #
3865*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strcmpi" = "yes"; then
3866*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strcmpi is prototyped])
3867*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([strcmpi],[
3868*6236dae4SAndroid Build Coastguard Worker      $curl_includes_string
3869*6236dae4SAndroid Build Coastguard Worker    ],[
3870*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3871*6236dae4SAndroid Build Coastguard Worker      tst_proto_strcmpi="yes"
3872*6236dae4SAndroid Build Coastguard Worker    ],[
3873*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3874*6236dae4SAndroid Build Coastguard Worker      tst_proto_strcmpi="no"
3875*6236dae4SAndroid Build Coastguard Worker    ])
3876*6236dae4SAndroid Build Coastguard Worker  fi
3877*6236dae4SAndroid Build Coastguard Worker  #
3878*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_strcmpi" = "yes"; then
3879*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strcmpi is compilable])
3880*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3881*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3882*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
3883*6236dae4SAndroid Build Coastguard Worker      ]],[[
3884*6236dae4SAndroid Build Coastguard Worker        if(0 != strcmpi(0, 0))
3885*6236dae4SAndroid Build Coastguard Worker          return 1;
3886*6236dae4SAndroid Build Coastguard Worker      ]])
3887*6236dae4SAndroid Build Coastguard Worker    ],[
3888*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3889*6236dae4SAndroid Build Coastguard Worker      tst_compi_strcmpi="yes"
3890*6236dae4SAndroid Build Coastguard Worker    ],[
3891*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3892*6236dae4SAndroid Build Coastguard Worker      tst_compi_strcmpi="no"
3893*6236dae4SAndroid Build Coastguard Worker    ])
3894*6236dae4SAndroid Build Coastguard Worker  fi
3895*6236dae4SAndroid Build Coastguard Worker  #
3896*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_strcmpi" = "yes"; then
3897*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strcmpi usage allowed])
3898*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_strcmpi" != "xyes"; then
3899*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3900*6236dae4SAndroid Build Coastguard Worker      tst_allow_strcmpi="yes"
3901*6236dae4SAndroid Build Coastguard Worker    else
3902*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3903*6236dae4SAndroid Build Coastguard Worker      tst_allow_strcmpi="no"
3904*6236dae4SAndroid Build Coastguard Worker    fi
3905*6236dae4SAndroid Build Coastguard Worker  fi
3906*6236dae4SAndroid Build Coastguard Worker  #
3907*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strcmpi might be used])
3908*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strcmpi" = "yes" &&
3909*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_strcmpi" = "yes" &&
3910*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_strcmpi" = "yes" &&
3911*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_strcmpi" = "yes"; then
3912*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3913*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_STRCMPI, 1,
3914*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the strcmpi function.])
3915*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strcmpi="yes"
3916*6236dae4SAndroid Build Coastguard Worker  else
3917*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3918*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strcmpi="no"
3919*6236dae4SAndroid Build Coastguard Worker  fi
3920*6236dae4SAndroid Build Coastguard Worker])
3921*6236dae4SAndroid Build Coastguard Worker
3922*6236dae4SAndroid Build Coastguard Worker
3923*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_STRDUP
3924*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
3925*6236dae4SAndroid Build Coastguard Workerdnl Verify if strdup is available, prototyped, and
3926*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
3927*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
3928*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_strdup, then
3929*6236dae4SAndroid Build Coastguard Workerdnl HAVE_STRDUP will be defined.
3930*6236dae4SAndroid Build Coastguard Worker
3931*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_STRDUP], [
3932*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
3933*6236dae4SAndroid Build Coastguard Worker  #
3934*6236dae4SAndroid Build Coastguard Worker  tst_links_strdup="unknown"
3935*6236dae4SAndroid Build Coastguard Worker  tst_proto_strdup="unknown"
3936*6236dae4SAndroid Build Coastguard Worker  tst_compi_strdup="unknown"
3937*6236dae4SAndroid Build Coastguard Worker  tst_allow_strdup="unknown"
3938*6236dae4SAndroid Build Coastguard Worker  #
3939*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strdup can be linked])
3940*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
3941*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([strdup])
3942*6236dae4SAndroid Build Coastguard Worker  ],[
3943*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3944*6236dae4SAndroid Build Coastguard Worker    tst_links_strdup="yes"
3945*6236dae4SAndroid Build Coastguard Worker  ],[
3946*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
3947*6236dae4SAndroid Build Coastguard Worker    tst_links_strdup="no"
3948*6236dae4SAndroid Build Coastguard Worker  ])
3949*6236dae4SAndroid Build Coastguard Worker  #
3950*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strdup" = "yes"; then
3951*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strdup is prototyped])
3952*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([strdup],[
3953*6236dae4SAndroid Build Coastguard Worker      $curl_includes_string
3954*6236dae4SAndroid Build Coastguard Worker    ],[
3955*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3956*6236dae4SAndroid Build Coastguard Worker      tst_proto_strdup="yes"
3957*6236dae4SAndroid Build Coastguard Worker    ],[
3958*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3959*6236dae4SAndroid Build Coastguard Worker      tst_proto_strdup="no"
3960*6236dae4SAndroid Build Coastguard Worker    ])
3961*6236dae4SAndroid Build Coastguard Worker  fi
3962*6236dae4SAndroid Build Coastguard Worker  #
3963*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_strdup" = "yes"; then
3964*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strdup is compilable])
3965*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
3966*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
3967*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
3968*6236dae4SAndroid Build Coastguard Worker      ]],[[
3969*6236dae4SAndroid Build Coastguard Worker        if(0 != strdup(0))
3970*6236dae4SAndroid Build Coastguard Worker          return 1;
3971*6236dae4SAndroid Build Coastguard Worker      ]])
3972*6236dae4SAndroid Build Coastguard Worker    ],[
3973*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3974*6236dae4SAndroid Build Coastguard Worker      tst_compi_strdup="yes"
3975*6236dae4SAndroid Build Coastguard Worker    ],[
3976*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3977*6236dae4SAndroid Build Coastguard Worker      tst_compi_strdup="no"
3978*6236dae4SAndroid Build Coastguard Worker    ])
3979*6236dae4SAndroid Build Coastguard Worker  fi
3980*6236dae4SAndroid Build Coastguard Worker  #
3981*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_strdup" = "yes"; then
3982*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strdup usage allowed])
3983*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_strdup" != "xyes"; then
3984*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
3985*6236dae4SAndroid Build Coastguard Worker      tst_allow_strdup="yes"
3986*6236dae4SAndroid Build Coastguard Worker    else
3987*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
3988*6236dae4SAndroid Build Coastguard Worker      tst_allow_strdup="no"
3989*6236dae4SAndroid Build Coastguard Worker    fi
3990*6236dae4SAndroid Build Coastguard Worker  fi
3991*6236dae4SAndroid Build Coastguard Worker  #
3992*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strdup might be used])
3993*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strdup" = "yes" &&
3994*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_strdup" = "yes" &&
3995*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_strdup" = "yes" &&
3996*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_strdup" = "yes"; then
3997*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
3998*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_STRDUP, 1,
3999*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the strdup function.])
4000*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strdup="yes"
4001*6236dae4SAndroid Build Coastguard Worker  else
4002*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4003*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strdup="no"
4004*6236dae4SAndroid Build Coastguard Worker  fi
4005*6236dae4SAndroid Build Coastguard Worker])
4006*6236dae4SAndroid Build Coastguard Worker
4007*6236dae4SAndroid Build Coastguard Worker
4008*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_STRERROR_R
4009*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
4010*6236dae4SAndroid Build Coastguard Workerdnl Verify if strerror_r is available, prototyped, can be compiled and
4011*6236dae4SAndroid Build Coastguard Workerdnl seems to work. If all of these are true, and usage has not been
4012*6236dae4SAndroid Build Coastguard Workerdnl previously disallowed with shell variable curl_disallow_strerror_r,
4013*6236dae4SAndroid Build Coastguard Workerdnl then HAVE_STRERROR_R will be defined, as well as one of
4014*6236dae4SAndroid Build Coastguard Workerdnl HAVE_GLIBC_STRERROR_R or HAVE_POSIX_STRERROR_R.
4015*6236dae4SAndroid Build Coastguard Workerdnl
4016*6236dae4SAndroid Build Coastguard Workerdnl glibc-style strerror_r:
4017*6236dae4SAndroid Build Coastguard Workerdnl
4018*6236dae4SAndroid Build Coastguard Workerdnl      char *strerror_r(int errnum, char *workbuf, size_t bufsize);
4019*6236dae4SAndroid Build Coastguard Workerdnl
4020*6236dae4SAndroid Build Coastguard Workerdnl  glibc-style strerror_r returns a pointer to the error string,
4021*6236dae4SAndroid Build Coastguard Workerdnl  and might use the provided workbuf as a scratch area if needed. A
4022*6236dae4SAndroid Build Coastguard Workerdnl  quick test on a few systems shows that it's usually not used at all.
4023*6236dae4SAndroid Build Coastguard Workerdnl
4024*6236dae4SAndroid Build Coastguard Workerdnl POSIX-style strerror_r:
4025*6236dae4SAndroid Build Coastguard Workerdnl
4026*6236dae4SAndroid Build Coastguard Workerdnl      int strerror_r(int errnum, char *resultbuf, size_t bufsize);
4027*6236dae4SAndroid Build Coastguard Workerdnl
4028*6236dae4SAndroid Build Coastguard Workerdnl  POSIX-style strerror_r returns 0 upon successful completion and the
4029*6236dae4SAndroid Build Coastguard Workerdnl  error string in the provided resultbuf.
4030*6236dae4SAndroid Build Coastguard Workerdnl
4031*6236dae4SAndroid Build Coastguard Worker
4032*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_STRERROR_R], [
4033*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
4034*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
4035*6236dae4SAndroid Build Coastguard Worker  #
4036*6236dae4SAndroid Build Coastguard Worker  tst_links_strerror_r="unknown"
4037*6236dae4SAndroid Build Coastguard Worker  tst_proto_strerror_r="unknown"
4038*6236dae4SAndroid Build Coastguard Worker  tst_compi_strerror_r="unknown"
4039*6236dae4SAndroid Build Coastguard Worker  tst_glibc_strerror_r="unknown"
4040*6236dae4SAndroid Build Coastguard Worker  tst_posix_strerror_r="unknown"
4041*6236dae4SAndroid Build Coastguard Worker  tst_allow_strerror_r="unknown"
4042*6236dae4SAndroid Build Coastguard Worker  tst_works_glibc_strerror_r="unknown"
4043*6236dae4SAndroid Build Coastguard Worker  tst_works_posix_strerror_r="unknown"
4044*6236dae4SAndroid Build Coastguard Worker  tst_glibc_strerror_r_type_arg3="unknown"
4045*6236dae4SAndroid Build Coastguard Worker  tst_posix_strerror_r_type_arg3="unknown"
4046*6236dae4SAndroid Build Coastguard Worker  #
4047*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strerror_r can be linked])
4048*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
4049*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([strerror_r])
4050*6236dae4SAndroid Build Coastguard Worker  ],[
4051*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
4052*6236dae4SAndroid Build Coastguard Worker    tst_links_strerror_r="yes"
4053*6236dae4SAndroid Build Coastguard Worker  ],[
4054*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4055*6236dae4SAndroid Build Coastguard Worker    tst_links_strerror_r="no"
4056*6236dae4SAndroid Build Coastguard Worker  ])
4057*6236dae4SAndroid Build Coastguard Worker  #
4058*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strerror_r" = "yes"; then
4059*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strerror_r is prototyped])
4060*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([strerror_r],[
4061*6236dae4SAndroid Build Coastguard Worker      $curl_includes_string
4062*6236dae4SAndroid Build Coastguard Worker    ],[
4063*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4064*6236dae4SAndroid Build Coastguard Worker      tst_proto_strerror_r="yes"
4065*6236dae4SAndroid Build Coastguard Worker    ],[
4066*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4067*6236dae4SAndroid Build Coastguard Worker      tst_proto_strerror_r="no"
4068*6236dae4SAndroid Build Coastguard Worker    ])
4069*6236dae4SAndroid Build Coastguard Worker  fi
4070*6236dae4SAndroid Build Coastguard Worker  #
4071*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_strerror_r" = "yes"; then
4072*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strerror_r is compilable])
4073*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
4074*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
4075*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
4076*6236dae4SAndroid Build Coastguard Worker      ]],[[
4077*6236dae4SAndroid Build Coastguard Worker        if(0 != strerror_r(0, 0, 0))
4078*6236dae4SAndroid Build Coastguard Worker          return 1;
4079*6236dae4SAndroid Build Coastguard Worker      ]])
4080*6236dae4SAndroid Build Coastguard Worker    ],[
4081*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4082*6236dae4SAndroid Build Coastguard Worker      tst_compi_strerror_r="yes"
4083*6236dae4SAndroid Build Coastguard Worker    ],[
4084*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4085*6236dae4SAndroid Build Coastguard Worker      tst_compi_strerror_r="no"
4086*6236dae4SAndroid Build Coastguard Worker    ])
4087*6236dae4SAndroid Build Coastguard Worker  fi
4088*6236dae4SAndroid Build Coastguard Worker  #
4089*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_strerror_r" = "yes"; then
4090*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strerror_r is glibc like])
4091*6236dae4SAndroid Build Coastguard Worker    tst_glibc_strerror_r_type_arg3="unknown"
4092*6236dae4SAndroid Build Coastguard Worker    for arg3 in 'size_t' 'int' 'unsigned int'; do
4093*6236dae4SAndroid Build Coastguard Worker      if test "$tst_glibc_strerror_r_type_arg3" = "unknown"; then
4094*6236dae4SAndroid Build Coastguard Worker        AC_COMPILE_IFELSE([
4095*6236dae4SAndroid Build Coastguard Worker          AC_LANG_PROGRAM([[
4096*6236dae4SAndroid Build Coastguard Worker            $curl_includes_string
4097*6236dae4SAndroid Build Coastguard Worker            char *strerror_r(int errnum, char *workbuf, $arg3 bufsize);
4098*6236dae4SAndroid Build Coastguard Worker          ]],[[
4099*6236dae4SAndroid Build Coastguard Worker            if(0 != strerror_r(0, 0, 0))
4100*6236dae4SAndroid Build Coastguard Worker              return 1;
4101*6236dae4SAndroid Build Coastguard Worker          ]])
4102*6236dae4SAndroid Build Coastguard Worker        ],[
4103*6236dae4SAndroid Build Coastguard Worker          tst_glibc_strerror_r_type_arg3="$arg3"
4104*6236dae4SAndroid Build Coastguard Worker        ])
4105*6236dae4SAndroid Build Coastguard Worker      fi
4106*6236dae4SAndroid Build Coastguard Worker    done
4107*6236dae4SAndroid Build Coastguard Worker    case "$tst_glibc_strerror_r_type_arg3" in
4108*6236dae4SAndroid Build Coastguard Worker      unknown)
4109*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([no])
4110*6236dae4SAndroid Build Coastguard Worker        tst_glibc_strerror_r="no"
4111*6236dae4SAndroid Build Coastguard Worker        ;;
4112*6236dae4SAndroid Build Coastguard Worker      *)
4113*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([yes])
4114*6236dae4SAndroid Build Coastguard Worker        tst_glibc_strerror_r="yes"
4115*6236dae4SAndroid Build Coastguard Worker        ;;
4116*6236dae4SAndroid Build Coastguard Worker    esac
4117*6236dae4SAndroid Build Coastguard Worker  fi
4118*6236dae4SAndroid Build Coastguard Worker  #
4119*6236dae4SAndroid Build Coastguard Worker  dnl only do runtime verification when not cross-compiling
4120*6236dae4SAndroid Build Coastguard Worker  if test "x$cross_compiling" != "xyes" &&
4121*6236dae4SAndroid Build Coastguard Worker    test "$tst_glibc_strerror_r" = "yes"; then
4122*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strerror_r seems to work])
4123*6236dae4SAndroid Build Coastguard Worker    CURL_RUN_IFELSE([
4124*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
4125*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stdlib
4126*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
4127*6236dae4SAndroid Build Coastguard Worker#       include <errno.h>
4128*6236dae4SAndroid Build Coastguard Worker      ]],[[
4129*6236dae4SAndroid Build Coastguard Worker        char buffer[1024];
4130*6236dae4SAndroid Build Coastguard Worker        char *string = 0;
4131*6236dae4SAndroid Build Coastguard Worker        buffer[0] = '\0';
4132*6236dae4SAndroid Build Coastguard Worker        string = strerror_r(EACCES, buffer, sizeof(buffer));
4133*6236dae4SAndroid Build Coastguard Worker        if(!string)
4134*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
4135*6236dae4SAndroid Build Coastguard Worker        if(!string[0])
4136*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
4137*6236dae4SAndroid Build Coastguard Worker        else
4138*6236dae4SAndroid Build Coastguard Worker          exit(0);
4139*6236dae4SAndroid Build Coastguard Worker      ]])
4140*6236dae4SAndroid Build Coastguard Worker    ],[
4141*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4142*6236dae4SAndroid Build Coastguard Worker      tst_works_glibc_strerror_r="yes"
4143*6236dae4SAndroid Build Coastguard Worker    ],[
4144*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4145*6236dae4SAndroid Build Coastguard Worker      tst_works_glibc_strerror_r="no"
4146*6236dae4SAndroid Build Coastguard Worker    ])
4147*6236dae4SAndroid Build Coastguard Worker  fi
4148*6236dae4SAndroid Build Coastguard Worker  #
4149*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_strerror_r" = "yes" &&
4150*6236dae4SAndroid Build Coastguard Worker    test "$tst_works_glibc_strerror_r" != "yes"; then
4151*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strerror_r is POSIX like])
4152*6236dae4SAndroid Build Coastguard Worker    tst_posix_strerror_r_type_arg3="unknown"
4153*6236dae4SAndroid Build Coastguard Worker    for arg3 in 'size_t' 'int' 'unsigned int'; do
4154*6236dae4SAndroid Build Coastguard Worker      if test "$tst_posix_strerror_r_type_arg3" = "unknown"; then
4155*6236dae4SAndroid Build Coastguard Worker        AC_COMPILE_IFELSE([
4156*6236dae4SAndroid Build Coastguard Worker          AC_LANG_PROGRAM([[
4157*6236dae4SAndroid Build Coastguard Worker            $curl_includes_string
4158*6236dae4SAndroid Build Coastguard Worker            int strerror_r(int errnum, char *resultbuf, $arg3 bufsize);
4159*6236dae4SAndroid Build Coastguard Worker          ]],[[
4160*6236dae4SAndroid Build Coastguard Worker            if(0 != strerror_r(0, 0, 0))
4161*6236dae4SAndroid Build Coastguard Worker              return 1;
4162*6236dae4SAndroid Build Coastguard Worker          ]])
4163*6236dae4SAndroid Build Coastguard Worker        ],[
4164*6236dae4SAndroid Build Coastguard Worker          tst_posix_strerror_r_type_arg3="$arg3"
4165*6236dae4SAndroid Build Coastguard Worker        ])
4166*6236dae4SAndroid Build Coastguard Worker      fi
4167*6236dae4SAndroid Build Coastguard Worker    done
4168*6236dae4SAndroid Build Coastguard Worker    case "$tst_posix_strerror_r_type_arg3" in
4169*6236dae4SAndroid Build Coastguard Worker      unknown)
4170*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([no])
4171*6236dae4SAndroid Build Coastguard Worker        tst_posix_strerror_r="no"
4172*6236dae4SAndroid Build Coastguard Worker        ;;
4173*6236dae4SAndroid Build Coastguard Worker      *)
4174*6236dae4SAndroid Build Coastguard Worker        AC_MSG_RESULT([yes])
4175*6236dae4SAndroid Build Coastguard Worker        tst_posix_strerror_r="yes"
4176*6236dae4SAndroid Build Coastguard Worker        ;;
4177*6236dae4SAndroid Build Coastguard Worker    esac
4178*6236dae4SAndroid Build Coastguard Worker  fi
4179*6236dae4SAndroid Build Coastguard Worker  #
4180*6236dae4SAndroid Build Coastguard Worker  dnl only do runtime verification when not cross-compiling
4181*6236dae4SAndroid Build Coastguard Worker  if test "x$cross_compiling" != "xyes" &&
4182*6236dae4SAndroid Build Coastguard Worker    test "$tst_posix_strerror_r" = "yes"; then
4183*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strerror_r seems to work])
4184*6236dae4SAndroid Build Coastguard Worker    CURL_RUN_IFELSE([
4185*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
4186*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stdlib
4187*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
4188*6236dae4SAndroid Build Coastguard Worker#       include <errno.h>
4189*6236dae4SAndroid Build Coastguard Worker      ]],[[
4190*6236dae4SAndroid Build Coastguard Worker        char buffer[1024];
4191*6236dae4SAndroid Build Coastguard Worker        int error = 1;
4192*6236dae4SAndroid Build Coastguard Worker        buffer[0] = '\0';
4193*6236dae4SAndroid Build Coastguard Worker        error = strerror_r(EACCES, buffer, sizeof(buffer));
4194*6236dae4SAndroid Build Coastguard Worker        if(error)
4195*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
4196*6236dae4SAndroid Build Coastguard Worker        if(buffer[0] == '\0')
4197*6236dae4SAndroid Build Coastguard Worker          exit(1); /* fail */
4198*6236dae4SAndroid Build Coastguard Worker        else
4199*6236dae4SAndroid Build Coastguard Worker          exit(0);
4200*6236dae4SAndroid Build Coastguard Worker      ]])
4201*6236dae4SAndroid Build Coastguard Worker    ],[
4202*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4203*6236dae4SAndroid Build Coastguard Worker      tst_works_posix_strerror_r="yes"
4204*6236dae4SAndroid Build Coastguard Worker    ],[
4205*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4206*6236dae4SAndroid Build Coastguard Worker      tst_works_posix_strerror_r="no"
4207*6236dae4SAndroid Build Coastguard Worker    ])
4208*6236dae4SAndroid Build Coastguard Worker  fi
4209*6236dae4SAndroid Build Coastguard Worker  #
4210*6236dae4SAndroid Build Coastguard Worker  if test "$tst_works_glibc_strerror_r" = "yes"; then
4211*6236dae4SAndroid Build Coastguard Worker    tst_posix_strerror_r="no"
4212*6236dae4SAndroid Build Coastguard Worker  fi
4213*6236dae4SAndroid Build Coastguard Worker  if test "$tst_works_posix_strerror_r" = "yes"; then
4214*6236dae4SAndroid Build Coastguard Worker    tst_glibc_strerror_r="no"
4215*6236dae4SAndroid Build Coastguard Worker  fi
4216*6236dae4SAndroid Build Coastguard Worker  if test "$tst_glibc_strerror_r" = "yes" &&
4217*6236dae4SAndroid Build Coastguard Worker    test "$tst_works_glibc_strerror_r" != "no" &&
4218*6236dae4SAndroid Build Coastguard Worker    test "$tst_posix_strerror_r" != "yes"; then
4219*6236dae4SAndroid Build Coastguard Worker    tst_allow_strerror_r="check"
4220*6236dae4SAndroid Build Coastguard Worker  fi
4221*6236dae4SAndroid Build Coastguard Worker  if test "$tst_posix_strerror_r" = "yes" &&
4222*6236dae4SAndroid Build Coastguard Worker    test "$tst_works_posix_strerror_r" != "no" &&
4223*6236dae4SAndroid Build Coastguard Worker    test "$tst_glibc_strerror_r" != "yes"; then
4224*6236dae4SAndroid Build Coastguard Worker    tst_allow_strerror_r="check"
4225*6236dae4SAndroid Build Coastguard Worker  fi
4226*6236dae4SAndroid Build Coastguard Worker  if test "$tst_allow_strerror_r" = "check"; then
4227*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strerror_r usage allowed])
4228*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_strerror_r" != "xyes"; then
4229*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4230*6236dae4SAndroid Build Coastguard Worker      tst_allow_strerror_r="yes"
4231*6236dae4SAndroid Build Coastguard Worker    else
4232*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4233*6236dae4SAndroid Build Coastguard Worker      tst_allow_strerror_r="no"
4234*6236dae4SAndroid Build Coastguard Worker    fi
4235*6236dae4SAndroid Build Coastguard Worker  fi
4236*6236dae4SAndroid Build Coastguard Worker  #
4237*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strerror_r might be used])
4238*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strerror_r" = "yes" &&
4239*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_strerror_r" = "yes" &&
4240*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_strerror_r" = "yes" &&
4241*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_strerror_r" = "yes"; then
4242*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
4243*6236dae4SAndroid Build Coastguard Worker    if test "$tst_glibc_strerror_r" = "yes"; then
4244*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
4245*6236dae4SAndroid Build Coastguard Worker        [Define to 1 if you have the strerror_r function.])
4246*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE_UNQUOTED(HAVE_GLIBC_STRERROR_R, 1,
4247*6236dae4SAndroid Build Coastguard Worker        [Define to 1 if you have a working glibc-style strerror_r function.])
4248*6236dae4SAndroid Build Coastguard Worker    fi
4249*6236dae4SAndroid Build Coastguard Worker    if test "$tst_posix_strerror_r" = "yes"; then
4250*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
4251*6236dae4SAndroid Build Coastguard Worker        [Define to 1 if you have the strerror_r function.])
4252*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE_UNQUOTED(HAVE_POSIX_STRERROR_R, 1,
4253*6236dae4SAndroid Build Coastguard Worker        [Define to 1 if you have a working POSIX-style strerror_r function.])
4254*6236dae4SAndroid Build Coastguard Worker    fi
4255*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strerror_r="yes"
4256*6236dae4SAndroid Build Coastguard Worker  else
4257*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4258*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strerror_r="no"
4259*6236dae4SAndroid Build Coastguard Worker  fi
4260*6236dae4SAndroid Build Coastguard Worker  #
4261*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_strerror_r" = "yes" &&
4262*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_strerror_r" = "unknown"; then
4263*6236dae4SAndroid Build Coastguard Worker    AC_MSG_WARN([cannot determine strerror_r() style: edit lib/curl_config.h manually.])
4264*6236dae4SAndroid Build Coastguard Worker  fi
4265*6236dae4SAndroid Build Coastguard Worker  #
4266*6236dae4SAndroid Build Coastguard Worker])
4267*6236dae4SAndroid Build Coastguard Worker
4268*6236dae4SAndroid Build Coastguard Worker
4269*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_STRICMP
4270*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
4271*6236dae4SAndroid Build Coastguard Workerdnl Verify if stricmp is available, prototyped, and
4272*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
4273*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
4274*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_stricmp, then
4275*6236dae4SAndroid Build Coastguard Workerdnl HAVE_STRICMP will be defined.
4276*6236dae4SAndroid Build Coastguard Worker
4277*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_STRICMP], [
4278*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
4279*6236dae4SAndroid Build Coastguard Worker  #
4280*6236dae4SAndroid Build Coastguard Worker  tst_links_stricmp="unknown"
4281*6236dae4SAndroid Build Coastguard Worker  tst_proto_stricmp="unknown"
4282*6236dae4SAndroid Build Coastguard Worker  tst_compi_stricmp="unknown"
4283*6236dae4SAndroid Build Coastguard Worker  tst_allow_stricmp="unknown"
4284*6236dae4SAndroid Build Coastguard Worker  #
4285*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if stricmp can be linked])
4286*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
4287*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([stricmp])
4288*6236dae4SAndroid Build Coastguard Worker  ],[
4289*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
4290*6236dae4SAndroid Build Coastguard Worker    tst_links_stricmp="yes"
4291*6236dae4SAndroid Build Coastguard Worker  ],[
4292*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4293*6236dae4SAndroid Build Coastguard Worker    tst_links_stricmp="no"
4294*6236dae4SAndroid Build Coastguard Worker  ])
4295*6236dae4SAndroid Build Coastguard Worker  #
4296*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_stricmp" = "yes"; then
4297*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if stricmp is prototyped])
4298*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([stricmp],[
4299*6236dae4SAndroid Build Coastguard Worker      $curl_includes_string
4300*6236dae4SAndroid Build Coastguard Worker    ],[
4301*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4302*6236dae4SAndroid Build Coastguard Worker      tst_proto_stricmp="yes"
4303*6236dae4SAndroid Build Coastguard Worker    ],[
4304*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4305*6236dae4SAndroid Build Coastguard Worker      tst_proto_stricmp="no"
4306*6236dae4SAndroid Build Coastguard Worker    ])
4307*6236dae4SAndroid Build Coastguard Worker  fi
4308*6236dae4SAndroid Build Coastguard Worker  #
4309*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_stricmp" = "yes"; then
4310*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if stricmp is compilable])
4311*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
4312*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
4313*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
4314*6236dae4SAndroid Build Coastguard Worker      ]],[[
4315*6236dae4SAndroid Build Coastguard Worker        if(0 != stricmp(0, 0))
4316*6236dae4SAndroid Build Coastguard Worker          return 1;
4317*6236dae4SAndroid Build Coastguard Worker      ]])
4318*6236dae4SAndroid Build Coastguard Worker    ],[
4319*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4320*6236dae4SAndroid Build Coastguard Worker      tst_compi_stricmp="yes"
4321*6236dae4SAndroid Build Coastguard Worker    ],[
4322*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4323*6236dae4SAndroid Build Coastguard Worker      tst_compi_stricmp="no"
4324*6236dae4SAndroid Build Coastguard Worker    ])
4325*6236dae4SAndroid Build Coastguard Worker  fi
4326*6236dae4SAndroid Build Coastguard Worker  #
4327*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_stricmp" = "yes"; then
4328*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if stricmp usage allowed])
4329*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_stricmp" != "xyes"; then
4330*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4331*6236dae4SAndroid Build Coastguard Worker      tst_allow_stricmp="yes"
4332*6236dae4SAndroid Build Coastguard Worker    else
4333*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4334*6236dae4SAndroid Build Coastguard Worker      tst_allow_stricmp="no"
4335*6236dae4SAndroid Build Coastguard Worker    fi
4336*6236dae4SAndroid Build Coastguard Worker  fi
4337*6236dae4SAndroid Build Coastguard Worker  #
4338*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if stricmp might be used])
4339*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_stricmp" = "yes" &&
4340*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_stricmp" = "yes" &&
4341*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_stricmp" = "yes" &&
4342*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_stricmp" = "yes"; then
4343*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
4344*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_STRICMP, 1,
4345*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the stricmp function.])
4346*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_stricmp="yes"
4347*6236dae4SAndroid Build Coastguard Worker  else
4348*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4349*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_stricmp="no"
4350*6236dae4SAndroid Build Coastguard Worker  fi
4351*6236dae4SAndroid Build Coastguard Worker])
4352*6236dae4SAndroid Build Coastguard Worker
4353*6236dae4SAndroid Build Coastguard Worker
4354*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_STRTOK_R
4355*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
4356*6236dae4SAndroid Build Coastguard Workerdnl Verify if strtok_r is available, prototyped, and
4357*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
4358*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
4359*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_strtok_r, then
4360*6236dae4SAndroid Build Coastguard Workerdnl HAVE_STRTOK_R will be defined.
4361*6236dae4SAndroid Build Coastguard Worker
4362*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_STRTOK_R], [
4363*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
4364*6236dae4SAndroid Build Coastguard Worker  #
4365*6236dae4SAndroid Build Coastguard Worker  tst_links_strtok_r="unknown"
4366*6236dae4SAndroid Build Coastguard Worker  tst_proto_strtok_r="unknown"
4367*6236dae4SAndroid Build Coastguard Worker  tst_compi_strtok_r="unknown"
4368*6236dae4SAndroid Build Coastguard Worker  tst_allow_strtok_r="unknown"
4369*6236dae4SAndroid Build Coastguard Worker  #
4370*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strtok_r can be linked])
4371*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
4372*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([strtok_r])
4373*6236dae4SAndroid Build Coastguard Worker  ],[
4374*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
4375*6236dae4SAndroid Build Coastguard Worker    tst_links_strtok_r="yes"
4376*6236dae4SAndroid Build Coastguard Worker  ],[
4377*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4378*6236dae4SAndroid Build Coastguard Worker    tst_links_strtok_r="no"
4379*6236dae4SAndroid Build Coastguard Worker  ])
4380*6236dae4SAndroid Build Coastguard Worker  #
4381*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strtok_r" = "yes"; then
4382*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strtok_r is prototyped])
4383*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([strtok_r],[
4384*6236dae4SAndroid Build Coastguard Worker      $curl_includes_string
4385*6236dae4SAndroid Build Coastguard Worker    ],[
4386*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4387*6236dae4SAndroid Build Coastguard Worker      tst_proto_strtok_r="yes"
4388*6236dae4SAndroid Build Coastguard Worker    ],[
4389*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4390*6236dae4SAndroid Build Coastguard Worker      tst_proto_strtok_r="no"
4391*6236dae4SAndroid Build Coastguard Worker    ])
4392*6236dae4SAndroid Build Coastguard Worker  fi
4393*6236dae4SAndroid Build Coastguard Worker  #
4394*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_strtok_r" = "yes"; then
4395*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strtok_r is compilable])
4396*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
4397*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
4398*6236dae4SAndroid Build Coastguard Worker        $curl_includes_string
4399*6236dae4SAndroid Build Coastguard Worker      ]],[[
4400*6236dae4SAndroid Build Coastguard Worker        if(0 != strtok_r(0, 0, 0))
4401*6236dae4SAndroid Build Coastguard Worker          return 1;
4402*6236dae4SAndroid Build Coastguard Worker      ]])
4403*6236dae4SAndroid Build Coastguard Worker    ],[
4404*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4405*6236dae4SAndroid Build Coastguard Worker      tst_compi_strtok_r="yes"
4406*6236dae4SAndroid Build Coastguard Worker    ],[
4407*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4408*6236dae4SAndroid Build Coastguard Worker      tst_compi_strtok_r="no"
4409*6236dae4SAndroid Build Coastguard Worker    ])
4410*6236dae4SAndroid Build Coastguard Worker  fi
4411*6236dae4SAndroid Build Coastguard Worker  #
4412*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_strtok_r" = "yes"; then
4413*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strtok_r usage allowed])
4414*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_strtok_r" != "xyes"; then
4415*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4416*6236dae4SAndroid Build Coastguard Worker      tst_allow_strtok_r="yes"
4417*6236dae4SAndroid Build Coastguard Worker    else
4418*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4419*6236dae4SAndroid Build Coastguard Worker      tst_allow_strtok_r="no"
4420*6236dae4SAndroid Build Coastguard Worker    fi
4421*6236dae4SAndroid Build Coastguard Worker  fi
4422*6236dae4SAndroid Build Coastguard Worker  #
4423*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strtok_r might be used])
4424*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strtok_r" = "yes" &&
4425*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_strtok_r" = "yes" &&
4426*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_strtok_r" = "yes" &&
4427*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_strtok_r" = "yes"; then
4428*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
4429*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_STRTOK_R, 1,
4430*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the strtok_r function.])
4431*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strtok_r="yes"
4432*6236dae4SAndroid Build Coastguard Worker  else
4433*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4434*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strtok_r="no"
4435*6236dae4SAndroid Build Coastguard Worker  fi
4436*6236dae4SAndroid Build Coastguard Worker])
4437*6236dae4SAndroid Build Coastguard Worker
4438*6236dae4SAndroid Build Coastguard Worker
4439*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_FUNC_STRTOLL
4440*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
4441*6236dae4SAndroid Build Coastguard Workerdnl Verify if strtoll is available, prototyped, and
4442*6236dae4SAndroid Build Coastguard Workerdnl can be compiled. If all of these are true, and
4443*6236dae4SAndroid Build Coastguard Workerdnl usage has not been previously disallowed with
4444*6236dae4SAndroid Build Coastguard Workerdnl shell variable curl_disallow_strtoll, then
4445*6236dae4SAndroid Build Coastguard Workerdnl HAVE_STRTOLL will be defined.
4446*6236dae4SAndroid Build Coastguard Worker
4447*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_FUNC_STRTOLL], [
4448*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
4449*6236dae4SAndroid Build Coastguard Worker  #
4450*6236dae4SAndroid Build Coastguard Worker  tst_links_strtoll="unknown"
4451*6236dae4SAndroid Build Coastguard Worker  tst_proto_strtoll="unknown"
4452*6236dae4SAndroid Build Coastguard Worker  tst_compi_strtoll="unknown"
4453*6236dae4SAndroid Build Coastguard Worker  tst_allow_strtoll="unknown"
4454*6236dae4SAndroid Build Coastguard Worker  #
4455*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strtoll can be linked])
4456*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
4457*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([strtoll])
4458*6236dae4SAndroid Build Coastguard Worker  ],[
4459*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
4460*6236dae4SAndroid Build Coastguard Worker    tst_links_strtoll="yes"
4461*6236dae4SAndroid Build Coastguard Worker  ],[
4462*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4463*6236dae4SAndroid Build Coastguard Worker    tst_links_strtoll="no"
4464*6236dae4SAndroid Build Coastguard Worker  ])
4465*6236dae4SAndroid Build Coastguard Worker  #
4466*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strtoll" = "yes"; then
4467*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strtoll is prototyped])
4468*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([strtoll],[
4469*6236dae4SAndroid Build Coastguard Worker      $curl_includes_stdlib
4470*6236dae4SAndroid Build Coastguard Worker    ],[
4471*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4472*6236dae4SAndroid Build Coastguard Worker      tst_proto_strtoll="yes"
4473*6236dae4SAndroid Build Coastguard Worker    ],[
4474*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4475*6236dae4SAndroid Build Coastguard Worker      tst_proto_strtoll="no"
4476*6236dae4SAndroid Build Coastguard Worker    ])
4477*6236dae4SAndroid Build Coastguard Worker  fi
4478*6236dae4SAndroid Build Coastguard Worker  #
4479*6236dae4SAndroid Build Coastguard Worker  if test "$tst_proto_strtoll" = "yes"; then
4480*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strtoll is compilable])
4481*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
4482*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
4483*6236dae4SAndroid Build Coastguard Worker        $curl_includes_stdlib
4484*6236dae4SAndroid Build Coastguard Worker      ]],[[
4485*6236dae4SAndroid Build Coastguard Worker        if(0 != strtoll(0, 0, 0))
4486*6236dae4SAndroid Build Coastguard Worker          return 1;
4487*6236dae4SAndroid Build Coastguard Worker      ]])
4488*6236dae4SAndroid Build Coastguard Worker    ],[
4489*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4490*6236dae4SAndroid Build Coastguard Worker      tst_compi_strtoll="yes"
4491*6236dae4SAndroid Build Coastguard Worker    ],[
4492*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4493*6236dae4SAndroid Build Coastguard Worker      tst_compi_strtoll="no"
4494*6236dae4SAndroid Build Coastguard Worker    ])
4495*6236dae4SAndroid Build Coastguard Worker  fi
4496*6236dae4SAndroid Build Coastguard Worker  #
4497*6236dae4SAndroid Build Coastguard Worker  if test "$tst_compi_strtoll" = "yes"; then
4498*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if strtoll usage allowed])
4499*6236dae4SAndroid Build Coastguard Worker    if test "x$curl_disallow_strtoll" != "xyes"; then
4500*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4501*6236dae4SAndroid Build Coastguard Worker      tst_allow_strtoll="yes"
4502*6236dae4SAndroid Build Coastguard Worker    else
4503*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4504*6236dae4SAndroid Build Coastguard Worker      tst_allow_strtoll="no"
4505*6236dae4SAndroid Build Coastguard Worker    fi
4506*6236dae4SAndroid Build Coastguard Worker  fi
4507*6236dae4SAndroid Build Coastguard Worker  #
4508*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if strtoll might be used])
4509*6236dae4SAndroid Build Coastguard Worker  if test "$tst_links_strtoll" = "yes" &&
4510*6236dae4SAndroid Build Coastguard Worker     test "$tst_proto_strtoll" = "yes" &&
4511*6236dae4SAndroid Build Coastguard Worker     test "$tst_compi_strtoll" = "yes" &&
4512*6236dae4SAndroid Build Coastguard Worker     test "$tst_allow_strtoll" = "yes"; then
4513*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
4514*6236dae4SAndroid Build Coastguard Worker    AC_DEFINE_UNQUOTED(HAVE_STRTOLL, 1,
4515*6236dae4SAndroid Build Coastguard Worker      [Define to 1 if you have the strtoll function.])
4516*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strtoll="yes"
4517*6236dae4SAndroid Build Coastguard Worker  else
4518*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
4519*6236dae4SAndroid Build Coastguard Worker    curl_cv_func_strtoll="no"
4520*6236dae4SAndroid Build Coastguard Worker  fi
4521*6236dae4SAndroid Build Coastguard Worker])
4522*6236dae4SAndroid Build Coastguard Worker
4523*6236dae4SAndroid Build Coastguard Workerdnl CURL_RUN_IFELSE
4524*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
4525*6236dae4SAndroid Build Coastguard Workerdnl Wrapper macro to use instead of AC_RUN_IFELSE. It
4526*6236dae4SAndroid Build Coastguard Workerdnl sets LD_LIBRARY_PATH locally for this run only, from the
4527*6236dae4SAndroid Build Coastguard Workerdnl CURL_LIBRARY_PATH variable. It keeps the LD_LIBRARY_PATH
4528*6236dae4SAndroid Build Coastguard Workerdnl changes contained within this macro.
4529*6236dae4SAndroid Build Coastguard Worker
4530*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_RUN_IFELSE], [
4531*6236dae4SAndroid Build Coastguard Worker  case $host in
4532*6236dae4SAndroid Build Coastguard Worker    *-apple-*)
4533*6236dae4SAndroid Build Coastguard Worker      AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
4534*6236dae4SAndroid Build Coastguard Worker      ;;
4535*6236dae4SAndroid Build Coastguard Worker    *)
4536*6236dae4SAndroid Build Coastguard Worker      oldcc=$CC
4537*6236dae4SAndroid Build Coastguard Worker      old=$LD_LIBRARY_PATH
4538*6236dae4SAndroid Build Coastguard Worker      CC="sh ./run-compiler"
4539*6236dae4SAndroid Build Coastguard Worker      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
4540*6236dae4SAndroid Build Coastguard Worker      export LD_LIBRARY_PATH
4541*6236dae4SAndroid Build Coastguard Worker      AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
4542*6236dae4SAndroid Build Coastguard Worker      LD_LIBRARY_PATH=$old # restore
4543*6236dae4SAndroid Build Coastguard Worker      CC=$oldcc
4544*6236dae4SAndroid Build Coastguard Worker      ;;
4545*6236dae4SAndroid Build Coastguard Worker  esac
4546*6236dae4SAndroid Build Coastguard Worker])
4547*6236dae4SAndroid Build Coastguard Worker
4548*6236dae4SAndroid Build Coastguard Workerdnl CURL_COVERAGE
4549*6236dae4SAndroid Build Coastguard Workerdnl --------------------------------------------------
4550*6236dae4SAndroid Build Coastguard Workerdnl Switch on options and libs to build with gcc's code coverage.
4551*6236dae4SAndroid Build Coastguard Workerdnl
4552*6236dae4SAndroid Build Coastguard Worker
4553*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_COVERAGE],[
4554*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([AC_PROG_SED])
4555*6236dae4SAndroid Build Coastguard Worker  AC_REQUIRE([AC_ARG_ENABLE])
4556*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([for code coverage support])
4557*6236dae4SAndroid Build Coastguard Worker  coverage="no"
4558*6236dae4SAndroid Build Coastguard Worker  curl_coverage_msg="disabled"
4559*6236dae4SAndroid Build Coastguard Worker
4560*6236dae4SAndroid Build Coastguard Worker  dnl check if enabled by argument
4561*6236dae4SAndroid Build Coastguard Worker  AC_ARG_ENABLE(code-coverage,
4562*6236dae4SAndroid Build Coastguard Worker    AS_HELP_STRING([--enable-code-coverage], [Provide code coverage]),
4563*6236dae4SAndroid Build Coastguard Worker    coverage="$enableval")
4564*6236dae4SAndroid Build Coastguard Worker
4565*6236dae4SAndroid Build Coastguard Worker  dnl if not gcc switch off again
4566*6236dae4SAndroid Build Coastguard Worker  AS_IF([ test "$GCC" != "yes" ], coverage="no" )
4567*6236dae4SAndroid Build Coastguard Worker  AC_MSG_RESULT($coverage)
4568*6236dae4SAndroid Build Coastguard Worker
4569*6236dae4SAndroid Build Coastguard Worker  if test "x$coverage" = "xyes"; then
4570*6236dae4SAndroid Build Coastguard Worker    curl_coverage_msg="enabled"
4571*6236dae4SAndroid Build Coastguard Worker
4572*6236dae4SAndroid Build Coastguard Worker    AC_CHECK_TOOL([GCOV], [gcov], [gcov])
4573*6236dae4SAndroid Build Coastguard Worker    if test -z "$GCOV"; then
4574*6236dae4SAndroid Build Coastguard Worker      AC_MSG_ERROR([needs gcov for code coverage])
4575*6236dae4SAndroid Build Coastguard Worker    fi
4576*6236dae4SAndroid Build Coastguard Worker    AC_CHECK_PROG([LCOV], [lcov], [lcov])
4577*6236dae4SAndroid Build Coastguard Worker    if test -z "$LCOV"; then
4578*6236dae4SAndroid Build Coastguard Worker      AC_MSG_ERROR([needs lcov for code coverage])
4579*6236dae4SAndroid Build Coastguard Worker    fi
4580*6236dae4SAndroid Build Coastguard Worker
4581*6236dae4SAndroid Build Coastguard Worker    CPPFLAGS="$CPPFLAGS -DNDEBUG"
4582*6236dae4SAndroid Build Coastguard Worker    CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage"
4583*6236dae4SAndroid Build Coastguard Worker    LIBS="$LIBS -lgcov"
4584*6236dae4SAndroid Build Coastguard Worker  fi
4585*6236dae4SAndroid Build Coastguard Worker])
4586*6236dae4SAndroid Build Coastguard Worker
4587*6236dae4SAndroid Build Coastguard Workerdnl CURL_ATOMIC
4588*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------------------
4589*6236dae4SAndroid Build Coastguard Workerdnl Check if _Atomic works. But only check if stdatomic.h exists.
4590*6236dae4SAndroid Build Coastguard Workerdnl
4591*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_ATOMIC],[
4592*6236dae4SAndroid Build Coastguard Worker  AC_CHECK_HEADERS(stdatomic.h, [
4593*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if _Atomic is available])
4594*6236dae4SAndroid Build Coastguard Worker    AC_LINK_IFELSE([
4595*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
4596*6236dae4SAndroid Build Coastguard Worker        $curl_includes_unistd
4597*6236dae4SAndroid Build Coastguard Worker      ]],[[
4598*6236dae4SAndroid Build Coastguard Worker        _Atomic int i = 0;
4599*6236dae4SAndroid Build Coastguard Worker        i = 4;  // Force an atomic-write operation.
4600*6236dae4SAndroid Build Coastguard Worker      ]])
4601*6236dae4SAndroid Build Coastguard Worker    ],[
4602*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
4603*6236dae4SAndroid Build Coastguard Worker      AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
4604*6236dae4SAndroid Build Coastguard Worker        [Define to 1 if you have _Atomic support.])
4605*6236dae4SAndroid Build Coastguard Worker      tst_atomic="yes"
4606*6236dae4SAndroid Build Coastguard Worker    ],[
4607*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
4608*6236dae4SAndroid Build Coastguard Worker      tst_atomic="no"
4609*6236dae4SAndroid Build Coastguard Worker    ])
4610*6236dae4SAndroid Build Coastguard Worker  ])
4611*6236dae4SAndroid Build Coastguard Worker])
4612*6236dae4SAndroid Build Coastguard Worker
4613*6236dae4SAndroid Build Coastguard Worker# Rewrite inspired by the functionality once provided by
4614*6236dae4SAndroid Build Coastguard Worker# AX_COMPILE_CHECK_SIZEOF. Uses the switch() "trick" to find the size of the
4615*6236dae4SAndroid Build Coastguard Worker# given type.
4616*6236dae4SAndroid Build Coastguard Worker#
4617*6236dae4SAndroid Build Coastguard Worker# This code fails to compile:
4618*6236dae4SAndroid Build Coastguard Worker#
4619*6236dae4SAndroid Build Coastguard Worker#   switch() { case 0: case 0: }
4620*6236dae4SAndroid Build Coastguard Worker#
4621*6236dae4SAndroid Build Coastguard Worker# By making the second case number a boolean check, it fails to compile the
4622*6236dae4SAndroid Build Coastguard Worker# test code when the boolean is false and thus creating a zero, making it a
4623*6236dae4SAndroid Build Coastguard Worker# duplicated case label. If the boolean equals true, it becomes a one, the
4624*6236dae4SAndroid Build Coastguard Worker# code compiles and we know it was a match.
4625*6236dae4SAndroid Build Coastguard Worker#
4626*6236dae4SAndroid Build Coastguard Worker# The check iterates over all possible sizes and stops as soon it compiles
4627*6236dae4SAndroid Build Coastguard Worker# error-free.
4628*6236dae4SAndroid Build Coastguard Worker#
4629*6236dae4SAndroid Build Coastguard Worker# Usage:
4630*6236dae4SAndroid Build Coastguard Worker#
4631*6236dae4SAndroid Build Coastguard Worker#   CURL_SIZEOF(TYPE, [HEADERS])
4632*6236dae4SAndroid Build Coastguard Worker#
4633*6236dae4SAndroid Build Coastguard Worker
4634*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_SIZEOF], [
4635*6236dae4SAndroid Build Coastguard Worker  dnl The #define name to make autoheader put the name in curl_config.h.in
4636*6236dae4SAndroid Build Coastguard Worker  define(TYPE, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
4637*6236dae4SAndroid Build Coastguard Worker
4638*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING(size of $1)
4639*6236dae4SAndroid Build Coastguard Worker  r=0
4640*6236dae4SAndroid Build Coastguard Worker  dnl Check the sizes in a reasonable order
4641*6236dae4SAndroid Build Coastguard Worker  for typesize in 8 4 2 16 1; do
4642*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4643*6236dae4SAndroid Build Coastguard Worker#include <sys/types.h>
4644*6236dae4SAndroid Build Coastguard Worker$2
4645*6236dae4SAndroid Build Coastguard Worker]],
4646*6236dae4SAndroid Build Coastguard Worker    [switch(0) {
4647*6236dae4SAndroid Build Coastguard Worker      case 0:
4648*6236dae4SAndroid Build Coastguard Worker      case (sizeof($1) == $typesize):;
4649*6236dae4SAndroid Build Coastguard Worker    }
4650*6236dae4SAndroid Build Coastguard Worker    ]) ],
4651*6236dae4SAndroid Build Coastguard Worker      [
4652*6236dae4SAndroid Build Coastguard Worker        r=$typesize],
4653*6236dae4SAndroid Build Coastguard Worker      [
4654*6236dae4SAndroid Build Coastguard Worker        r=0])
4655*6236dae4SAndroid Build Coastguard Worker    dnl get out of the loop once matched
4656*6236dae4SAndroid Build Coastguard Worker    if test $r -gt 0; then
4657*6236dae4SAndroid Build Coastguard Worker      break;
4658*6236dae4SAndroid Build Coastguard Worker    fi
4659*6236dae4SAndroid Build Coastguard Worker  done
4660*6236dae4SAndroid Build Coastguard Worker  if test $r -eq 0; then
4661*6236dae4SAndroid Build Coastguard Worker    AC_MSG_ERROR([Failed to find size of $1])
4662*6236dae4SAndroid Build Coastguard Worker  fi
4663*6236dae4SAndroid Build Coastguard Worker  AC_MSG_RESULT($r)
4664*6236dae4SAndroid Build Coastguard Worker  dnl lowercase and underscore instead of space
4665*6236dae4SAndroid Build Coastguard Worker  tname=`echo "ac_cv_sizeof_$1" | tr A-Z a-z | tr " " "_"`
4666*6236dae4SAndroid Build Coastguard Worker  eval "$tname=$r"
4667*6236dae4SAndroid Build Coastguard Worker
4668*6236dae4SAndroid Build Coastguard Worker  AC_DEFINE_UNQUOTED(TYPE, [$r], [Size of $1 in number of bytes])
4669*6236dae4SAndroid Build Coastguard Worker
4670*6236dae4SAndroid Build Coastguard Worker])
4671