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