racer 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. data/LICENSE +22 -0
  2. data/bin/racer +33 -0
  3. data/ext/libuv/AUTHORS +45 -0
  4. data/ext/libuv/LICENSE +42 -0
  5. data/ext/libuv/Makefile +119 -0
  6. data/ext/libuv/README.md +88 -0
  7. data/ext/libuv/build/gcc_version.py +20 -0
  8. data/ext/libuv/common.gypi +176 -0
  9. data/ext/libuv/config-mingw.mk +61 -0
  10. data/ext/libuv/config-unix.mk +171 -0
  11. data/ext/libuv/gyp_uv +64 -0
  12. data/ext/libuv/include/ares.h +591 -0
  13. data/ext/libuv/include/ares_version.h +24 -0
  14. data/ext/libuv/include/uv-private/eio.h +403 -0
  15. data/ext/libuv/include/uv-private/ev.h +838 -0
  16. data/ext/libuv/include/uv-private/ngx-queue.h +108 -0
  17. data/ext/libuv/include/uv-private/tree.h +768 -0
  18. data/ext/libuv/include/uv-private/uv-unix.h +310 -0
  19. data/ext/libuv/include/uv-private/uv-win.h +510 -0
  20. data/ext/libuv/include/uv.h +1796 -0
  21. data/ext/libuv/src/ares/AUTHORS +37 -0
  22. data/ext/libuv/src/ares/CHANGES +1218 -0
  23. data/ext/libuv/src/ares/CMakeLists.txt +22 -0
  24. data/ext/libuv/src/ares/NEWS +21 -0
  25. data/ext/libuv/src/ares/README +60 -0
  26. data/ext/libuv/src/ares/README.cares +13 -0
  27. data/ext/libuv/src/ares/README.msvc +142 -0
  28. data/ext/libuv/src/ares/README.node +21 -0
  29. data/ext/libuv/src/ares/RELEASE-NOTES +26 -0
  30. data/ext/libuv/src/ares/TODO +23 -0
  31. data/ext/libuv/src/ares/ares__close_sockets.c +66 -0
  32. data/ext/libuv/src/ares/ares__get_hostent.c +263 -0
  33. data/ext/libuv/src/ares/ares__read_line.c +71 -0
  34. data/ext/libuv/src/ares/ares__timeval.c +111 -0
  35. data/ext/libuv/src/ares/ares_cancel.c +63 -0
  36. data/ext/libuv/src/ares/ares_data.c +190 -0
  37. data/ext/libuv/src/ares/ares_data.h +65 -0
  38. data/ext/libuv/src/ares/ares_destroy.c +105 -0
  39. data/ext/libuv/src/ares/ares_dns.h +90 -0
  40. data/ext/libuv/src/ares/ares_expand_name.c +200 -0
  41. data/ext/libuv/src/ares/ares_expand_string.c +75 -0
  42. data/ext/libuv/src/ares/ares_fds.c +63 -0
  43. data/ext/libuv/src/ares/ares_free_hostent.c +42 -0
  44. data/ext/libuv/src/ares/ares_free_string.c +25 -0
  45. data/ext/libuv/src/ares/ares_getenv.c +30 -0
  46. data/ext/libuv/src/ares/ares_getenv.h +26 -0
  47. data/ext/libuv/src/ares/ares_gethostbyaddr.c +301 -0
  48. data/ext/libuv/src/ares/ares_gethostbyname.c +523 -0
  49. data/ext/libuv/src/ares/ares_getnameinfo.c +427 -0
  50. data/ext/libuv/src/ares/ares_getopt.c +122 -0
  51. data/ext/libuv/src/ares/ares_getopt.h +53 -0
  52. data/ext/libuv/src/ares/ares_getsock.c +72 -0
  53. data/ext/libuv/src/ares/ares_init.c +1809 -0
  54. data/ext/libuv/src/ares/ares_iphlpapi.h +221 -0
  55. data/ext/libuv/src/ares/ares_ipv6.h +78 -0
  56. data/ext/libuv/src/ares/ares_library_init.c +142 -0
  57. data/ext/libuv/src/ares/ares_library_init.h +42 -0
  58. data/ext/libuv/src/ares/ares_llist.c +86 -0
  59. data/ext/libuv/src/ares/ares_llist.h +42 -0
  60. data/ext/libuv/src/ares/ares_mkquery.c +195 -0
  61. data/ext/libuv/src/ares/ares_nowarn.c +181 -0
  62. data/ext/libuv/src/ares/ares_nowarn.h +55 -0
  63. data/ext/libuv/src/ares/ares_options.c +248 -0
  64. data/ext/libuv/src/ares/ares_parse_a_reply.c +263 -0
  65. data/ext/libuv/src/ares/ares_parse_aaaa_reply.c +259 -0
  66. data/ext/libuv/src/ares/ares_parse_mx_reply.c +170 -0
  67. data/ext/libuv/src/ares/ares_parse_ns_reply.c +182 -0
  68. data/ext/libuv/src/ares/ares_parse_ptr_reply.c +217 -0
  69. data/ext/libuv/src/ares/ares_parse_srv_reply.c +179 -0
  70. data/ext/libuv/src/ares/ares_parse_txt_reply.c +201 -0
  71. data/ext/libuv/src/ares/ares_platform.c +11035 -0
  72. data/ext/libuv/src/ares/ares_platform.h +43 -0
  73. data/ext/libuv/src/ares/ares_private.h +355 -0
  74. data/ext/libuv/src/ares/ares_process.c +1295 -0
  75. data/ext/libuv/src/ares/ares_query.c +183 -0
  76. data/ext/libuv/src/ares/ares_rules.h +144 -0
  77. data/ext/libuv/src/ares/ares_search.c +321 -0
  78. data/ext/libuv/src/ares/ares_send.c +134 -0
  79. data/ext/libuv/src/ares/ares_setup.h +199 -0
  80. data/ext/libuv/src/ares/ares_strcasecmp.c +66 -0
  81. data/ext/libuv/src/ares/ares_strcasecmp.h +30 -0
  82. data/ext/libuv/src/ares/ares_strdup.c +42 -0
  83. data/ext/libuv/src/ares/ares_strdup.h +26 -0
  84. data/ext/libuv/src/ares/ares_strerror.c +56 -0
  85. data/ext/libuv/src/ares/ares_timeout.c +80 -0
  86. data/ext/libuv/src/ares/ares_version.c +11 -0
  87. data/ext/libuv/src/ares/ares_writev.c +79 -0
  88. data/ext/libuv/src/ares/ares_writev.h +36 -0
  89. data/ext/libuv/src/ares/bitncmp.c +59 -0
  90. data/ext/libuv/src/ares/bitncmp.h +26 -0
  91. data/ext/libuv/src/ares/config_cygwin/ares_config.h +512 -0
  92. data/ext/libuv/src/ares/config_darwin/ares_config.h +512 -0
  93. data/ext/libuv/src/ares/config_freebsd/ares_config.h +512 -0
  94. data/ext/libuv/src/ares/config_linux/ares_config.h +512 -0
  95. data/ext/libuv/src/ares/config_netbsd/ares_config.h +512 -0
  96. data/ext/libuv/src/ares/config_openbsd/ares_config.h +512 -0
  97. data/ext/libuv/src/ares/config_sunos/ares_config.h +512 -0
  98. data/ext/libuv/src/ares/config_win32/ares_config.h +369 -0
  99. data/ext/libuv/src/ares/get_ver.awk +35 -0
  100. data/ext/libuv/src/ares/inet_net_pton.c +451 -0
  101. data/ext/libuv/src/ares/inet_net_pton.h +31 -0
  102. data/ext/libuv/src/ares/inet_ntop.c +208 -0
  103. data/ext/libuv/src/ares/inet_ntop.h +26 -0
  104. data/ext/libuv/src/ares/nameser.h +203 -0
  105. data/ext/libuv/src/ares/setup_once.h +504 -0
  106. data/ext/libuv/src/ares/windows_port.c +22 -0
  107. data/ext/libuv/src/cares.c +225 -0
  108. data/ext/libuv/src/fs-poll.c +237 -0
  109. data/ext/libuv/src/unix/async.c +119 -0
  110. data/ext/libuv/src/unix/core.c +647 -0
  111. data/ext/libuv/src/unix/cygwin.c +84 -0
  112. data/ext/libuv/src/unix/darwin.c +341 -0
  113. data/ext/libuv/src/unix/dl.c +83 -0
  114. data/ext/libuv/src/unix/eio/Changes +63 -0
  115. data/ext/libuv/src/unix/eio/LICENSE +36 -0
  116. data/ext/libuv/src/unix/eio/Makefile.am +15 -0
  117. data/ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
  118. data/ext/libuv/src/unix/eio/autogen.sh +3 -0
  119. data/ext/libuv/src/unix/eio/config.h.in +86 -0
  120. data/ext/libuv/src/unix/eio/config_cygwin.h +80 -0
  121. data/ext/libuv/src/unix/eio/config_darwin.h +141 -0
  122. data/ext/libuv/src/unix/eio/config_freebsd.h +81 -0
  123. data/ext/libuv/src/unix/eio/config_linux.h +94 -0
  124. data/ext/libuv/src/unix/eio/config_netbsd.h +81 -0
  125. data/ext/libuv/src/unix/eio/config_openbsd.h +137 -0
  126. data/ext/libuv/src/unix/eio/config_sunos.h +84 -0
  127. data/ext/libuv/src/unix/eio/configure.ac +22 -0
  128. data/ext/libuv/src/unix/eio/demo.c +194 -0
  129. data/ext/libuv/src/unix/eio/ecb.h +370 -0
  130. data/ext/libuv/src/unix/eio/eio.3 +3428 -0
  131. data/ext/libuv/src/unix/eio/eio.c +2593 -0
  132. data/ext/libuv/src/unix/eio/eio.pod +969 -0
  133. data/ext/libuv/src/unix/eio/libeio.m4 +195 -0
  134. data/ext/libuv/src/unix/eio/xthread.h +164 -0
  135. data/ext/libuv/src/unix/error.c +104 -0
  136. data/ext/libuv/src/unix/ev/Changes +388 -0
  137. data/ext/libuv/src/unix/ev/LICENSE +36 -0
  138. data/ext/libuv/src/unix/ev/Makefile.am +18 -0
  139. data/ext/libuv/src/unix/ev/Makefile.in +771 -0
  140. data/ext/libuv/src/unix/ev/README +58 -0
  141. data/ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
  142. data/ext/libuv/src/unix/ev/autogen.sh +6 -0
  143. data/ext/libuv/src/unix/ev/config.guess +1526 -0
  144. data/ext/libuv/src/unix/ev/config.h.in +125 -0
  145. data/ext/libuv/src/unix/ev/config.sub +1658 -0
  146. data/ext/libuv/src/unix/ev/config_cygwin.h +123 -0
  147. data/ext/libuv/src/unix/ev/config_darwin.h +122 -0
  148. data/ext/libuv/src/unix/ev/config_freebsd.h +120 -0
  149. data/ext/libuv/src/unix/ev/config_linux.h +141 -0
  150. data/ext/libuv/src/unix/ev/config_netbsd.h +120 -0
  151. data/ext/libuv/src/unix/ev/config_openbsd.h +126 -0
  152. data/ext/libuv/src/unix/ev/config_sunos.h +122 -0
  153. data/ext/libuv/src/unix/ev/configure +13037 -0
  154. data/ext/libuv/src/unix/ev/configure.ac +18 -0
  155. data/ext/libuv/src/unix/ev/depcomp +630 -0
  156. data/ext/libuv/src/unix/ev/ev++.h +816 -0
  157. data/ext/libuv/src/unix/ev/ev.3 +5311 -0
  158. data/ext/libuv/src/unix/ev/ev.c +3925 -0
  159. data/ext/libuv/src/unix/ev/ev.pod +5243 -0
  160. data/ext/libuv/src/unix/ev/ev_epoll.c +266 -0
  161. data/ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
  162. data/ext/libuv/src/unix/ev/ev_poll.c +148 -0
  163. data/ext/libuv/src/unix/ev/ev_port.c +179 -0
  164. data/ext/libuv/src/unix/ev/ev_select.c +310 -0
  165. data/ext/libuv/src/unix/ev/ev_vars.h +203 -0
  166. data/ext/libuv/src/unix/ev/ev_win32.c +153 -0
  167. data/ext/libuv/src/unix/ev/ev_wrap.h +196 -0
  168. data/ext/libuv/src/unix/ev/event.c +402 -0
  169. data/ext/libuv/src/unix/ev/event.h +170 -0
  170. data/ext/libuv/src/unix/ev/install-sh +294 -0
  171. data/ext/libuv/src/unix/ev/libev.m4 +39 -0
  172. data/ext/libuv/src/unix/ev/ltmain.sh +8413 -0
  173. data/ext/libuv/src/unix/ev/missing +336 -0
  174. data/ext/libuv/src/unix/ev/mkinstalldirs +111 -0
  175. data/ext/libuv/src/unix/freebsd.c +312 -0
  176. data/ext/libuv/src/unix/fs.c +699 -0
  177. data/ext/libuv/src/unix/internal.h +180 -0
  178. data/ext/libuv/src/unix/kqueue.c +122 -0
  179. data/ext/libuv/src/unix/linux/core.c +474 -0
  180. data/ext/libuv/src/unix/linux/inotify.c +209 -0
  181. data/ext/libuv/src/unix/linux/syscalls.c +268 -0
  182. data/ext/libuv/src/unix/linux/syscalls.h +93 -0
  183. data/ext/libuv/src/unix/loop-watcher.c +63 -0
  184. data/ext/libuv/src/unix/loop.c +81 -0
  185. data/ext/libuv/src/unix/netbsd.c +108 -0
  186. data/ext/libuv/src/unix/openbsd.c +295 -0
  187. data/ext/libuv/src/unix/pipe.c +261 -0
  188. data/ext/libuv/src/unix/poll.c +116 -0
  189. data/ext/libuv/src/unix/process.c +447 -0
  190. data/ext/libuv/src/unix/stream.c +1026 -0
  191. data/ext/libuv/src/unix/sunos.c +483 -0
  192. data/ext/libuv/src/unix/tcp.c +328 -0
  193. data/ext/libuv/src/unix/thread.c +211 -0
  194. data/ext/libuv/src/unix/timer.c +138 -0
  195. data/ext/libuv/src/unix/tty.c +146 -0
  196. data/ext/libuv/src/unix/udp.c +661 -0
  197. data/ext/libuv/src/unix/uv-eio.c +107 -0
  198. data/ext/libuv/src/unix/uv-eio.h +13 -0
  199. data/ext/libuv/src/uv-common.c +384 -0
  200. data/ext/libuv/src/uv-common.h +171 -0
  201. data/ext/libuv/src/win/async.c +130 -0
  202. data/ext/libuv/src/win/core.c +283 -0
  203. data/ext/libuv/src/win/dl.c +86 -0
  204. data/ext/libuv/src/win/error.c +150 -0
  205. data/ext/libuv/src/win/fs-event.c +512 -0
  206. data/ext/libuv/src/win/fs.c +1856 -0
  207. data/ext/libuv/src/win/getaddrinfo.c +365 -0
  208. data/ext/libuv/src/win/handle-inl.h +145 -0
  209. data/ext/libuv/src/win/handle.c +150 -0
  210. data/ext/libuv/src/win/internal.h +337 -0
  211. data/ext/libuv/src/win/loop-watcher.c +123 -0
  212. data/ext/libuv/src/win/pipe.c +1675 -0
  213. data/ext/libuv/src/win/poll.c +618 -0
  214. data/ext/libuv/src/win/process-stdio.c +479 -0
  215. data/ext/libuv/src/win/process.c +1013 -0
  216. data/ext/libuv/src/win/req-inl.h +225 -0
  217. data/ext/libuv/src/win/req.c +25 -0
  218. data/ext/libuv/src/win/stream-inl.h +69 -0
  219. data/ext/libuv/src/win/stream.c +167 -0
  220. data/ext/libuv/src/win/tcp.c +1400 -0
  221. data/ext/libuv/src/win/thread.c +372 -0
  222. data/ext/libuv/src/win/threadpool.c +74 -0
  223. data/ext/libuv/src/win/timer.c +226 -0
  224. data/ext/libuv/src/win/tty.c +1801 -0
  225. data/ext/libuv/src/win/udp.c +718 -0
  226. data/ext/libuv/src/win/util.c +864 -0
  227. data/ext/libuv/src/win/winapi.c +132 -0
  228. data/ext/libuv/src/win/winapi.h +4443 -0
  229. data/ext/libuv/src/win/winsock.c +557 -0
  230. data/ext/libuv/src/win/winsock.h +171 -0
  231. data/ext/libuv/test/benchmark-ares.c +117 -0
  232. data/ext/libuv/test/benchmark-fs-stat.c +164 -0
  233. data/ext/libuv/test/benchmark-getaddrinfo.c +94 -0
  234. data/ext/libuv/test/benchmark-list.h +114 -0
  235. data/ext/libuv/test/benchmark-loop-count.c +88 -0
  236. data/ext/libuv/test/benchmark-million-timers.c +65 -0
  237. data/ext/libuv/test/benchmark-ping-pongs.c +213 -0
  238. data/ext/libuv/test/benchmark-pound.c +324 -0
  239. data/ext/libuv/test/benchmark-pump.c +462 -0
  240. data/ext/libuv/test/benchmark-sizes.c +42 -0
  241. data/ext/libuv/test/benchmark-spawn.c +162 -0
  242. data/ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
  243. data/ext/libuv/test/benchmark-thread.c +64 -0
  244. data/ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
  245. data/ext/libuv/test/blackhole-server.c +118 -0
  246. data/ext/libuv/test/dns-server.c +321 -0
  247. data/ext/libuv/test/echo-server.c +378 -0
  248. data/ext/libuv/test/fixtures/empty_file +0 -0
  249. data/ext/libuv/test/fixtures/load_error.node +1 -0
  250. data/ext/libuv/test/run-benchmarks.c +64 -0
  251. data/ext/libuv/test/run-tests.c +138 -0
  252. data/ext/libuv/test/runner-unix.c +290 -0
  253. data/ext/libuv/test/runner-unix.h +36 -0
  254. data/ext/libuv/test/runner-win.c +285 -0
  255. data/ext/libuv/test/runner-win.h +42 -0
  256. data/ext/libuv/test/runner.c +326 -0
  257. data/ext/libuv/test/runner.h +159 -0
  258. data/ext/libuv/test/task.h +109 -0
  259. data/ext/libuv/test/test-async.c +118 -0
  260. data/ext/libuv/test/test-callback-order.c +76 -0
  261. data/ext/libuv/test/test-callback-stack.c +203 -0
  262. data/ext/libuv/test/test-connection-fail.c +148 -0
  263. data/ext/libuv/test/test-counters-init.c +215 -0
  264. data/ext/libuv/test/test-cwd-and-chdir.c +64 -0
  265. data/ext/libuv/test/test-delayed-accept.c +197 -0
  266. data/ext/libuv/test/test-dlerror.c +58 -0
  267. data/ext/libuv/test/test-error.c +59 -0
  268. data/ext/libuv/test/test-fail-always.c +29 -0
  269. data/ext/libuv/test/test-fs-event.c +442 -0
  270. data/ext/libuv/test/test-fs-poll.c +146 -0
  271. data/ext/libuv/test/test-fs.c +1843 -0
  272. data/ext/libuv/test/test-get-currentexe.c +63 -0
  273. data/ext/libuv/test/test-get-loadavg.c +36 -0
  274. data/ext/libuv/test/test-get-memory.c +38 -0
  275. data/ext/libuv/test/test-getaddrinfo.c +122 -0
  276. data/ext/libuv/test/test-gethostbyname.c +189 -0
  277. data/ext/libuv/test/test-getsockname.c +342 -0
  278. data/ext/libuv/test/test-hrtime.c +54 -0
  279. data/ext/libuv/test/test-idle.c +81 -0
  280. data/ext/libuv/test/test-ipc-send-recv.c +209 -0
  281. data/ext/libuv/test/test-ipc.c +620 -0
  282. data/ext/libuv/test/test-list.h +421 -0
  283. data/ext/libuv/test/test-loop-handles.c +336 -0
  284. data/ext/libuv/test/test-multiple-listen.c +102 -0
  285. data/ext/libuv/test/test-mutexes.c +63 -0
  286. data/ext/libuv/test/test-pass-always.c +28 -0
  287. data/ext/libuv/test/test-ping-pong.c +253 -0
  288. data/ext/libuv/test/test-pipe-bind-error.c +140 -0
  289. data/ext/libuv/test/test-pipe-connect-error.c +96 -0
  290. data/ext/libuv/test/test-platform-output.c +87 -0
  291. data/ext/libuv/test/test-poll-close.c +77 -0
  292. data/ext/libuv/test/test-poll.c +573 -0
  293. data/ext/libuv/test/test-process-title.c +42 -0
  294. data/ext/libuv/test/test-ref.c +338 -0
  295. data/ext/libuv/test/test-run-once.c +48 -0
  296. data/ext/libuv/test/test-semaphore.c +111 -0
  297. data/ext/libuv/test/test-shutdown-close.c +103 -0
  298. data/ext/libuv/test/test-shutdown-eof.c +183 -0
  299. data/ext/libuv/test/test-spawn.c +847 -0
  300. data/ext/libuv/test/test-stdio-over-pipes.c +246 -0
  301. data/ext/libuv/test/test-tcp-bind-error.c +191 -0
  302. data/ext/libuv/test/test-tcp-bind6-error.c +154 -0
  303. data/ext/libuv/test/test-tcp-close-while-connecting.c +80 -0
  304. data/ext/libuv/test/test-tcp-close.c +129 -0
  305. data/ext/libuv/test/test-tcp-connect-error-after-write.c +95 -0
  306. data/ext/libuv/test/test-tcp-connect-error.c +70 -0
  307. data/ext/libuv/test/test-tcp-connect-timeout.c +85 -0
  308. data/ext/libuv/test/test-tcp-connect6-error.c +68 -0
  309. data/ext/libuv/test/test-tcp-flags.c +51 -0
  310. data/ext/libuv/test/test-tcp-shutdown-after-write.c +131 -0
  311. data/ext/libuv/test/test-tcp-write-error.c +168 -0
  312. data/ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
  313. data/ext/libuv/test/test-tcp-writealot.c +170 -0
  314. data/ext/libuv/test/test-thread.c +183 -0
  315. data/ext/libuv/test/test-threadpool.c +57 -0
  316. data/ext/libuv/test/test-timer-again.c +141 -0
  317. data/ext/libuv/test/test-timer.c +152 -0
  318. data/ext/libuv/test/test-tty.c +110 -0
  319. data/ext/libuv/test/test-udp-dgram-too-big.c +86 -0
  320. data/ext/libuv/test/test-udp-ipv6.c +156 -0
  321. data/ext/libuv/test/test-udp-multicast-join.c +139 -0
  322. data/ext/libuv/test/test-udp-multicast-ttl.c +86 -0
  323. data/ext/libuv/test/test-udp-options.c +86 -0
  324. data/ext/libuv/test/test-udp-send-and-recv.c +208 -0
  325. data/ext/libuv/test/test-util.c +97 -0
  326. data/ext/libuv/test/test-walk-handles.c +77 -0
  327. data/ext/libuv/uv.gyp +452 -0
  328. data/ext/libuv/vcbuild.bat +105 -0
  329. data/ext/racer/extconf.rb +20 -0
  330. data/ext/racer/http_parser.c +2059 -0
  331. data/ext/racer/http_parser.h +318 -0
  332. data/ext/racer/mkmf.log +22 -0
  333. data/ext/racer/racer.c +551 -0
  334. data/lib/racer.rb +2 -0
  335. data/lib/racer/version.rb +3 -0
  336. metadata +382 -0
