1 #ifndef CURLINC_SYSTEM_H 2 #define CURLINC_SYSTEM_H 3 /*************************************************************************** 4 * _ _ ____ _ 5 * Project ___| | | | _ \| | 6 * / __| | | | |_) | | 7 * | (__| |_| | _ <| |___ 8 * \___|\___/|_| \_\_____| 9 * 10 * Copyright (C) 1998 - 2020, 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 ***************************************************************************/ 24 25 /* 26 * Try to keep one section per platform, compiler and architecture, otherwise, 27 * if an existing section is reused for a different one and later on the 28 * original is adjusted, probably the piggybacking one can be adversely 29 * changed. 30 * 31 * In order to differentiate between platforms/compilers/architectures use 32 * only compiler built in predefined preprocessor symbols. 33 * 34 * curl_off_t 35 * ---------- 36 * 37 * For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit 38 * wide signed integral data type. The width of this data type must remain 39 * constant and independent of any possible large file support settings. 40 * 41 * As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit 42 * wide signed integral data type if there is no 64-bit type. 43 * 44 * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall 45 * only be violated if off_t is the only 64-bit data type available and the 46 * size of off_t is independent of large file support settings. Keep your 47 * build on the safe side avoiding an off_t gating. If you have a 64-bit 48 * off_t then take for sure that another 64-bit data type exists, dig deeper 49 * and you will find it. 50 * 51 */ 52 53 #if defined(__DJGPP__) || defined(__GO32__) 54 # if defined(__DJGPP__) && (__DJGPP__ > 1) 55 # define CURL_TYPEOF_CURL_OFF_T long long 56 # define CURL_FORMAT_CURL_OFF_T "lld" 57 # define CURL_FORMAT_CURL_OFF_TU "llu" 58 # define CURL_SUFFIX_CURL_OFF_T LL 59 # define CURL_SUFFIX_CURL_OFF_TU ULL 60 # else 61 # define CURL_TYPEOF_CURL_OFF_T long 62 # define CURL_FORMAT_CURL_OFF_T "ld" 63 # define CURL_FORMAT_CURL_OFF_TU "lu" 64 # define CURL_SUFFIX_CURL_OFF_T L 65 # define CURL_SUFFIX_CURL_OFF_TU UL 66 # endif 67 # define CURL_TYPEOF_CURL_SOCKLEN_T int 68 69 #elif defined(__SALFORDC__) 70 # define CURL_TYPEOF_CURL_OFF_T long 71 # define CURL_FORMAT_CURL_OFF_T "ld" 72 # define CURL_FORMAT_CURL_OFF_TU "lu" 73 # define CURL_SUFFIX_CURL_OFF_T L 74 # define CURL_SUFFIX_CURL_OFF_TU UL 75 # define CURL_TYPEOF_CURL_SOCKLEN_T int 76 77 #elif defined(__BORLANDC__) 78 # if (__BORLANDC__ < 0x520) 79 # define CURL_TYPEOF_CURL_OFF_T long 80 # define CURL_FORMAT_CURL_OFF_T "ld" 81 # define CURL_FORMAT_CURL_OFF_TU "lu" 82 # define CURL_SUFFIX_CURL_OFF_T L 83 # define CURL_SUFFIX_CURL_OFF_TU UL 84 # else 85 # define CURL_TYPEOF_CURL_OFF_T __int64 86 # define CURL_FORMAT_CURL_OFF_T "I64d" 87 # define CURL_FORMAT_CURL_OFF_TU "I64u" 88 # define CURL_SUFFIX_CURL_OFF_T i64 89 # define CURL_SUFFIX_CURL_OFF_TU ui64 90 # endif 91 # define CURL_TYPEOF_CURL_SOCKLEN_T int 92 93 #elif defined(__TURBOC__) 94 # define CURL_TYPEOF_CURL_OFF_T long 95 # define CURL_FORMAT_CURL_OFF_T "ld" 96 # define CURL_FORMAT_CURL_OFF_TU "lu" 97 # define CURL_SUFFIX_CURL_OFF_T L 98 # define CURL_SUFFIX_CURL_OFF_TU UL 99 # define CURL_TYPEOF_CURL_SOCKLEN_T int 100 101 #elif defined(__WATCOMC__) 102 # if defined(__386__) 103 # define CURL_TYPEOF_CURL_OFF_T __int64 104 # define CURL_FORMAT_CURL_OFF_T "I64d" 105 # define CURL_FORMAT_CURL_OFF_TU "I64u" 106 # define CURL_SUFFIX_CURL_OFF_T i64 107 # define CURL_SUFFIX_CURL_OFF_TU ui64 108 # else 109 # define CURL_TYPEOF_CURL_OFF_T long 110 # define CURL_FORMAT_CURL_OFF_T "ld" 111 # define CURL_FORMAT_CURL_OFF_TU "lu" 112 # define CURL_SUFFIX_CURL_OFF_T L 113 # define CURL_SUFFIX_CURL_OFF_TU UL 114 # endif 115 # define CURL_TYPEOF_CURL_SOCKLEN_T int 116 117 #elif defined(__POCC__) 118 # if (__POCC__ < 280) 119 # define CURL_TYPEOF_CURL_OFF_T long 120 # define CURL_FORMAT_CURL_OFF_T "ld" 121 # define CURL_FORMAT_CURL_OFF_TU "lu" 122 # define CURL_SUFFIX_CURL_OFF_T L 123 # define CURL_SUFFIX_CURL_OFF_TU UL 124 # elif defined(_MSC_VER) 125 # define CURL_TYPEOF_CURL_OFF_T __int64 126 # define CURL_FORMAT_CURL_OFF_T "I64d" 127 # define CURL_FORMAT_CURL_OFF_TU "I64u" 128 # define CURL_SUFFIX_CURL_OFF_T i64 129 # define CURL_SUFFIX_CURL_OFF_TU ui64 130 # else 131 # define CURL_TYPEOF_CURL_OFF_T long long 132 # define CURL_FORMAT_CURL_OFF_T "lld" 133 # define CURL_FORMAT_CURL_OFF_TU "llu" 134 # define CURL_SUFFIX_CURL_OFF_T LL 135 # define CURL_SUFFIX_CURL_OFF_TU ULL 136 # endif 137 # define CURL_TYPEOF_CURL_SOCKLEN_T int 138 139 #elif defined(__LCC__) 140 # if defined(__e2k__) /* MCST eLbrus C Compiler */ 141 # define CURL_TYPEOF_CURL_OFF_T long 142 # define CURL_FORMAT_CURL_OFF_T "ld" 143 # define CURL_FORMAT_CURL_OFF_TU "lu" 144 # define CURL_SUFFIX_CURL_OFF_T L 145 # define CURL_SUFFIX_CURL_OFF_TU UL 146 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 147 # define CURL_PULL_SYS_TYPES_H 1 148 # define CURL_PULL_SYS_SOCKET_H 1 149 # else /* Local (or Little) C Compiler */ 150 # define CURL_TYPEOF_CURL_OFF_T long 151 # define CURL_FORMAT_CURL_OFF_T "ld" 152 # define CURL_FORMAT_CURL_OFF_TU "lu" 153 # define CURL_SUFFIX_CURL_OFF_T L 154 # define CURL_SUFFIX_CURL_OFF_TU UL 155 # define CURL_TYPEOF_CURL_SOCKLEN_T int 156 # endif 157 158 #elif defined(__SYMBIAN32__) 159 # if defined(__EABI__) /* Treat all ARM compilers equally */ 160 # define CURL_TYPEOF_CURL_OFF_T long long 161 # define CURL_FORMAT_CURL_OFF_T "lld" 162 # define CURL_FORMAT_CURL_OFF_TU "llu" 163 # define CURL_SUFFIX_CURL_OFF_T LL 164 # define CURL_SUFFIX_CURL_OFF_TU ULL 165 # elif defined(__CW32__) 166 # pragma longlong on 167 # define CURL_TYPEOF_CURL_OFF_T long long 168 # define CURL_FORMAT_CURL_OFF_T "lld" 169 # define CURL_FORMAT_CURL_OFF_TU "llu" 170 # define CURL_SUFFIX_CURL_OFF_T LL 171 # define CURL_SUFFIX_CURL_OFF_TU ULL 172 # elif defined(__VC32__) 173 # define CURL_TYPEOF_CURL_OFF_T __int64 174 # define CURL_FORMAT_CURL_OFF_T "lld" 175 # define CURL_FORMAT_CURL_OFF_TU "llu" 176 # define CURL_SUFFIX_CURL_OFF_T LL 177 # define CURL_SUFFIX_CURL_OFF_TU ULL 178 # endif 179 # define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int 180 181 #elif defined(__MWERKS__) 182 # define CURL_TYPEOF_CURL_OFF_T long long 183 # define CURL_FORMAT_CURL_OFF_T "lld" 184 # define CURL_FORMAT_CURL_OFF_TU "llu" 185 # define CURL_SUFFIX_CURL_OFF_T LL 186 # define CURL_SUFFIX_CURL_OFF_TU ULL 187 # define CURL_TYPEOF_CURL_SOCKLEN_T int 188 189 #elif defined(_WIN32_WCE) 190 # define CURL_TYPEOF_CURL_OFF_T __int64 191 # define CURL_FORMAT_CURL_OFF_T "I64d" 192 # define CURL_FORMAT_CURL_OFF_TU "I64u" 193 # define CURL_SUFFIX_CURL_OFF_T i64 194 # define CURL_SUFFIX_CURL_OFF_TU ui64 195 # define CURL_TYPEOF_CURL_SOCKLEN_T int 196 197 #elif defined(__MINGW32__) 198 # define CURL_TYPEOF_CURL_OFF_T long long 199 # define CURL_FORMAT_CURL_OFF_T "I64d" 200 # define CURL_FORMAT_CURL_OFF_TU "I64u" 201 # define CURL_SUFFIX_CURL_OFF_T LL 202 # define CURL_SUFFIX_CURL_OFF_TU ULL 203 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 204 # define CURL_PULL_SYS_TYPES_H 1 205 # define CURL_PULL_WS2TCPIP_H 1 206 207 #elif defined(__VMS) 208 # if defined(__VAX) 209 # define CURL_TYPEOF_CURL_OFF_T long 210 # define CURL_FORMAT_CURL_OFF_T "ld" 211 # define CURL_FORMAT_CURL_OFF_TU "lu" 212 # define CURL_SUFFIX_CURL_OFF_T L 213 # define CURL_SUFFIX_CURL_OFF_TU UL 214 # else 215 # define CURL_TYPEOF_CURL_OFF_T long long 216 # define CURL_FORMAT_CURL_OFF_T "lld" 217 # define CURL_FORMAT_CURL_OFF_TU "llu" 218 # define CURL_SUFFIX_CURL_OFF_T LL 219 # define CURL_SUFFIX_CURL_OFF_TU ULL 220 # endif 221 # define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int 222 223 #elif defined(__OS400__) 224 # if defined(__ILEC400__) 225 # define CURL_TYPEOF_CURL_OFF_T long long 226 # define CURL_FORMAT_CURL_OFF_T "lld" 227 # define CURL_FORMAT_CURL_OFF_TU "llu" 228 # define CURL_SUFFIX_CURL_OFF_T LL 229 # define CURL_SUFFIX_CURL_OFF_TU ULL 230 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 231 # define CURL_PULL_SYS_TYPES_H 1 232 # define CURL_PULL_SYS_SOCKET_H 1 233 # endif 234 235 #elif defined(__MVS__) 236 # if defined(__IBMC__) || defined(__IBMCPP__) 237 # if defined(_ILP32) 238 # elif defined(_LP64) 239 # endif 240 # if defined(_LONG_LONG) 241 # define CURL_TYPEOF_CURL_OFF_T long long 242 # define CURL_FORMAT_CURL_OFF_T "lld" 243 # define CURL_FORMAT_CURL_OFF_TU "llu" 244 # define CURL_SUFFIX_CURL_OFF_T LL 245 # define CURL_SUFFIX_CURL_OFF_TU ULL 246 # elif defined(_LP64) 247 # define CURL_TYPEOF_CURL_OFF_T long 248 # define CURL_FORMAT_CURL_OFF_T "ld" 249 # define CURL_FORMAT_CURL_OFF_TU "lu" 250 # define CURL_SUFFIX_CURL_OFF_T L 251 # define CURL_SUFFIX_CURL_OFF_TU UL 252 # else 253 # define CURL_TYPEOF_CURL_OFF_T long 254 # define CURL_FORMAT_CURL_OFF_T "ld" 255 # define CURL_FORMAT_CURL_OFF_TU "lu" 256 # define CURL_SUFFIX_CURL_OFF_T L 257 # define CURL_SUFFIX_CURL_OFF_TU UL 258 # endif 259 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 260 # define CURL_PULL_SYS_TYPES_H 1 261 # define CURL_PULL_SYS_SOCKET_H 1 262 # endif 263 264 #elif defined(__370__) 265 # if defined(__IBMC__) || defined(__IBMCPP__) 266 # if defined(_ILP32) 267 # elif defined(_LP64) 268 # endif 269 # if defined(_LONG_LONG) 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 # elif defined(_LP64) 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 # else 282 # define CURL_TYPEOF_CURL_OFF_T long 283 # define CURL_FORMAT_CURL_OFF_T "ld" 284 # define CURL_FORMAT_CURL_OFF_TU "lu" 285 # define CURL_SUFFIX_CURL_OFF_T L 286 # define CURL_SUFFIX_CURL_OFF_TU UL 287 # endif 288 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 289 # define CURL_PULL_SYS_TYPES_H 1 290 # define CURL_PULL_SYS_SOCKET_H 1 291 # endif 292 293 #elif defined(TPF) 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 # define CURL_TYPEOF_CURL_SOCKLEN_T int 300 301 #elif defined(__TINYC__) /* also known as tcc */ 302 # define CURL_TYPEOF_CURL_OFF_T long long 303 # define CURL_FORMAT_CURL_OFF_T "lld" 304 # define CURL_FORMAT_CURL_OFF_TU "llu" 305 # define CURL_SUFFIX_CURL_OFF_T LL 306 # define CURL_SUFFIX_CURL_OFF_TU ULL 307 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 308 # define CURL_PULL_SYS_TYPES_H 1 309 # define CURL_PULL_SYS_SOCKET_H 1 310 311 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* Oracle Solaris Studio */ 312 # if !defined(__LP64) && (defined(__ILP32) || \ 313 defined(__i386) || \ 314 defined(__sparcv8) || \ 315 defined(__sparcv8plus)) 316 # define CURL_TYPEOF_CURL_OFF_T long long 317 # define CURL_FORMAT_CURL_OFF_T "lld" 318 # define CURL_FORMAT_CURL_OFF_TU "llu" 319 # define CURL_SUFFIX_CURL_OFF_T LL 320 # define CURL_SUFFIX_CURL_OFF_TU ULL 321 # elif defined(__LP64) || \ 322 defined(__amd64) || defined(__sparcv9) 323 # define CURL_TYPEOF_CURL_OFF_T long 324 # define CURL_FORMAT_CURL_OFF_T "ld" 325 # define CURL_FORMAT_CURL_OFF_TU "lu" 326 # define CURL_SUFFIX_CURL_OFF_T L 327 # define CURL_SUFFIX_CURL_OFF_TU UL 328 # endif 329 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 330 # define CURL_PULL_SYS_TYPES_H 1 331 # define CURL_PULL_SYS_SOCKET_H 1 332 333 #elif defined(__xlc__) /* IBM xlc compiler */ 334 # if !defined(_LP64) 335 # define CURL_TYPEOF_CURL_OFF_T long long 336 # define CURL_FORMAT_CURL_OFF_T "lld" 337 # define CURL_FORMAT_CURL_OFF_TU "llu" 338 # define CURL_SUFFIX_CURL_OFF_T LL 339 # define CURL_SUFFIX_CURL_OFF_TU ULL 340 # else 341 # define CURL_TYPEOF_CURL_OFF_T long 342 # define CURL_FORMAT_CURL_OFF_T "ld" 343 # define CURL_FORMAT_CURL_OFF_TU "lu" 344 # define CURL_SUFFIX_CURL_OFF_T L 345 # define CURL_SUFFIX_CURL_OFF_TU UL 346 # endif 347 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 348 # define CURL_PULL_SYS_TYPES_H 1 349 # define CURL_PULL_SYS_SOCKET_H 1 350 351 /* ===================================== */ 352 /* KEEP MSVC THE PENULTIMATE ENTRY */ 353 /* ===================================== */ 354 355 #elif defined(_MSC_VER) 356 # if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64) 357 # define CURL_TYPEOF_CURL_OFF_T __int64 358 # define CURL_FORMAT_CURL_OFF_T "I64d" 359 # define CURL_FORMAT_CURL_OFF_TU "I64u" 360 # define CURL_SUFFIX_CURL_OFF_T i64 361 # define CURL_SUFFIX_CURL_OFF_TU ui64 362 # else 363 # define CURL_TYPEOF_CURL_OFF_T long 364 # define CURL_FORMAT_CURL_OFF_T "ld" 365 # define CURL_FORMAT_CURL_OFF_TU "lu" 366 # define CURL_SUFFIX_CURL_OFF_T L 367 # define CURL_SUFFIX_CURL_OFF_TU UL 368 # endif 369 # define CURL_TYPEOF_CURL_SOCKLEN_T int 370 371 /* ===================================== */ 372 /* KEEP GENERIC GCC THE LAST ENTRY */ 373 /* ===================================== */ 374 375 #elif defined(__GNUC__) && !defined(_SCO_DS) 376 # if !defined(__LP64__) && \ 377 (defined(__ILP32__) || defined(__i386__) || defined(__hppa__) || \ 378 defined(__ppc__) || defined(__powerpc__) || defined(__arm__) || \ 379 defined(__sparc__) || defined(__mips__) || defined(__sh__) || \ 380 defined(__XTENSA__) || \ 381 (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) || \ 382 (defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L)) 383 # define CURL_TYPEOF_CURL_OFF_T long long 384 # define CURL_FORMAT_CURL_OFF_T "lld" 385 # define CURL_FORMAT_CURL_OFF_TU "llu" 386 # define CURL_SUFFIX_CURL_OFF_T LL 387 # define CURL_SUFFIX_CURL_OFF_TU ULL 388 # elif defined(__LP64__) || \ 389 defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \ 390 defined(__e2k__) || \ 391 (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \ 392 (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L) 393 # define CURL_TYPEOF_CURL_OFF_T long 394 # define CURL_FORMAT_CURL_OFF_T "ld" 395 # define CURL_FORMAT_CURL_OFF_TU "lu" 396 # define CURL_SUFFIX_CURL_OFF_T L 397 # define CURL_SUFFIX_CURL_OFF_TU UL 398 # endif 399 # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t 400 # define CURL_PULL_SYS_TYPES_H 1 401 # define CURL_PULL_SYS_SOCKET_H 1 402 403 #else 404 /* generic "safe guess" on old 32 bit style */ 405 # define CURL_TYPEOF_CURL_OFF_T long 406 # define CURL_FORMAT_CURL_OFF_T "ld" 407 # define CURL_FORMAT_CURL_OFF_TU "lu" 408 # define CURL_SUFFIX_CURL_OFF_T L 409 # define CURL_SUFFIX_CURL_OFF_TU UL 410 # define CURL_TYPEOF_CURL_SOCKLEN_T int 411 #endif 412 413 #ifdef _AIX 414 /* AIX needs <sys/poll.h> */ 415 #define CURL_PULL_SYS_POLL_H 416 #endif 417 418 419 /* CURL_PULL_WS2TCPIP_H is defined above when inclusion of header file */ 420 /* ws2tcpip.h is required here to properly make type definitions below. */ 421 #ifdef CURL_PULL_WS2TCPIP_H 422 # include <winsock2.h> 423 # include <windows.h> 424 # include <ws2tcpip.h> 425 #endif 426 427 /* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */ 428 /* sys/types.h is required here to properly make type definitions below. */ 429 #ifdef CURL_PULL_SYS_TYPES_H 430 # include <sys/types.h> 431 #endif 432 433 /* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */ 434 /* sys/socket.h is required here to properly make type definitions below. */ 435 #ifdef CURL_PULL_SYS_SOCKET_H 436 # include <sys/socket.h> 437 #endif 438 439 /* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file */ 440 /* sys/poll.h is required here to properly make type definitions below. */ 441 #ifdef CURL_PULL_SYS_POLL_H 442 # include <sys/poll.h> 443 #endif 444 445 /* Data type definition of curl_socklen_t. */ 446 #ifdef CURL_TYPEOF_CURL_SOCKLEN_T 447 typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t; 448 #endif 449 450 /* Data type definition of curl_off_t. */ 451 452 #ifdef CURL_TYPEOF_CURL_OFF_T 453 typedef CURL_TYPEOF_CURL_OFF_T curl_off_t; 454 #endif 455 456 /* 457 * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow 458 * these to be visible and exported by the external libcurl interface API, 459 * while also making them visible to the library internals, simply including 460 * curl_setup.h, without actually needing to include curl.h internally. 461 * If some day this section would grow big enough, all this should be moved 462 * to its own header file. 463 */ 464 465 /* 466 * Figure out if we can use the ## preprocessor operator, which is supported 467 * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__ 468 * or __cplusplus so we need to carefully check for them too. 469 */ 470 471 #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \ 472 defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \ 473 defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \ 474 defined(__ILEC400__) 475 /* This compiler is believed to have an ISO compatible preprocessor */ 476 #define CURL_ISOCPP 477 #else 478 /* This compiler is believed NOT to have an ISO compatible preprocessor */ 479 #undef CURL_ISOCPP 480 #endif 481 482 /* 483 * Macros for minimum-width signed and unsigned curl_off_t integer constants. 484 */ 485 486 #if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551) 487 # define CURLINC_OFF_T_C_HLPR2(x) x 488 # define CURLINC_OFF_T_C_HLPR1(x) CURLINC_OFF_T_C_HLPR2(x) 489 # define CURL_OFF_T_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \ 490 CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T) 491 # define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \ 492 CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU) 493 #else 494 # ifdef CURL_ISOCPP 495 # define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix 496 # else 497 # define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix 498 # endif 499 # define CURLINC_OFF_T_C_HLPR1(Val,Suffix) CURLINC_OFF_T_C_HLPR2(Val,Suffix) 500 # define CURL_OFF_T_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T) 501 # define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU) 502 #endif 503 504 #endif /* CURLINC_SYSTEM_H */ 505