system.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484
  1. #ifndef __CURL_SYSTEM_H
  2. #define __CURL_SYSTEM_H
  3. /***************************************************************************
  4. * _ _ ____ _
  5. * Project ___| | | | _ \| |
  6. * / __| | | | |_) | |
  7. * | (__| |_| | _ <| |___
  8. * \___|\___/|_| \_\_____|
  9. *
  10. * Copyright (C) 1998 - 2017, Daniel Stenberg, <[email protected]>, 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.haxx.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. * This header is supposed to eventually replace curlbuild.h. This little one
  26. * is still learning. During the experimental phase, this header files
  27. * defines symbols using the prefixes CURLSYS_ or curlsys_. When we feel
  28. * confident enough, we replace curlbuild.h with this file and rename all
  29. * prefixes to CURL_ and curl_.
  30. */
  31. /*
  32. * Try to keep one section per platform, compiler and architecture, otherwise,
  33. * if an existing section is reused for a different one and later on the
  34. * original is adjusted, probably the piggybacking one can be adversely
  35. * changed.
  36. *
  37. * In order to differentiate between platforms/compilers/architectures use
  38. * only compiler built in predefined preprocessor symbols.
  39. *
  40. * curl_off_t
  41. * ----------
  42. *
  43. * For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit
  44. * wide signed integral data type. The width of this data type must remain
  45. * constant and independent of any possible large file support settings.
  46. *
  47. * As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit
  48. * wide signed integral data type if there is no 64-bit type.
  49. *
  50. * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall
  51. * only be violated if off_t is the only 64-bit data type available and the
  52. * size of off_t is independent of large file support settings. Keep your
  53. * build on the safe side avoiding an off_t gating. If you have a 64-bit
  54. * off_t then take for sure that another 64-bit data type exists, dig deeper
  55. * and you will find it.
  56. *
  57. */
  58. #if defined(__DJGPP__) || defined(__GO32__)
  59. # if defined(__DJGPP__) && (__DJGPP__ > 1)
  60. # define CURLSYS_SIZEOF_LONG 4
  61. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  62. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  63. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  64. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  65. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  66. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  67. # else
  68. # define CURLSYS_SIZEOF_LONG 4
  69. # define CURLSYS_TYPEOF_CURL_OFF_T long
  70. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  71. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  72. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  73. # define CURLSYS_SUFFIX_CURL_OFF_T L
  74. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  75. # endif
  76. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  77. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  78. #elif defined(__SALFORDC__)
  79. # define CURLSYS_SIZEOF_LONG 4
  80. # define CURLSYS_TYPEOF_CURL_OFF_T long
  81. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  82. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  83. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  84. # define CURLSYS_SUFFIX_CURL_OFF_T L
  85. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  86. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  87. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  88. #elif defined(__BORLANDC__)
  89. # if (__BORLANDC__ < 0x520)
  90. # define CURLSYS_SIZEOF_LONG 4
  91. # define CURLSYS_TYPEOF_CURL_OFF_T long
  92. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  93. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  94. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  95. # define CURLSYS_SUFFIX_CURL_OFF_T L
  96. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  97. # else
  98. # define CURLSYS_SIZEOF_LONG 4
  99. # define CURLSYS_TYPEOF_CURL_OFF_T __int64
  100. # define CURLSYS_FORMAT_CURL_OFF_T "I64d"
  101. # define CURLSYS_FORMAT_CURL_OFF_TU "I64u"
  102. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  103. # define CURLSYS_SUFFIX_CURL_OFF_T i64
  104. # define CURLSYS_SUFFIX_CURL_OFF_TU ui64
  105. # endif
  106. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  107. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  108. #elif defined(__TURBOC__)
  109. # define CURLSYS_SIZEOF_LONG 4
  110. # define CURLSYS_TYPEOF_CURL_OFF_T long
  111. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  112. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  113. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  114. # define CURLSYS_SUFFIX_CURL_OFF_T L
  115. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  116. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  117. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  118. #elif defined(__WATCOMC__)
  119. # if defined(__386__)
  120. # define CURLSYS_SIZEOF_LONG 4
  121. # define CURLSYS_TYPEOF_CURL_OFF_T __int64
  122. # define CURLSYS_FORMAT_CURL_OFF_T "I64d"
  123. # define CURLSYS_FORMAT_CURL_OFF_TU "I64u"
  124. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  125. # define CURLSYS_SUFFIX_CURL_OFF_T i64
  126. # define CURLSYS_SUFFIX_CURL_OFF_TU ui64
  127. # else
  128. # define CURLSYS_SIZEOF_LONG 4
  129. # define CURLSYS_TYPEOF_CURL_OFF_T long
  130. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  131. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  132. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  133. # define CURLSYS_SUFFIX_CURL_OFF_T L
  134. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  135. # endif
  136. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  137. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  138. #elif defined(__POCC__)
  139. # if (__POCC__ < 280)
  140. # define CURLSYS_SIZEOF_LONG 4
  141. # define CURLSYS_TYPEOF_CURL_OFF_T long
  142. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  143. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  144. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  145. # define CURLSYS_SUFFIX_CURL_OFF_T L
  146. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  147. # elif defined(_MSC_VER)
  148. # define CURLSYS_SIZEOF_LONG 4
  149. # define CURLSYS_TYPEOF_CURL_OFF_T __int64
  150. # define CURLSYS_FORMAT_CURL_OFF_T "I64d"
  151. # define CURLSYS_FORMAT_CURL_OFF_TU "I64u"
  152. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  153. # define CURLSYS_SUFFIX_CURL_OFF_T i64
  154. # define CURLSYS_SUFFIX_CURL_OFF_TU ui64
  155. # else
  156. # define CURLSYS_SIZEOF_LONG 4
  157. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  158. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  159. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  160. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  161. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  162. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  163. # endif
  164. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  165. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  166. #elif defined(__LCC__)
  167. # define CURLSYS_SIZEOF_LONG 4
  168. # define CURLSYS_TYPEOF_CURL_OFF_T long
  169. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  170. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  171. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  172. # define CURLSYS_SUFFIX_CURL_OFF_T L
  173. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  174. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  175. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  176. #elif defined(__SYMBIAN32__)
  177. # if defined(__EABI__) /* Treat all ARM compilers equally */
  178. # define CURLSYS_SIZEOF_LONG 4
  179. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  180. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  181. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  182. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  183. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  184. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  185. # elif defined(__CW32__)
  186. # pragma longlong on
  187. # define CURLSYS_SIZEOF_LONG 4
  188. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  189. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  190. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  191. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  192. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  193. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  194. # elif defined(__VC32__)
  195. # define CURLSYS_SIZEOF_LONG 4
  196. # define CURLSYS_TYPEOF_CURL_OFF_T __int64
  197. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  198. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  199. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  200. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  201. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  202. # endif
  203. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T unsigned int
  204. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  205. #elif defined(__MWERKS__)
  206. # define CURLSYS_SIZEOF_LONG 4
  207. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  208. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  209. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  210. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  211. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  212. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  213. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  214. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  215. #elif defined(_WIN32_WCE)
  216. # define CURLSYS_SIZEOF_LONG 4
  217. # define CURLSYS_TYPEOF_CURL_OFF_T __int64
  218. # define CURLSYS_FORMAT_CURL_OFF_T "I64d"
  219. # define CURLSYS_FORMAT_CURL_OFF_TU "I64u"
  220. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  221. # define CURLSYS_SUFFIX_CURL_OFF_T i64
  222. # define CURLSYS_SUFFIX_CURL_OFF_TU ui64
  223. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  224. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  225. #elif defined(__MINGW32__)
  226. # define CURLSYS_SIZEOF_LONG 4
  227. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  228. # define CURLSYS_FORMAT_CURL_OFF_T "I64d"
  229. # define CURLSYS_FORMAT_CURL_OFF_TU "I64u"
  230. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  231. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  232. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  233. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T socklen_t
  234. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  235. # define CURLSYS_PULL_SYS_TYPES_H 1
  236. # define CURLSYS_PULL_WS2TCPIP_H 1
  237. #elif defined(__VMS)
  238. # if defined(__VAX)
  239. # define CURLSYS_SIZEOF_LONG 4
  240. # define CURLSYS_TYPEOF_CURL_OFF_T long
  241. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  242. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  243. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  244. # define CURLSYS_SUFFIX_CURL_OFF_T L
  245. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  246. # else
  247. # define CURLSYS_SIZEOF_LONG 4
  248. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  249. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  250. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  251. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  252. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  253. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  254. # endif
  255. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T unsigned int
  256. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  257. #elif defined(__OS400__)
  258. # if defined(__ILEC400__)
  259. # define CURLSYS_SIZEOF_LONG 4
  260. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  261. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  262. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  263. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  264. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  265. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  266. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T socklen_t
  267. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  268. # define CURLSYS_PULL_SYS_TYPES_H 1
  269. # define CURLSYS_PULL_SYS_SOCKET_H 1
  270. # endif
  271. #elif defined(__MVS__)
  272. # if defined(__IBMC__) || defined(__IBMCPP__)
  273. # if defined(_ILP32)
  274. # define CURLSYS_SIZEOF_LONG 4
  275. # elif defined(_LP64)
  276. # define CURLSYS_SIZEOF_LONG 8
  277. # endif
  278. # if defined(_LONG_LONG)
  279. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  280. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  281. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  282. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  283. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  284. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  285. # elif defined(_LP64)
  286. # define CURLSYS_TYPEOF_CURL_OFF_T long
  287. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  288. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  289. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  290. # define CURLSYS_SUFFIX_CURL_OFF_T L
  291. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  292. # else
  293. # define CURLSYS_TYPEOF_CURL_OFF_T long
  294. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  295. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  296. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  297. # define CURLSYS_SUFFIX_CURL_OFF_T L
  298. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  299. # endif
  300. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T socklen_t
  301. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  302. # define CURLSYS_PULL_SYS_TYPES_H 1
  303. # define CURLSYS_PULL_SYS_SOCKET_H 1
  304. # endif
  305. #elif defined(__370__)
  306. # if defined(__IBMC__) || defined(__IBMCPP__)
  307. # if defined(_ILP32)
  308. # define CURLSYS_SIZEOF_LONG 4
  309. # elif defined(_LP64)
  310. # define CURLSYS_SIZEOF_LONG 8
  311. # endif
  312. # if defined(_LONG_LONG)
  313. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  314. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  315. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  316. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  317. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  318. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  319. # elif defined(_LP64)
  320. # define CURLSYS_TYPEOF_CURL_OFF_T long
  321. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  322. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  323. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  324. # define CURLSYS_SUFFIX_CURL_OFF_T L
  325. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  326. # else
  327. # define CURLSYS_TYPEOF_CURL_OFF_T long
  328. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  329. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  330. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  331. # define CURLSYS_SUFFIX_CURL_OFF_T L
  332. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  333. # endif
  334. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T socklen_t
  335. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  336. # define CURLSYS_PULL_SYS_TYPES_H 1
  337. # define CURLSYS_PULL_SYS_SOCKET_H 1
  338. # endif
  339. #elif defined(TPF)
  340. # define CURLSYS_SIZEOF_LONG 8
  341. # define CURLSYS_TYPEOF_CURL_OFF_T long
  342. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  343. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  344. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  345. # define CURLSYS_SUFFIX_CURL_OFF_T L
  346. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  347. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  348. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  349. #elif defined(__TINYC__) /* also known as tcc */
  350. # define CURLSYS_SIZEOF_LONG 4
  351. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  352. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  353. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  354. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  355. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  356. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  357. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T socklen_t
  358. # define CURLSYS_PULL_SYS_TYPES_H 1
  359. # define CURLSYS_PULL_SYS_SOCKET_H 1
  360. /* ===================================== */
  361. /* KEEP MSVC THE PENULTIMATE ENTRY */
  362. /* ===================================== */
  363. #elif defined(_MSC_VER)
  364. # if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
  365. # define CURLSYS_SIZEOF_LONG 4
  366. # define CURLSYS_TYPEOF_CURL_OFF_T __int64
  367. # define CURLSYS_FORMAT_CURL_OFF_T "I64d"
  368. # define CURLSYS_FORMAT_CURL_OFF_TU "I64u"
  369. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  370. # define CURLSYS_SUFFIX_CURL_OFF_T i64
  371. # define CURLSYS_SUFFIX_CURL_OFF_TU ui64
  372. # else
  373. # define CURLSYS_SIZEOF_LONG 4
  374. # define CURLSYS_TYPEOF_CURL_OFF_T long
  375. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  376. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  377. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  378. # define CURLSYS_SUFFIX_CURL_OFF_T L
  379. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  380. # endif
  381. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  382. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  383. /* ===================================== */
  384. /* KEEP GENERIC GCC THE LAST ENTRY */
  385. /* ===================================== */
  386. #elif defined(__GNUC__)
  387. # if !defined(__LP64__) && (defined(__ILP32__) || \
  388. defined(__i386__) || defined(__ppc__) || defined(__arm__) || \
  389. defined(__sparc__) || defined(__mips__) || defined(__sh__))
  390. # define CURLSYS_SIZEOF_LONG 4
  391. # define CURLSYS_TYPEOF_CURL_OFF_T long long
  392. # define CURLSYS_FORMAT_CURL_OFF_T "lld"
  393. # define CURLSYS_FORMAT_CURL_OFF_TU "llu"
  394. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  395. # define CURLSYS_SUFFIX_CURL_OFF_T LL
  396. # define CURLSYS_SUFFIX_CURL_OFF_TU ULL
  397. # elif defined(__LP64__) || \
  398. defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__)
  399. # define CURLSYS_SIZEOF_LONG 8
  400. # define CURLSYS_TYPEOF_CURL_OFF_T long
  401. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  402. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  403. # define CURLSYS_SIZEOF_CURL_OFF_T 8
  404. # define CURLSYS_SUFFIX_CURL_OFF_T L
  405. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  406. # endif
  407. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T socklen_t
  408. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  409. # define CURLSYS_PULL_SYS_TYPES_H 1
  410. # define CURLSYS_PULL_SYS_SOCKET_H 1
  411. #else
  412. /* generic "safe guess" on old 32 bit style */
  413. # define CURLSYS_SIZEOF_LONG 4
  414. # define CURLSYS_SIZEOF_CURL_SOCKLEN_T 4
  415. # define CURLSYS_SIZEOF_CURL_OFF_T 4
  416. # define CURLSYS_TYPEOF_CURL_OFF_T long
  417. # define CURLSYS_FORMAT_CURL_OFF_T "ld"
  418. # define CURLSYS_FORMAT_CURL_OFF_TU "lu"
  419. # define CURLSYS_SUFFIX_CURL_OFF_T L
  420. # define CURLSYS_SUFFIX_CURL_OFF_TU UL
  421. # define CURLSYS_TYPEOF_CURL_SOCKLEN_T int
  422. #endif
  423. /* CURLSYS_PULL_WS2TCPIP_H is defined above when inclusion of header file */
  424. /* ws2tcpip.h is required here to properly make type definitions below. */
  425. #ifdef CURLSYS_PULL_WS2TCPIP_H
  426. # ifndef WIN32_LEAN_AND_MEAN
  427. # define WIN32_LEAN_AND_MEAN
  428. # endif
  429. # include <windows.h>
  430. # include <winsock2.h>
  431. # include <ws2tcpip.h>
  432. #endif
  433. /* CURLSYS_PULL_SYS_TYPES_H is defined above when inclusion of header file */
  434. /* sys/types.h is required here to properly make type definitions below. */
  435. #ifdef CURLSYS_PULL_SYS_TYPES_H
  436. # include <sys/types.h>
  437. #endif
  438. /* CURLSYS_PULL_SYS_SOCKET_H is defined above when inclusion of header file */
  439. /* sys/socket.h is required here to properly make type definitions below. */
  440. #ifdef CURLSYS_PULL_SYS_SOCKET_H
  441. # include <sys/socket.h>
  442. #endif
  443. /* Data type definition of curl_socklen_t. */
  444. #ifdef CURLSYS_TYPEOF_CURL_SOCKLEN_T
  445. typedef CURLSYS_TYPEOF_CURL_SOCKLEN_T curlsys_socklen_t;
  446. #endif
  447. /* Data type definition of curl_off_t. */
  448. #ifdef CURLSYS_TYPEOF_CURL_OFF_T
  449. typedef CURLSYS_TYPEOF_CURL_OFF_T curlsys_off_t;
  450. #endif
  451. #endif /* __CURL_SYSTEM_H */