jpayne@69: #ifndef CURLINC_SYSTEM_H jpayne@69: #define CURLINC_SYSTEM_H jpayne@69: /*************************************************************************** jpayne@69: * _ _ ____ _ jpayne@69: * Project ___| | | | _ \| | jpayne@69: * / __| | | | |_) | | jpayne@69: * | (__| |_| | _ <| |___ jpayne@69: * \___|\___/|_| \_\_____| jpayne@69: * jpayne@69: * Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. jpayne@69: * jpayne@69: * This software is licensed as described in the file COPYING, which jpayne@69: * you should have received as part of this distribution. The terms jpayne@69: * are also available at https://curl.se/docs/copyright.html. jpayne@69: * jpayne@69: * You may opt to use, copy, modify, merge, publish, distribute and/or sell jpayne@69: * copies of the Software, and permit persons to whom the Software is jpayne@69: * furnished to do so, under the terms of the COPYING file. jpayne@69: * jpayne@69: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY jpayne@69: * KIND, either express or implied. jpayne@69: * jpayne@69: * SPDX-License-Identifier: curl jpayne@69: * jpayne@69: ***************************************************************************/ jpayne@69: jpayne@69: /* jpayne@69: * Try to keep one section per platform, compiler and architecture, otherwise, jpayne@69: * if an existing section is reused for a different one and later on the jpayne@69: * original is adjusted, probably the piggybacking one can be adversely jpayne@69: * changed. jpayne@69: * jpayne@69: * In order to differentiate between platforms/compilers/architectures use jpayne@69: * only compiler built in predefined preprocessor symbols. jpayne@69: * jpayne@69: * curl_off_t jpayne@69: * ---------- jpayne@69: * jpayne@69: * For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit jpayne@69: * wide signed integral data type. The width of this data type must remain jpayne@69: * constant and independent of any possible large file support settings. jpayne@69: * jpayne@69: * As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit jpayne@69: * wide signed integral data type if there is no 64-bit type. jpayne@69: * jpayne@69: * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall jpayne@69: * only be violated if off_t is the only 64-bit data type available and the jpayne@69: * size of off_t is independent of large file support settings. Keep your jpayne@69: * build on the safe side avoiding an off_t gating. If you have a 64-bit jpayne@69: * off_t then take for sure that another 64-bit data type exists, dig deeper jpayne@69: * and you will find it. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: #if defined(__DJGPP__) || defined(__GO32__) jpayne@69: # if defined(__DJGPP__) && (__DJGPP__ > 1) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: jpayne@69: #elif defined(__SALFORDC__) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: jpayne@69: #elif defined(__BORLANDC__) jpayne@69: # if (__BORLANDC__ < 0x520) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T __int64 jpayne@69: # define CURL_FORMAT_CURL_OFF_T "I64d" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "I64u" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T i64 jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ui64 jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: jpayne@69: #elif defined(__TURBOC__) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: jpayne@69: #elif defined(__POCC__) jpayne@69: # if (__POCC__ < 280) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # elif defined(_MSC_VER) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T __int64 jpayne@69: # define CURL_FORMAT_CURL_OFF_T "I64d" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "I64u" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T i64 jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ui64 jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: jpayne@69: #elif defined(__LCC__) jpayne@69: # if defined(__MCST__) /* MCST eLbrus Compiler Collection */ jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_SYS_SOCKET_H 1 jpayne@69: # else /* Local (or Little) C Compiler */ jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: # endif jpayne@69: jpayne@69: #elif defined(__SYMBIAN32__) jpayne@69: # if defined(__EABI__) /* Treat all ARM compilers equally */ jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # elif defined(__CW32__) jpayne@69: # pragma longlong on jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # elif defined(__VC32__) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T __int64 jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int jpayne@69: jpayne@69: #elif defined(macintosh) jpayne@69: # include jpayne@69: # if TYPE_LONGLONG jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int jpayne@69: jpayne@69: #elif defined(__TANDEM) jpayne@69: # if ! defined(__LP64) jpayne@69: /* Required for 32-bit NonStop builds only. */ jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: # endif jpayne@69: jpayne@69: #elif defined(_WIN32_WCE) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T __int64 jpayne@69: # define CURL_FORMAT_CURL_OFF_T "I64d" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "I64u" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T i64 jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ui64 jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: jpayne@69: #elif defined(__MINGW32__) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "I64d" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "I64u" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_WS2TCPIP_H 1 jpayne@69: jpayne@69: #elif defined(__VMS) jpayne@69: # if defined(__VAX) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int jpayne@69: jpayne@69: #elif defined(__OS400__) jpayne@69: # if defined(__ILEC400__) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_SYS_SOCKET_H 1 jpayne@69: # endif jpayne@69: jpayne@69: #elif defined(__MVS__) jpayne@69: # if defined(__IBMC__) || defined(__IBMCPP__) jpayne@69: # if defined(_ILP32) jpayne@69: # elif defined(_LP64) jpayne@69: # endif jpayne@69: # if defined(_LONG_LONG) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # elif defined(_LP64) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_SYS_SOCKET_H 1 jpayne@69: # endif jpayne@69: jpayne@69: #elif defined(__370__) jpayne@69: # if defined(__IBMC__) || defined(__IBMCPP__) jpayne@69: # if defined(_ILP32) jpayne@69: # elif defined(_LP64) jpayne@69: # endif jpayne@69: # if defined(_LONG_LONG) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # elif defined(_LP64) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_SYS_SOCKET_H 1 jpayne@69: # endif jpayne@69: jpayne@69: #elif defined(TPF) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: jpayne@69: #elif defined(__TINYC__) /* also known as tcc */ jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_SYS_SOCKET_H 1 jpayne@69: jpayne@69: #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* Oracle Solaris Studio */ jpayne@69: # if !defined(__LP64) && (defined(__ILP32) || \ jpayne@69: defined(__i386) || \ jpayne@69: defined(__sparcv8) || \ jpayne@69: defined(__sparcv8plus)) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # elif defined(__LP64) || \ jpayne@69: defined(__amd64) || defined(__sparcv9) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_SYS_SOCKET_H 1 jpayne@69: jpayne@69: #elif defined(__xlc__) /* IBM xlc compiler */ jpayne@69: # if !defined(_LP64) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_SYS_SOCKET_H 1 jpayne@69: jpayne@69: /* ===================================== */ jpayne@69: /* KEEP MSVC THE PENULTIMATE ENTRY */ jpayne@69: /* ===================================== */ jpayne@69: jpayne@69: #elif defined(_MSC_VER) jpayne@69: # if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T __int64 jpayne@69: # define CURL_FORMAT_CURL_OFF_T "I64d" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "I64u" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T i64 jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ui64 jpayne@69: # else jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: jpayne@69: /* ===================================== */ jpayne@69: /* KEEP GENERIC GCC THE LAST ENTRY */ jpayne@69: /* ===================================== */ jpayne@69: jpayne@69: #elif defined(__GNUC__) && !defined(_SCO_DS) jpayne@69: # if !defined(__LP64__) && \ jpayne@69: (defined(__ILP32__) || defined(__i386__) || defined(__hppa__) || \ jpayne@69: defined(__ppc__) || defined(__powerpc__) || defined(__arm__) || \ jpayne@69: defined(__sparc__) || defined(__mips__) || defined(__sh__) || \ jpayne@69: defined(__XTENSA__) || \ jpayne@69: (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) || \ jpayne@69: (defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L)) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "lld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "llu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T LL jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU ULL jpayne@69: # elif defined(__LP64__) || \ jpayne@69: defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \ jpayne@69: defined(__e2k__) || \ jpayne@69: (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \ jpayne@69: (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L) jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # endif jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t jpayne@69: # define CURL_PULL_SYS_TYPES_H 1 jpayne@69: # define CURL_PULL_SYS_SOCKET_H 1 jpayne@69: jpayne@69: #else jpayne@69: /* generic "safe guess" on old 32 bit style */ jpayne@69: # define CURL_TYPEOF_CURL_OFF_T long jpayne@69: # define CURL_FORMAT_CURL_OFF_T "ld" jpayne@69: # define CURL_FORMAT_CURL_OFF_TU "lu" jpayne@69: # define CURL_SUFFIX_CURL_OFF_T L jpayne@69: # define CURL_SUFFIX_CURL_OFF_TU UL jpayne@69: # define CURL_TYPEOF_CURL_SOCKLEN_T int jpayne@69: #endif jpayne@69: jpayne@69: #ifdef _AIX jpayne@69: /* AIX needs */ jpayne@69: #define CURL_PULL_SYS_POLL_H jpayne@69: #endif jpayne@69: jpayne@69: jpayne@69: /* CURL_PULL_WS2TCPIP_H is defined above when inclusion of header file */ jpayne@69: /* ws2tcpip.h is required here to properly make type definitions below. */ jpayne@69: #ifdef CURL_PULL_WS2TCPIP_H jpayne@69: # include jpayne@69: # include jpayne@69: # include jpayne@69: #endif jpayne@69: jpayne@69: /* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */ jpayne@69: /* sys/types.h is required here to properly make type definitions below. */ jpayne@69: #ifdef CURL_PULL_SYS_TYPES_H jpayne@69: # include jpayne@69: #endif jpayne@69: jpayne@69: /* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */ jpayne@69: /* sys/socket.h is required here to properly make type definitions below. */ jpayne@69: #ifdef CURL_PULL_SYS_SOCKET_H jpayne@69: # include jpayne@69: #endif jpayne@69: jpayne@69: /* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file */ jpayne@69: /* sys/poll.h is required here to properly make type definitions below. */ jpayne@69: #ifdef CURL_PULL_SYS_POLL_H jpayne@69: # include jpayne@69: #endif jpayne@69: jpayne@69: /* Data type definition of curl_socklen_t. */ jpayne@69: #ifdef CURL_TYPEOF_CURL_SOCKLEN_T jpayne@69: typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t; jpayne@69: #endif jpayne@69: jpayne@69: /* Data type definition of curl_off_t. */ jpayne@69: jpayne@69: #ifdef CURL_TYPEOF_CURL_OFF_T jpayne@69: typedef CURL_TYPEOF_CURL_OFF_T curl_off_t; jpayne@69: #endif jpayne@69: jpayne@69: /* jpayne@69: * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow jpayne@69: * these to be visible and exported by the external libcurl interface API, jpayne@69: * while also making them visible to the library internals, simply including jpayne@69: * curl_setup.h, without actually needing to include curl.h internally. jpayne@69: * If some day this section would grow big enough, all this should be moved jpayne@69: * to its own header file. jpayne@69: */ jpayne@69: jpayne@69: /* jpayne@69: * Figure out if we can use the ## preprocessor operator, which is supported jpayne@69: * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__ jpayne@69: * or __cplusplus so we need to carefully check for them too. jpayne@69: */ jpayne@69: jpayne@69: #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \ jpayne@69: defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \ jpayne@69: defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \ jpayne@69: defined(__ILEC400__) jpayne@69: /* This compiler is believed to have an ISO compatible preprocessor */ jpayne@69: #define CURL_ISOCPP jpayne@69: #else jpayne@69: /* This compiler is believed NOT to have an ISO compatible preprocessor */ jpayne@69: #undef CURL_ISOCPP jpayne@69: #endif jpayne@69: jpayne@69: /* jpayne@69: * Macros for minimum-width signed and unsigned curl_off_t integer constants. jpayne@69: */ jpayne@69: jpayne@69: #if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551) jpayne@69: # define CURLINC_OFF_T_C_HLPR2(x) x jpayne@69: # define CURLINC_OFF_T_C_HLPR1(x) CURLINC_OFF_T_C_HLPR2(x) jpayne@69: # define CURL_OFF_T_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \ jpayne@69: CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T) jpayne@69: # define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \ jpayne@69: CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU) jpayne@69: #else jpayne@69: # ifdef CURL_ISOCPP jpayne@69: # define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix jpayne@69: # else jpayne@69: # define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix jpayne@69: # endif jpayne@69: # define CURLINC_OFF_T_C_HLPR1(Val,Suffix) CURLINC_OFF_T_C_HLPR2(Val,Suffix) jpayne@69: # define CURL_OFF_T_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T) jpayne@69: # define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU) jpayne@69: #endif jpayne@69: jpayne@69: #endif /* CURLINC_SYSTEM_H */