1e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET/*************************************************************************** 2e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * _ _ ____ _ 3e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * Project ___| | | | _ \| | 4e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * / __| | | | |_) | | 5e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * | (__| |_| | _ <| |___ 6e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * \___|\___/|_| \_\_____| 7e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 8e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. 9e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 10e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * This software is licensed as described in the file COPYING, which 11e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * you should have received as part of this distribution. The terms 12e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * are also available at http://curl.haxx.se/docs/copyright.html. 13e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 14e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * You may opt to use, copy, modify, merge, publish, distribute and/or sell 15e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * copies of the Software, and permit persons to whom the Software is 16e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * furnished to do so, under the terms of the COPYING file. 17e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 18e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * KIND, either express or implied. 20e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 21e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ***************************************************************************/ 229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef TIME_WITH_SYS_TIME 239bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* Time with sys/time test */ 249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 259bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 269bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/time.h> 279bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <time.h> 289bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 299bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 309bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 319bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 329bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsif ((struct tm *) 0) 339bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsreturn 0; 349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 369bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 379bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 389bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 399bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 409bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_FCNTL_O_NONBLOCK 419bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 429bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* headers for FCNTL_O_NONBLOCK test */ 439bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 449bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <unistd.h> 459bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <fcntl.h> 469bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* */ 479bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#if defined(sun) || defined(__sun__) || \ 489bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels defined(__SUNPRO_C) || defined(__SUNPRO_CC) 499bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# if defined(__SVR4) || defined(__srv4__) 509bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# define PLATFORM_SOLARIS 519bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# else 529bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# define PLATFORM_SUNOS4 539bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 549bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 559bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41) 569bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# define PLATFORM_AIX_V3 579bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 589bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* */ 599bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__) 609bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#error "O_NONBLOCK does not work on this platform" 619bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 629bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 639bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 649bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 659bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 669bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels /* O_NONBLOCK source test */ 679bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels int flags = 0; 689bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK)) 699bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 1; 709bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 719bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 729bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 739bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 74e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET/* tests for gethostbyaddr_r or gethostbyname_r */ 75e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#if defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) || \ 76e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) || \ 77e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) || \ 78e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \ 79e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \ 80e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) 81e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# define _REENTRANT 82e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET /* no idea whether _REENTRANT is always set, just invent a new flag */ 83e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# define TEST_GETHOSTBYFOO_REENTRANT 84e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#endif 85e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#if defined(HAVE_GETHOSTBYADDR_R_5) || \ 86e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_7) || \ 87e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_8) || \ 88e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_3) || \ 89e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_5) || \ 90e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_6) || \ 91e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(TEST_GETHOSTBYFOO_REENTRANT) 929bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 939bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <netdb.h> 94e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETint main(void) 95e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET{ 96e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET char *address = "example.com"; 97e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET int length = 0; 98e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET int type = 0; 99e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET struct hostent h; 100e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET int rc = 0; 101e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#if defined(HAVE_GETHOSTBYADDR_R_5) || \ 102e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) || \ 103e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET \ 104e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_3) || \ 105e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) 106e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET struct hostent_data hdata; 107e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#elif defined(HAVE_GETHOSTBYADDR_R_7) || \ 108e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) || \ 109e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_8) || \ 110e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) || \ 111e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET \ 112e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_5) || \ 113e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \ 114e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_6) || \ 115e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) 116e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET char buffer[8192]; 117e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET int h_errnop; 118e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET struct hostent *hp; 1199bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1209bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 1219bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifndef gethostbyaddr_r 1229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels (void)gethostbyaddr_r; 1239bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 125e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#if defined(HAVE_GETHOSTBYADDR_R_5) || \ 126e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) 127e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rc = gethostbyaddr_r(address, length, type, &h, &hdata); 128e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#elif defined(HAVE_GETHOSTBYADDR_R_7) || \ 129e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) 130e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET hp = gethostbyaddr_r(address, length, type, &h, buffer, 8192, &h_errnop); 131e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET (void)hp; 132e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#elif defined(HAVE_GETHOSTBYADDR_R_8) || \ 133e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) 134e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rc = gethostbyaddr_r(address, length, type, &h, buffer, 8192, &hp, &h_errnop); 1359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1369bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 137e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#if defined(HAVE_GETHOSTBYNAME_R_3) || \ 138e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) 139e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rc = gethostbyname_r(address, &h, &hdata); 140e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#elif defined(HAVE_GETHOSTBYNAME_R_5) || \ 141e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) 142e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rc = gethostbyname_r(address, &h, buffer, 8192, 0, &h_errnop); 143e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET (void)hp; /* not used for test */ 144e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#elif defined(HAVE_GETHOSTBYNAME_R_6) || \ 145e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) 146e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop); 1479bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1489bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 149e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET (void)length; 150e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET (void)type; 151e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET (void)rc; 1529bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 1539bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 1549bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1559bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 1569bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SOCKLEN_T 1579bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef _WIN32 1589bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <ws2tcpip.h> 1599bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#else 1609bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 1619bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/socket.h> 1629bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1639bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 1649bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 1659bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 1669bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsif ((socklen_t *) 0) 1679bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 1689bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsif (sizeof (socklen_t)) 1699bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 1709bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 1719bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 1729bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 1739bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1749bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_IN_ADDR_T 1759bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 1769bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/socket.h> 1779bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <arpa/inet.h> 1789bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 1799bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 1809bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 1819bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 1829bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsif ((in_addr_t *) 0) 1839bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 1849bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsif (sizeof (in_addr_t)) 1859bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 1869bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 1879bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 1889bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 1899bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1909bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 1919bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_BOOL_T 1929bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_TYPES_H 1939bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 1949bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1959bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_STDBOOL_H 1969bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <stdbool.h> 1979bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 1989bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 1999bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 2009bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 2019bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsif (sizeof (bool *) ) 2029bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 2039bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 2049bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 2059bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 2069bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2079bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2089bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef STDC_HEADERS 2099bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <stdlib.h> 2109bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <stdarg.h> 2119bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <string.h> 2129bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <float.h> 2139bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint main() { return 0; } 2149bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2159bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef RETSIGTYPE_TEST 2169bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 2179bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <signal.h> 2189bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef signal 2199bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# undef signal 2209bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2219bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef __cplusplus 2229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsextern "C" void (*signal (int, void (*)(int)))(int); 2239bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#else 2249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsvoid (*signal ()) (); 2259bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2269bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2279bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 2289bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 2299bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 2309bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 2319bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 2329bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2339bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_INET_NTOA_R_DECL 2349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <arpa/inet.h> 2359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2369bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelstypedef void (*func_type)(); 2379bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2389bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint main() 2399bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 2409bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifndef inet_ntoa_r 2419bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels func_type func; 2429bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels func = (func_type)inet_ntoa_r; 2439bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2449bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 2459bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 2469bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2479bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_INET_NTOA_R_DECL_REENTRANT 2489bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#define _REENTRANT 2499bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <arpa/inet.h> 2509bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2519bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelstypedef void (*func_type)(); 2529bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2539bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint main() 2549bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 2559bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifndef inet_ntoa_r 2569bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels func_type func; 2579bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels func = (func_type)&inet_ntoa_r; 2589bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2599bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 2609bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 2619bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2629bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_GETADDRINFO 2639bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <netdb.h> 2649bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 2659bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/socket.h> 2669bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2679bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint main(void) { 2689bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels struct addrinfo hints, *ai; 2699bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels int error; 2709bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2719bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels memset(&hints, 0, sizeof(hints)); 2729bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels hints.ai_family = AF_UNSPEC; 2739bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels hints.ai_socktype = SOCK_STREAM; 2749bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifndef getaddrinfo 2759bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels (void)getaddrinfo; 2769bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2779bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels error = getaddrinfo("127.0.0.1", "8080", &hints, &ai); 2789bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if (error) { 2799bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 1; 2809bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels } 2819bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 2829bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 2839bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2849bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_FILE_OFFSET_BITS 2859bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef _FILE_OFFSET_BITS 2869bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#undef _FILE_OFFSET_BITS 2879bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 2889bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#define _FILE_OFFSET_BITS 64 2899bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <sys/types.h> 2909bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels /* Check that off_t can represent 2**63 - 1 correctly. 2919bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels We can't simply define LARGE_OFF_T to be 9223372036854775807, 2929bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels since some C++ compilers masquerading as C compilers 2939bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels incorrectly reject 9223372036854775807. */ 2949bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) 2959bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 2969bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels && LARGE_OFF_T % 2147483647 == 1) 2979bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ? 1 : -1]; 2989bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint main () { ; return 0; } 2999bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 3009bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_IOCTLSOCKET 3019bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes start */ 3029bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_WINDOWS_H 3039bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifndef WIN32_LEAN_AND_MEAN 3049bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# define WIN32_LEAN_AND_MEAN 3059bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3069bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <windows.h> 3079bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK2_H 3089bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock2.h> 3099bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# else 3109bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK_H 3119bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock.h> 3129bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3139bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3149bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 3159bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3169bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 3179bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 3189bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 3199bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3209bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* ioctlsocket source code */ 3219bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels int socket; 3229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels unsigned long flags = ioctlsocket(socket, FIONBIO, &flags); 3239bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 3259bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 3269bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 3279bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3289bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 3299bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_IOCTLSOCKET_CAMEL 3309bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes start */ 3319bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_WINDOWS_H 3329bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifndef WIN32_LEAN_AND_MEAN 3339bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# define WIN32_LEAN_AND_MEAN 3349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <windows.h> 3369bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK2_H 3379bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock2.h> 3389bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# else 3399bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK_H 3409bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock.h> 3419bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3429bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3439bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 3449bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3459bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 3469bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 3479bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 3489bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3499bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* IoctlSocket source code */ 3509bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(0 != IoctlSocket(0, 0, 0)) 3519bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 1; 3529bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 3539bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 3549bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 3559bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 3569bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_IOCTLSOCKET_CAMEL_FIONBIO 3579bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes start */ 3589bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_WINDOWS_H 3599bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifndef WIN32_LEAN_AND_MEAN 3609bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# define WIN32_LEAN_AND_MEAN 3619bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3629bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <windows.h> 3639bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK2_H 3649bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock2.h> 3659bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# else 3669bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK_H 3679bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock.h> 3689bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3699bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3709bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 3719bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3729bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 3739bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 3749bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 3759bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3769bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* IoctlSocket source code */ 3779bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels long flags = 0; 3789bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(0 != ioctlsocket(0, FIONBIO, &flags)) 3799bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 1; 3809bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 3819bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 3829bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 3839bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 3849bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_IOCTLSOCKET_FIONBIO 3859bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes start */ 3869bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_WINDOWS_H 3879bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifndef WIN32_LEAN_AND_MEAN 3889bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# define WIN32_LEAN_AND_MEAN 3899bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3909bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <windows.h> 3919bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK2_H 3929bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock2.h> 3939bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# else 3949bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK_H 3959bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock.h> 3969bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3979bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 3989bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 3999bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4009bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 4019bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 4029bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 4039bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4049bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels int flags = 0; 4059bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(0 != ioctlsocket(0, FIONBIO, &flags)) 4069bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 1; 4079bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4089bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 4099bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 4109bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 4119bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4129bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_IOCTL_FIONBIO 4139bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* headers for FIONBIO test */ 4149bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes start */ 4159bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_TYPES_H 4169bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <sys/types.h> 4179bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4189bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_UNISTD_H 4199bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <unistd.h> 4209bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4219bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_SOCKET_H 4229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <sys/socket.h> 4239bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_IOCTL_H 4259bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <sys/ioctl.h> 4269bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4279bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_STROPTS_H 4289bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <stropts.h> 4299bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4309bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4319bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 4329bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 4339bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 4349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels int flags = 0; 4369bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(0 != ioctl(0, FIONBIO, &flags)) 4379bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 1; 4389bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4399bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 4409bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 4419bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 4429bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4439bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_IOCTL_SIOCGIFADDR 4449bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* headers for FIONBIO test */ 4459bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes start */ 4469bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_TYPES_H 4479bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <sys/types.h> 4489bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4499bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_UNISTD_H 4509bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <unistd.h> 4519bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4529bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_SOCKET_H 4539bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <sys/socket.h> 4549bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4559bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_IOCTL_H 4569bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <sys/ioctl.h> 4579bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4589bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_STROPTS_H 4599bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <stropts.h> 4609bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4619bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <net/if.h> 4629bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4639bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 4649bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 4659bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 4669bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels struct ifreq ifr; 4679bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(0 != ioctl(0, SIOCGIFADDR, &ifr)) 4689bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 1; 4699bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4709bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 4719bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 4729bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 4739bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4749bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SETSOCKOPT_SO_NONBLOCK 4759bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes start */ 4769bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_WINDOWS_H 4779bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifndef WIN32_LEAN_AND_MEAN 4789bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# define WIN32_LEAN_AND_MEAN 4799bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 4809bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <windows.h> 4819bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK2_H 4829bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock2.h> 4839bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# else 4849bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# ifdef HAVE_WINSOCK_H 4859bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <winsock.h> 4869bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 4879bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# endif 4889bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4899bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes start */ 4909bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_TYPES_H 4919bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <sys/types.h> 4929bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4939bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_SYS_SOCKET_H 4949bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# include <sys/socket.h> 4959bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 4969bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/* includes end */ 4979bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 4989bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 4999bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () 5009bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels{ 5019bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0)) 5029bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 1; 5039bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ; 5049bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 5059bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 5069bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 5079bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_GLIBC_STRERROR_R 5089bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <string.h> 5099bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <errno.h> 5109bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 5119bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () { 5129bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels char buffer[1024]; /* big enough to play with */ 5139bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels char *string = 5149bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels strerror_r(EACCES, buffer, sizeof(buffer)); 5159bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels /* this should've returned a string */ 5169bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(!string || !string[0]) 5179bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 99; 5189bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 5199bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 5209bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 5219bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#ifdef HAVE_POSIX_STRERROR_R 5229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <string.h> 5239bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#include <errno.h> 5249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsint 5259bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsmain () { 5269bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels char buffer[1024]; /* big enough to play with */ 5279bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels int error = 5289bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels strerror_r(EACCES, buffer, sizeof(buffer)); 5299bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels /* This should've returned zero, and written an error string in the 5309bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels buffer.*/ 5319bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels if(!buffer[0] || error) 5329bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 99; 5339bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels return 0; 5349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels} 5359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#endif 536