@@ -0,0 +1,504 @@
1
+ #ifndef __SETUP_ONCE_H
2
+ #define __SETUP_ONCE_H
3
+
4
+
5
+ /* Copyright (C) 2004 - 2011 by Daniel Stenberg et al
6
+ *
7
+ * Permission to use, copy, modify, and distribute this software and its
8
+ * documentation for any purpose and without fee is hereby granted, provided
9
+ * that the above copyright notice appear in all copies and that both that
10
+ * copyright notice and this permission notice appear in supporting
11
+ * documentation, and that the name of M.I.T. not be used in advertising or
12
+ * publicity pertaining to distribution of the software without specific,
13
+ * written prior permission. M.I.T. makes no representations about the
14
+ * suitability of this software for any purpose. It is provided "as is"
15
+ * without express or implied warranty.
16
+ */
17
+
18
+
19
+ /********************************************************************
20
+ * NOTICE *
21
+ * ======== *
22
+ * *
23
+ * Content of header files lib/setup_once.h and ares/setup_once.h *
24
+ * must be kept in sync. Modify the other one if you change this. *
25
+ * *
26
+ ********************************************************************/
27
+
28
+
29
+ /*
30
+ * Inclusion of common header files.
31
+ */
32
+
33
+ #include <stdio.h>
34
+ #include <stdlib.h>
35
+ #include <string.h>
36
+ #include <stdarg.h>
37
+ #include <ctype.h>
38
+
39
+ #ifdef HAVE_ERRNO_H
40
+ #include <errno.h>
41
+ #endif
42
+
43
+ #ifdef HAVE_SYS_TYPES_H
44
+ #include <sys/types.h>
45
+ #endif
46
+
47
+ #ifdef NEED_MALLOC_H
48
+ #include <malloc.h>
49
+ #endif
50
+
51
+ #ifdef NEED_MEMORY_H
52
+ #include <memory.h>
53
+ #endif
54
+
55
+ #ifdef HAVE_SYS_STAT_H
56
+ #include <sys/stat.h>
57
+ #endif
58
+
59
+ #ifdef HAVE_SYS_TIME_H
60
+ #include <sys/time.h>
61
+ #ifdef TIME_WITH_SYS_TIME
62
+ #include <time.h>
63
+ #endif
64
+ #else
65
+ #ifdef HAVE_TIME_H
66
+ #include <time.h>
67
+ #endif
68
+ #endif
69
+
70
+ #ifdef WIN32
71
+ #include <io.h>
72
+ #include <fcntl.h>
73
+ #endif
74
+
75
+ #ifdef HAVE_STDBOOL_H
76
+ #include <stdbool.h>
77
+ #endif
78
+
79
+
80
+ /*
81
+ * Definition of timeval struct for platforms that don't have it.
82
+ */
83
+
84
+ #ifndef HAVE_STRUCT_TIMEVAL
85
+ struct timeval {
86
+ long tv_sec;
87
+ long tv_usec;
88
+ };
89
+ #endif
90
+
91
+
92
+ /*
93
+ * If we have the MSG_NOSIGNAL define, make sure we use
94
+ * it as the fourth argument of function send()
95
+ */
96
+
97
+ #ifdef HAVE_MSG_NOSIGNAL
98
+ #define SEND_4TH_ARG MSG_NOSIGNAL
99
+ #else
100
+ #define SEND_4TH_ARG 0
101
+ #endif
102
+
103
+
104
+ #if defined(__minix)
105
+ /* Minix doesn't support recv on TCP sockets */
106
+ #define sread(x,y,z) (ssize_t)read((RECV_TYPE_ARG1)(x), \
107
+ (RECV_TYPE_ARG2)(y), \
108
+ (RECV_TYPE_ARG3)(z))
109
+
110
+ #elif defined(HAVE_RECV)
111
+ /*
112
+ * The definitions for the return type and arguments types
113
+ * of functions recv() and send() belong and come from the
114
+ * configuration file. Do not define them in any other place.
115
+ *
116
+ * HAVE_RECV is defined if you have a function named recv()
117
+ * which is used to read incoming data from sockets. If your
118
+ * function has another name then don't define HAVE_RECV.
119
+ *
120
+ * If HAVE_RECV is defined then RECV_TYPE_ARG1, RECV_TYPE_ARG2,
121
+ * RECV_TYPE_ARG3, RECV_TYPE_ARG4 and RECV_TYPE_RETV must also
122
+ * be defined.
123
+ *
124
+ * HAVE_SEND is defined if you have a function named send()
125
+ * which is used to write outgoing data on a connected socket.
126
+ * If yours has another name then don't define HAVE_SEND.
127
+ *
128
+ * If HAVE_SEND is defined then SEND_TYPE_ARG1, SEND_QUAL_ARG2,
129
+ * SEND_TYPE_ARG2, SEND_TYPE_ARG3, SEND_TYPE_ARG4 and
130
+ * SEND_TYPE_RETV must also be defined.
131
+ */
132
+
133
+ #if !defined(RECV_TYPE_ARG1) || \
134
+ !defined(RECV_TYPE_ARG2) || \
135
+ !defined(RECV_TYPE_ARG3) || \
136
+ !defined(RECV_TYPE_ARG4) || \
137
+ !defined(RECV_TYPE_RETV)
138
+ /* */
139
+ Error Missing_definition_of_return_and_arguments_types_of_recv
140
+ /* */
141
+ #else
142
+ #define sread(x,y,z) (ssize_t)recv((RECV_TYPE_ARG1)(x), \
143
+ (RECV_TYPE_ARG2)(y), \
144
+ (RECV_TYPE_ARG3)(z), \
145
+ (RECV_TYPE_ARG4)(0))
146
+ #endif
147
+ #else /* HAVE_RECV */
148
+ #ifndef sread
149
+ /* */
150
+ Error Missing_definition_of_macro_sread
151
+ /* */
152
+ #endif
153
+ #endif /* HAVE_RECV */
154
+
155
+
156
+ #if defined(__minix)
157
+ /* Minix doesn't support send on TCP sockets */
158
+ #define swrite(x,y,z) (ssize_t)write((SEND_TYPE_ARG1)(x), \
159
+ (SEND_TYPE_ARG2)(y), \
160
+ (SEND_TYPE_ARG3)(z))
161
+
162
+ #elif defined(HAVE_SEND)
163
+ #if !defined(SEND_TYPE_ARG1) || \
164
+ !defined(SEND_QUAL_ARG2) || \
165
+ !defined(SEND_TYPE_ARG2) || \
166
+ !defined(SEND_TYPE_ARG3) || \
167
+ !defined(SEND_TYPE_ARG4) || \
168
+ !defined(SEND_TYPE_RETV)
169
+ /* */
170
+ Error Missing_definition_of_return_and_arguments_types_of_send
171
+ /* */
172
+ #else
173
+ #define swrite(x,y,z) (ssize_t)send((SEND_TYPE_ARG1)(x), \
174
+ (SEND_TYPE_ARG2)(y), \
175
+ (SEND_TYPE_ARG3)(z), \
176
+ (SEND_TYPE_ARG4)(SEND_4TH_ARG))
177
+ #endif
178
+ #else /* HAVE_SEND */
179
+ #ifndef swrite
180
+ /* */
181
+ Error Missing_definition_of_macro_swrite
182
+ /* */
183
+ #endif
184
+ #endif /* HAVE_SEND */
185
+
186
+
187
+ #if 0
188
+ #if defined(HAVE_RECVFROM)
189
+ /*
190
+ * Currently recvfrom is only used on udp sockets.
191
+ */
192
+ #if !defined(RECVFROM_TYPE_ARG1) || \
193
+ !defined(RECVFROM_TYPE_ARG2) || \
194
+ !defined(RECVFROM_TYPE_ARG3) || \
195
+ !defined(RECVFROM_TYPE_ARG4) || \
196
+ !defined(RECVFROM_TYPE_ARG5) || \
197
+ !defined(RECVFROM_TYPE_ARG6) || \
198
+ !defined(RECVFROM_TYPE_RETV)
199
+ /* */
200
+ Error Missing_definition_of_return_and_arguments_types_of_recvfrom
201
+ /* */
202
+ #else
203
+ #define sreadfrom(s,b,bl,f,fl) (ssize_t)recvfrom((RECVFROM_TYPE_ARG1) (s), \
204
+ (RECVFROM_TYPE_ARG2 *)(b), \
205
+ (RECVFROM_TYPE_ARG3) (bl), \
206
+ (RECVFROM_TYPE_ARG4) (0), \
207
+ (RECVFROM_TYPE_ARG5 *)(f), \
208
+ (RECVFROM_TYPE_ARG6 *)(fl))
209
+ #endif
210
+ #else /* HAVE_RECVFROM */
211
+ #ifndef sreadfrom
212
+ /* */
213
+ Error Missing_definition_of_macro_sreadfrom
214
+ /* */
215
+ #endif
216
+ #endif /* HAVE_RECVFROM */
217
+
218
+
219
+ #ifdef RECVFROM_TYPE_ARG6_IS_VOID
220
+ # define RECVFROM_ARG6_T int
221
+ #else
222
+ # define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6
223
+ #endif
224
+ #endif /* if 0 */
225
+
226
+
227
+ /*
228
+ * Function-like macro definition used to close a socket.
229
+ */
230
+
231
+ #if defined(HAVE_CLOSESOCKET)
232
+ # define sclose(x) closesocket((x))
233
+ #elif defined(HAVE_CLOSESOCKET_CAMEL)
234
+ # define sclose(x) CloseSocket((x))
235
+ #else
236
+ # define sclose(x) close((x))
237
+ #endif
238
+
239
+
240
+ /*
241
+ * Uppercase macro versions of ANSI/ISO is*() functions/macros which
242
+ * avoid negative number inputs with argument byte codes > 127.
243
+ */
244
+
245
+ #define ISSPACE(x) (isspace((int) ((unsigned char)x)))
246
+ #define ISDIGIT(x) (isdigit((int) ((unsigned char)x)))
247
+ #define ISALNUM(x) (isalnum((int) ((unsigned char)x)))
248
+ #define ISXDIGIT(x) (isxdigit((int) ((unsigned char)x)))
249
+ #define ISGRAPH(x) (isgraph((int) ((unsigned char)x)))
250
+ #define ISALPHA(x) (isalpha((int) ((unsigned char)x)))
251
+ #define ISPRINT(x) (isprint((int) ((unsigned char)x)))
252
+ #define ISUPPER(x) (isupper((int) ((unsigned char)x)))
253
+ #define ISLOWER(x) (islower((int) ((unsigned char)x)))
254
+ #define ISASCII(x) (isascii((int) ((unsigned char)x)))
255
+
256
+ #define ISBLANK(x) (int)((((unsigned char)x) == ' ') || \
257
+ (((unsigned char)x) == '\t'))
258
+
259
+ #define TOLOWER(x) (tolower((int) ((unsigned char)x)))
260
+
261
+
262
+ /*
263
+ * 'bool' exists on platforms with <stdbool.h>, i.e. C99 platforms.
264
+ * On non-C99 platforms there's no bool, so define an enum for that.
265
+ * On C99 platforms 'false' and 'true' also exist. Enum uses a
266
+ * global namespace though, so use bool_false and bool_true.
267
+ */
268
+
269
+ #ifndef HAVE_BOOL_T
270
+ typedef enum {
271
+ bool_false = 0,
272
+ bool_true = 1
273
+ } bool;
274
+
275
+ /*
276
+ * Use a define to let 'true' and 'false' use those enums. There
277
+ * are currently no use of true and false in libcurl proper, but
278
+ * there are some in the examples. This will cater for any later
279
+ * code happening to use true and false.
280
+ */
281
+ # define false bool_false
282
+ # define true bool_true
283
+ # define HAVE_BOOL_T
284
+ #endif
285
+
286
+
287
+ /*
288
+ * Redefine TRUE and FALSE too, to catch current use. With this
289
+ * change, 'bool found = 1' will give a warning on MIPSPro, but
290
+ * 'bool found = TRUE' will not. Change tested on IRIX/MIPSPro,
291
+ * AIX 5.1/Xlc, Tru64 5.1/cc, w/make test too.
292
+ */
293
+
294
+ #ifndef TRUE
295
+ #define TRUE true
296
+ #endif
297
+ #ifndef FALSE
298
+ #define FALSE false
299
+ #endif
300
+
301
+
302
+ /*
303
+ * Typedef to 'int' if sig_atomic_t is not an available 'typedefed' type.
304
+ */
305
+
306
+ #ifndef HAVE_SIG_ATOMIC_T
307
+ typedef int sig_atomic_t;
308
+ #define HAVE_SIG_ATOMIC_T
309
+ #endif
310
+
311
+
312
+ /*
313
+ * Convenience SIG_ATOMIC_T definition
314
+ */
315
+
316
+ #ifdef HAVE_SIG_ATOMIC_T_VOLATILE
317
+ #define SIG_ATOMIC_T static sig_atomic_t
318
+ #else
319
+ #define SIG_ATOMIC_T static volatile sig_atomic_t
320
+ #endif
321
+
322
+
323
+ /*
324
+ * Default return type for signal handlers.
325
+ */
326
+
327
+ #ifndef RETSIGTYPE
328
+ #define RETSIGTYPE void
329
+ #endif
330
+
331
+
332
+ /*
333
+ * Macro used to include code only in debug builds.
334
+ */
335
+
336
+ #ifdef DEBUGBUILD
337
+ #define DEBUGF(x) x
338
+ #else
339
+ #define DEBUGF(x) do { } while (0)
340
+ #endif
341
+
342
+
343
+ /*
344
+ * Macro used to include assertion code only in debug builds.
345
+ */
346
+
347
+ #if defined(DEBUGBUILD) && defined(HAVE_ASSERT_H)
348
+ #define DEBUGASSERT(x) assert(x)
349
+ #else
350
+ #define DEBUGASSERT(x) do { } while (0)
351
+ #endif
352
+
353
+
354
+ /*
355
+ * Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno
356
+ * (or equivalent) on this platform to hide platform details to code using it.
357
+ */
358
+
359
+ #ifdef USE_WINSOCK
360
+ #define SOCKERRNO ((int)WSAGetLastError())
361
+ #define SET_SOCKERRNO(x) (WSASetLastError((int)(x)))
362
+ #else
363
+ #define SOCKERRNO (errno)
364
+ #define SET_SOCKERRNO(x) (errno = (x))
365
+ #endif
366
+
367
+
368
+ /*
369
+ * Macro ERRNO / SET_ERRNO() returns / sets the NOT *socket-related* errno
370
+ * (or equivalent) on this platform to hide platform details to code using it.
371
+ */
372
+
373
+ #if defined(WIN32) && !defined(WATT32)
374
+ #define ERRNO ((int)GetLastError())
375
+ #define SET_ERRNO(x) (SetLastError((DWORD)(x)))
376
+ #else
377
+ #define ERRNO (errno)
378
+ #define SET_ERRNO(x) (errno = (x))
379
+ #endif
380
+
381
+
382
+ /*
383
+ * Portable error number symbolic names defined to Winsock error codes.
384
+ */
385
+
386
+ #ifdef USE_WINSOCK
387
+ #undef EBADF /* override definition in errno.h */
388
+ #define EBADF WSAEBADF
389
+ #undef EINTR /* override definition in errno.h */
390
+ #define EINTR WSAEINTR
391
+ #undef EINVAL /* override definition in errno.h */
392
+ #define EINVAL WSAEINVAL
393
+ #undef EWOULDBLOCK /* override definition in errno.h */
394
+ #define EWOULDBLOCK WSAEWOULDBLOCK
395
+ #undef EINPROGRESS /* override definition in errno.h */
396
+ #define EINPROGRESS WSAEINPROGRESS
397
+ #undef EALREADY /* override definition in errno.h */
398
+ #define EALREADY WSAEALREADY
399
+ #undef ENOTSOCK /* override definition in errno.h */
400
+ #define ENOTSOCK WSAENOTSOCK
401
+ #undef EDESTADDRREQ /* override definition in errno.h */
402
+ #define EDESTADDRREQ WSAEDESTADDRREQ
403
+ #undef EMSGSIZE /* override definition in errno.h */
404
+ #define EMSGSIZE WSAEMSGSIZE
405
+ #undef EPROTOTYPE /* override definition in errno.h */
406
+ #define EPROTOTYPE WSAEPROTOTYPE
407
+ #undef ENOPROTOOPT /* override definition in errno.h */
408
+ #define ENOPROTOOPT WSAENOPROTOOPT
409
+ #undef EPROTONOSUPPORT /* override definition in errno.h */
410
+ #define EPROTONOSUPPORT WSAEPROTONOSUPPORT
411
+ #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
412
+ #undef EOPNOTSUPP /* override definition in errno.h */
413
+ #define EOPNOTSUPP WSAEOPNOTSUPP
414
+ #define EPFNOSUPPORT WSAEPFNOSUPPORT
415
+ #undef EAFNOSUPPORT /* override definition in errno.h */
416
+ #define EAFNOSUPPORT WSAEAFNOSUPPORT
417
+ #undef EADDRINUSE /* override definition in errno.h */
418
+ #define EADDRINUSE WSAEADDRINUSE
419
+ #undef EADDRNOTAVAIL /* override definition in errno.h */
420
+ #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
421
+ #undef ENETDOWN /* override definition in errno.h */
422
+ #define ENETDOWN WSAENETDOWN
423
+ #undef ENETUNREACH /* override definition in errno.h */
424
+ #define ENETUNREACH WSAENETUNREACH
425
+ #undef ENETRESET /* override definition in errno.h */
426
+ #define ENETRESET WSAENETRESET
427
+ #undef ECONNABORTED /* override definition in errno.h */
428
+ #define ECONNABORTED WSAECONNABORTED
429
+ #undef ECONNRESET /* override definition in errno.h */
430
+ #define ECONNRESET WSAECONNRESET
431
+ #undef ENOBUFS /* override definition in errno.h */
432
+ #define ENOBUFS WSAENOBUFS
433
+ #undef EISCONN /* override definition in errno.h */
434
+ #define EISCONN WSAEISCONN
435
+ #undef ENOTCONN /* override definition in errno.h */
436
+ #define ENOTCONN WSAENOTCONN
437
+ #define ESHUTDOWN WSAESHUTDOWN
438
+ #define ETOOMANYREFS WSAETOOMANYREFS
439
+ #undef ETIMEDOUT /* override definition in errno.h */
440
+ #define ETIMEDOUT WSAETIMEDOUT
441
+ #undef ECONNREFUSED /* override definition in errno.h */
442
+ #define ECONNREFUSED WSAECONNREFUSED
443
+ #undef ELOOP /* override definition in errno.h */
444
+ #define ELOOP WSAELOOP
445
+ #ifndef ENAMETOOLONG /* possible previous definition in errno.h */
446
+ #define ENAMETOOLONG WSAENAMETOOLONG
447
+ #endif
448
+ #define EHOSTDOWN WSAEHOSTDOWN
449
+ #undef EHOSTUNREACH /* override definition in errno.h */
450
+ #define EHOSTUNREACH WSAEHOSTUNREACH
451
+ #ifndef ENOTEMPTY /* possible previous definition in errno.h */
452
+ #define ENOTEMPTY WSAENOTEMPTY
453
+ #endif
454
+ #define EPROCLIM WSAEPROCLIM
455
+ #define EUSERS WSAEUSERS
456
+ #define EDQUOT WSAEDQUOT
457
+ #define ESTALE WSAESTALE
458
+ #define EREMOTE WSAEREMOTE
459
+ #endif
460
+
461
+
462
+ /*
463
+ * System error codes for Windows CE
464
+ */
465
+
466
+ #if defined(WIN32) && !defined(HAVE_ERRNO_H)
467
+ #define ENOENT ERROR_FILE_NOT_FOUND
468
+ #define ESRCH ERROR_PATH_NOT_FOUND
469
+ #define ENOMEM ERROR_NOT_ENOUGH_MEMORY
470
+ #define ENOSPC ERROR_INVALID_PARAMETER
471
+ #endif
472
+
473
+
474
+ /*
475
+ * Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid()
476
+ */
477
+
478
+ #if defined(__VMS) && \
479
+ defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64)
480
+ #define getpwuid __32_getpwuid
481
+ #endif
482
+
483
+
484
+ /*
485
+ * Macro argv_item_t hides platform details to code using it.
486
+ */
487
+
488
+ #ifdef __VMS
489
+ #define argv_item_t __char_ptr32
490
+ #else
491
+ #define argv_item_t char *
492
+ #endif
493
+
494
+
495
+ /*
496
+ * We use this ZERO_NULL to avoid picky compiler warnings,
497
+ * when assigning a NULL pointer to a function pointer var.
498
+ */
499
+
500
+ #define ZERO_NULL 0
501
+
502
+
503
+ #endif /* __SETUP_ONCE_H */
504
+