gnunet-android

GNUnet for Android
Log | Files | Refs | README

system.h (15110B)


      1 #ifndef CURLINC_SYSTEM_H
      2 #define CURLINC_SYSTEM_H
      3 /***************************************************************************
      4  *                                  _   _ ____  _
      5  *  Project                     ___| | | |  _ \| |
      6  *                             / __| | | | |_) | |
      7  *                            | (__| |_| |  _ <| |___
      8  *                             \___|\___/|_| \_\_____|
      9  *
     10  * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
     11  *
     12  * This software is licensed as described in the file COPYING, which
     13  * you should have received as part of this distribution. The terms
     14  * are also available at https://curl.se/docs/copyright.html.
     15  *
     16  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
     17  * copies of the Software, and permit persons to whom the Software is
     18  * furnished to do so, under the terms of the COPYING file.
     19  *
     20  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     21  * KIND, either express or implied.
     22  *
     23  * SPDX-License-Identifier: curl
     24  *
     25  ***************************************************************************/
     26 
     27 /*
     28  * Try to keep one section per platform, compiler and architecture, otherwise,
     29  * if an existing section is reused for a different one and later on the
     30  * original is adjusted, probably the piggybacking one can be adversely
     31  * changed.
     32  *
     33  * In order to differentiate between platforms/compilers/architectures use
     34  * only compiler built-in predefined preprocessor symbols.
     35  *
     36  * curl_off_t
     37  * ----------
     38  *
     39  * For any given platform/compiler curl_off_t MUST be typedef'ed to a 64-bit
     40  * wide signed integral data type. The width of this data type must remain
     41  * constant and independent of any possible large file support settings.
     42  *
     43  * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall
     44  * only be violated if off_t is the only 64-bit data type available and the
     45  * size of off_t is independent of large file support settings. Keep your
     46  * build on the safe side avoiding an off_t gating. If you have a 64-bit
     47  * off_t then take for sure that another 64-bit data type exists, dig deeper
     48  * and you will find it.
     49  *
     50  */
     51 
     52 #ifdef __DJGPP__
     53 #  define CURL_TYPEOF_CURL_OFF_T     long long
     54 #  define CURL_FORMAT_CURL_OFF_T     "lld"
     55 #  define CURL_FORMAT_CURL_OFF_TU    "llu"
     56 #  define CURL_SUFFIX_CURL_OFF_T     LL
     57 #  define CURL_SUFFIX_CURL_OFF_TU    ULL
     58 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
     59 
     60 #elif defined(__BORLANDC__)
     61 #  define CURL_TYPEOF_CURL_OFF_T     __int64
     62 #  define CURL_FORMAT_CURL_OFF_T     "I64d"
     63 #  define CURL_FORMAT_CURL_OFF_TU    "I64u"
     64 #  define CURL_SUFFIX_CURL_OFF_T     i64
     65 #  define CURL_SUFFIX_CURL_OFF_TU    ui64
     66 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
     67 
     68 #elif defined(__POCC__)
     69 #  if defined(_MSC_VER)
     70 #    define CURL_TYPEOF_CURL_OFF_T     __int64
     71 #    define CURL_FORMAT_CURL_OFF_T     "I64d"
     72 #    define CURL_FORMAT_CURL_OFF_TU    "I64u"
     73 #    define CURL_SUFFIX_CURL_OFF_T     i64
     74 #    define CURL_SUFFIX_CURL_OFF_TU    ui64
     75 #  else
     76 #    define CURL_TYPEOF_CURL_OFF_T     long long
     77 #    define CURL_FORMAT_CURL_OFF_T     "lld"
     78 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
     79 #    define CURL_SUFFIX_CURL_OFF_T     LL
     80 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
     81 #  endif
     82 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
     83 
     84 #elif defined(__LCC__)
     85 #  if defined(__MCST__) /* MCST eLbrus Compiler Collection */
     86 #    define CURL_TYPEOF_CURL_OFF_T     long
     87 #    define CURL_FORMAT_CURL_OFF_T     "ld"
     88 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
     89 #    define CURL_SUFFIX_CURL_OFF_T     L
     90 #    define CURL_SUFFIX_CURL_OFF_TU    UL
     91 #    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
     92 #    define CURL_PULL_SYS_TYPES_H      1
     93 #    define CURL_PULL_SYS_SOCKET_H     1
     94 #  else                /* Local (or Little) C Compiler */
     95 #    define CURL_TYPEOF_CURL_OFF_T     long
     96 #    define CURL_FORMAT_CURL_OFF_T     "ld"
     97 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
     98 #    define CURL_SUFFIX_CURL_OFF_T     L
     99 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    100 #    define CURL_TYPEOF_CURL_SOCKLEN_T int
    101 #  endif
    102 
    103 #elif defined(macintosh)
    104 #  include <ConditionalMacros.h>
    105 #  if TYPE_LONGLONG
    106 #    define CURL_TYPEOF_CURL_OFF_T     long long
    107 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    108 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    109 #    define CURL_SUFFIX_CURL_OFF_T     LL
    110 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    111 #  else
    112 #    define CURL_TYPEOF_CURL_OFF_T     long
    113 #    define CURL_FORMAT_CURL_OFF_T     "ld"
    114 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
    115 #    define CURL_SUFFIX_CURL_OFF_T     L
    116 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    117 #  endif
    118 #  define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
    119 
    120 #elif defined(__TANDEM)
    121 #  if !defined(__LP64)
    122 #    define CURL_TYPEOF_CURL_OFF_T     long long
    123 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    124 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    125 #    define CURL_SUFFIX_CURL_OFF_T     LL
    126 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    127 #    define CURL_TYPEOF_CURL_SOCKLEN_T int
    128 #  else
    129 #    define CURL_TYPEOF_CURL_OFF_T     long
    130 #    define CURL_FORMAT_CURL_OFF_T     "ld"
    131 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
    132 #    define CURL_SUFFIX_CURL_OFF_T     L
    133 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    134 #    define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
    135 #  endif
    136 
    137 #elif defined(UNDER_CE)
    138 #  if defined(__MINGW32CE__)
    139 #    define CURL_TYPEOF_CURL_OFF_T     long long
    140 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    141 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    142 #    define CURL_SUFFIX_CURL_OFF_T     LL
    143 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    144 #    define CURL_TYPEOF_CURL_SOCKLEN_T int
    145 #  else
    146 #    define CURL_TYPEOF_CURL_OFF_T     __int64
    147 #    define CURL_FORMAT_CURL_OFF_T     "I64d"
    148 #    define CURL_FORMAT_CURL_OFF_TU    "I64u"
    149 #    define CURL_SUFFIX_CURL_OFF_T     i64
    150 #    define CURL_SUFFIX_CURL_OFF_TU    ui64
    151 #    define CURL_TYPEOF_CURL_SOCKLEN_T int
    152 #  endif
    153 
    154 #elif defined(__MINGW32__)
    155 #  include <inttypes.h>
    156 #  define CURL_TYPEOF_CURL_OFF_T     long long
    157 #  define CURL_FORMAT_CURL_OFF_T     PRId64
    158 #  define CURL_FORMAT_CURL_OFF_TU    PRIu64
    159 #  define CURL_SUFFIX_CURL_OFF_T     LL
    160 #  define CURL_SUFFIX_CURL_OFF_TU    ULL
    161 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
    162 #  define CURL_PULL_SYS_TYPES_H      1
    163 
    164 #elif defined(__VMS)
    165 #  if defined(__VAX)
    166 #    define CURL_TYPEOF_CURL_OFF_T     long
    167 #    define CURL_FORMAT_CURL_OFF_T     "ld"
    168 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
    169 #    define CURL_SUFFIX_CURL_OFF_T     L
    170 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    171 #  else
    172 #    define CURL_TYPEOF_CURL_OFF_T     long long
    173 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    174 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    175 #    define CURL_SUFFIX_CURL_OFF_T     LL
    176 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    177 #  endif
    178 #  define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
    179 
    180 #elif defined(__OS400__)
    181 #  define CURL_TYPEOF_CURL_OFF_T     long long
    182 #  define CURL_FORMAT_CURL_OFF_T     "lld"
    183 #  define CURL_FORMAT_CURL_OFF_TU    "llu"
    184 #  define CURL_SUFFIX_CURL_OFF_T     LL
    185 #  define CURL_SUFFIX_CURL_OFF_TU    ULL
    186 #  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
    187 #  define CURL_PULL_SYS_TYPES_H      1
    188 #  define CURL_PULL_SYS_SOCKET_H     1
    189 
    190 #elif defined(__MVS__)
    191 #  if defined(_LONG_LONG)
    192 #    define CURL_TYPEOF_CURL_OFF_T     long long
    193 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    194 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    195 #    define CURL_SUFFIX_CURL_OFF_T     LL
    196 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    197 #  else /* _LP64 and default */
    198 #    define CURL_TYPEOF_CURL_OFF_T     long
    199 #    define CURL_FORMAT_CURL_OFF_T     "ld"
    200 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
    201 #    define CURL_SUFFIX_CURL_OFF_T     L
    202 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    203 #  endif
    204 #  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
    205 #  define CURL_PULL_SYS_TYPES_H      1
    206 #  define CURL_PULL_SYS_SOCKET_H     1
    207 
    208 #elif defined(__370__)
    209 #  if defined(__IBMC__) || defined(__IBMCPP__)
    210 #    if defined(_LONG_LONG)
    211 #      define CURL_TYPEOF_CURL_OFF_T     long long
    212 #      define CURL_FORMAT_CURL_OFF_T     "lld"
    213 #      define CURL_FORMAT_CURL_OFF_TU    "llu"
    214 #      define CURL_SUFFIX_CURL_OFF_T     LL
    215 #      define CURL_SUFFIX_CURL_OFF_TU    ULL
    216 #    else /* _LP64 and default */
    217 #      define CURL_TYPEOF_CURL_OFF_T     long
    218 #      define CURL_FORMAT_CURL_OFF_T     "ld"
    219 #      define CURL_FORMAT_CURL_OFF_TU    "lu"
    220 #      define CURL_SUFFIX_CURL_OFF_T     L
    221 #      define CURL_SUFFIX_CURL_OFF_TU    UL
    222 #    endif
    223 #    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
    224 #    define CURL_PULL_SYS_TYPES_H      1
    225 #    define CURL_PULL_SYS_SOCKET_H     1
    226 #  endif
    227 
    228 #elif defined(TPF)
    229 #  define CURL_TYPEOF_CURL_OFF_T     long
    230 #  define CURL_FORMAT_CURL_OFF_T     "ld"
    231 #  define CURL_FORMAT_CURL_OFF_TU    "lu"
    232 #  define CURL_SUFFIX_CURL_OFF_T     L
    233 #  define CURL_SUFFIX_CURL_OFF_TU    UL
    234 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
    235 
    236 #elif defined(__TINYC__) /* also known as tcc */
    237 #  define CURL_TYPEOF_CURL_OFF_T     long long
    238 #  define CURL_FORMAT_CURL_OFF_T     "lld"
    239 #  define CURL_FORMAT_CURL_OFF_TU    "llu"
    240 #  define CURL_SUFFIX_CURL_OFF_T     LL
    241 #  define CURL_SUFFIX_CURL_OFF_TU    ULL
    242 #  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
    243 #  define CURL_PULL_SYS_TYPES_H      1
    244 #  define CURL_PULL_SYS_SOCKET_H     1
    245 
    246 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* Oracle Solaris Studio */
    247 #  if !defined(__LP64) && (defined(__ILP32) ||                          \
    248                            defined(__i386) ||                           \
    249                            defined(__sparcv8) ||                        \
    250                            defined(__sparcv8plus))
    251 #    define CURL_TYPEOF_CURL_OFF_T     long long
    252 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    253 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    254 #    define CURL_SUFFIX_CURL_OFF_T     LL
    255 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    256 #  elif defined(__LP64) || \
    257         defined(__amd64) || defined(__sparcv9)
    258 #    define CURL_TYPEOF_CURL_OFF_T     long
    259 #    define CURL_FORMAT_CURL_OFF_T     "ld"
    260 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
    261 #    define CURL_SUFFIX_CURL_OFF_T     L
    262 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    263 #  endif
    264 #  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
    265 #  define CURL_PULL_SYS_TYPES_H      1
    266 #  define CURL_PULL_SYS_SOCKET_H     1
    267 
    268 #elif defined(__xlc__) /* IBM xlc compiler */
    269 #  if !defined(_LP64)
    270 #    define CURL_TYPEOF_CURL_OFF_T     long long
    271 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    272 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    273 #    define CURL_SUFFIX_CURL_OFF_T     LL
    274 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    275 #  else
    276 #    define CURL_TYPEOF_CURL_OFF_T     long
    277 #    define CURL_FORMAT_CURL_OFF_T     "ld"
    278 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
    279 #    define CURL_SUFFIX_CURL_OFF_T     L
    280 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    281 #  endif
    282 #  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
    283 #  define CURL_PULL_SYS_TYPES_H      1
    284 #  define CURL_PULL_SYS_SOCKET_H     1
    285 
    286 #elif defined(__hpux) /* HP aCC compiler */
    287 #  if !defined(_LP64)
    288 #    define CURL_TYPEOF_CURL_OFF_T     long long
    289 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    290 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    291 #    define CURL_SUFFIX_CURL_OFF_T     LL
    292 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    293 #  else
    294 #    define CURL_TYPEOF_CURL_OFF_T     long
    295 #    define CURL_FORMAT_CURL_OFF_T     "ld"
    296 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
    297 #    define CURL_SUFFIX_CURL_OFF_T     L
    298 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    299 #  endif
    300 #  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
    301 #  define CURL_PULL_SYS_TYPES_H      1
    302 #  define CURL_PULL_SYS_SOCKET_H     1
    303 
    304 /* ===================================== */
    305 /*    KEEP MSVC THE PENULTIMATE ENTRY    */
    306 /* ===================================== */
    307 
    308 #elif defined(_MSC_VER)
    309 #  if (_MSC_VER >= 1800)
    310 #    include <inttypes.h>
    311 #    define CURL_FORMAT_CURL_OFF_T     PRId64
    312 #    define CURL_FORMAT_CURL_OFF_TU    PRIu64
    313 #  else
    314 #    define CURL_FORMAT_CURL_OFF_T     "I64d"
    315 #    define CURL_FORMAT_CURL_OFF_TU    "I64u"
    316 #  endif
    317 #  define CURL_TYPEOF_CURL_OFF_T     __int64
    318 #  define CURL_SUFFIX_CURL_OFF_T     i64
    319 #  define CURL_SUFFIX_CURL_OFF_TU    ui64
    320 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
    321 
    322 /* ===================================== */
    323 /*    KEEP GENERIC GCC THE LAST ENTRY    */
    324 /* ===================================== */
    325 
    326 #elif defined(__GNUC__) && !defined(_SCO_DS)
    327 #  if !defined(__LP64__) &&                                             \
    328   (defined(__ILP32__) || defined(__i386__) || defined(__hppa__) ||      \
    329    defined(__ppc__) || defined(__powerpc__) || defined(__arm__) ||      \
    330    defined(__sparc__) || defined(__mips__) || defined(__sh__) ||        \
    331    defined(__XTENSA__) ||                                               \
    332    (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) ||                \
    333    (defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L))
    334 #    define CURL_TYPEOF_CURL_OFF_T     long long
    335 #    define CURL_FORMAT_CURL_OFF_T     "lld"
    336 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
    337 #    define CURL_SUFFIX_CURL_OFF_T     LL
    338 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
    339 #    define CURL_POPCOUNT64(x)         __builtin_popcountll(x)
    340 #    define CURL_CTZ64(x)              __builtin_ctzll(x)
    341 #  elif defined(__LP64__) || \
    342         defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \
    343         defined(__e2k__) || \
    344         (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \
    345         (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L)
    346 #    define CURL_TYPEOF_CURL_OFF_T     long
    347 #    define CURL_FORMAT_CURL_OFF_T     "ld"
    348 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
    349 #    define CURL_SUFFIX_CURL_OFF_T     L
    350 #    define CURL_SUFFIX_CURL_OFF_TU    UL
    351 #    define CURL_POPCOUNT64(x)         __builtin_popcountl(x)
    352 #    define CURL_CTZ64(x)              __builtin_ctzl(x)
    353 #  endif
    354 #  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
    355 #  define CURL_PULL_SYS_TYPES_H      1
    356 #  define CURL_PULL_SYS_SOCKET_H     1
    357 
    358 #else
    359 /* generic "safe guess" on old 32-bit style */
    360 #  define CURL_TYPEOF_CURL_OFF_T     long long
    361 #  define CURL_FORMAT_CURL_OFF_T     "lld"
    362 #  define CURL_FORMAT_CURL_OFF_TU    "llu"
    363 #  define CURL_SUFFIX_CURL_OFF_T     LL
    364 #  define CURL_SUFFIX_CURL_OFF_TU    ULL
    365 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
    366 #endif
    367 
    368 #ifdef _AIX
    369 /* AIX needs <sys/poll.h> */
    370 #define CURL_PULL_SYS_POLL_H
    371 #endif
    372 
    373 /* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file  */
    374 /* sys/types.h is required here to properly make type definitions below. */
    375 #ifdef CURL_PULL_SYS_TYPES_H
    376 #  include <sys/types.h>
    377 #endif
    378 
    379 /* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file  */
    380 /* sys/socket.h is required here to properly make type definitions below. */
    381 #ifdef CURL_PULL_SYS_SOCKET_H
    382 #  include <sys/socket.h>
    383 #endif
    384 
    385 /* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file    */
    386 /* sys/poll.h is required here to properly make type definitions below.   */
    387 #ifdef CURL_PULL_SYS_POLL_H
    388 #  include <sys/poll.h>
    389 #endif
    390 
    391 /* Data type definition of curl_socklen_t. */
    392 #ifdef CURL_TYPEOF_CURL_SOCKLEN_T
    393   typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
    394 #endif
    395 
    396 /* Data type definition of curl_off_t. */
    397 
    398 #ifdef CURL_TYPEOF_CURL_OFF_T
    399   typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
    400 #endif
    401 
    402 #endif /* CURLINC_SYSTEM_H */