racer 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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,336 @@
1
+ #! /bin/sh
2
+ # Common stub for a few missing GNU programs while installing.
3
+ # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
4
+ # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
5
+
6
+ # This program is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation; either version 2, or (at your option)
9
+ # any later version.
10
+
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with this program; if not, write to the Free Software
18
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
+ # 02111-1307, USA.
20
+
21
+ # As a special exception to the GNU General Public License, if you
22
+ # distribute this file as part of a program that contains a
23
+ # configuration script generated by Autoconf, you may include it under
24
+ # the same distribution terms that you use for the rest of that program.
25
+
26
+ if test $# -eq 0; then
27
+ echo 1>&2 "Try \`$0 --help' for more information"
28
+ exit 1
29
+ fi
30
+
31
+ run=:
32
+
33
+ # In the cases where this matters, `missing' is being run in the
34
+ # srcdir already.
35
+ if test -f configure.ac; then
36
+ configure_ac=configure.ac
37
+ else
38
+ configure_ac=configure.in
39
+ fi
40
+
41
+ case "$1" in
42
+ --run)
43
+ # Try to run requested program, and just exit if it succeeds.
44
+ run=
45
+ shift
46
+ "$@" && exit 0
47
+ ;;
48
+ esac
49
+
50
+ # If it does not exist, or fails to run (possibly an outdated version),
51
+ # try to emulate it.
52
+ case "$1" in
53
+
54
+ -h|--h|--he|--hel|--help)
55
+ echo "\
56
+ $0 [OPTION]... PROGRAM [ARGUMENT]...
57
+
58
+ Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
59
+ error status if there is no known handling for PROGRAM.
60
+
61
+ Options:
62
+ -h, --help display this help and exit
63
+ -v, --version output version information and exit
64
+ --run try to run the given command, and emulate it if it fails
65
+
66
+ Supported PROGRAM values:
67
+ aclocal touch file \`aclocal.m4'
68
+ autoconf touch file \`configure'
69
+ autoheader touch file \`config.h.in'
70
+ automake touch all \`Makefile.in' files
71
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
72
+ flex create \`lex.yy.c', if possible, from existing .c
73
+ help2man touch the output file
74
+ lex create \`lex.yy.c', if possible, from existing .c
75
+ makeinfo touch the output file
76
+ tar try tar, gnutar, gtar, then tar without non-portable flags
77
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
78
+ ;;
79
+
80
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
81
+ echo "missing 0.4 - GNU automake"
82
+ ;;
83
+
84
+ -*)
85
+ echo 1>&2 "$0: Unknown \`$1' option"
86
+ echo 1>&2 "Try \`$0 --help' for more information"
87
+ exit 1
88
+ ;;
89
+
90
+ aclocal*)
91
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
92
+ # We have it, but it failed.
93
+ exit 1
94
+ fi
95
+
96
+ echo 1>&2 "\
97
+ WARNING: \`$1' is missing on your system. You should only need it if
98
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
99
+ to install the \`Automake' and \`Perl' packages. Grab them from
100
+ any GNU archive site."
101
+ touch aclocal.m4
102
+ ;;
103
+
104
+ autoconf)
105
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
106
+ # We have it, but it failed.
107
+ exit 1
108
+ fi
109
+
110
+ echo 1>&2 "\
111
+ WARNING: \`$1' is missing on your system. You should only need it if
112
+ you modified \`${configure_ac}'. You might want to install the
113
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
114
+ archive site."
115
+ touch configure
116
+ ;;
117
+
118
+ autoheader)
119
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
120
+ # We have it, but it failed.
121
+ exit 1
122
+ fi
123
+
124
+ echo 1>&2 "\
125
+ WARNING: \`$1' is missing on your system. You should only need it if
126
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
127
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
128
+ from any GNU archive site."
129
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
130
+ test -z "$files" && files="config.h"
131
+ touch_files=
132
+ for f in $files; do
133
+ case "$f" in
134
+ *:*) touch_files="$touch_files "`echo "$f" |
135
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
136
+ *) touch_files="$touch_files $f.in";;
137
+ esac
138
+ done
139
+ touch $touch_files
140
+ ;;
141
+
142
+ automake*)
143
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
144
+ # We have it, but it failed.
145
+ exit 1
146
+ fi
147
+
148
+ echo 1>&2 "\
149
+ WARNING: \`$1' is missing on your system. You should only need it if
150
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
151
+ You might want to install the \`Automake' and \`Perl' packages.
152
+ Grab them from any GNU archive site."
153
+ find . -type f -name Makefile.am -print |
154
+ sed 's/\.am$/.in/' |
155
+ while read f; do touch "$f"; done
156
+ ;;
157
+
158
+ autom4te)
159
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
160
+ # We have it, but it failed.
161
+ exit 1
162
+ fi
163
+
164
+ echo 1>&2 "\
165
+ WARNING: \`$1' is needed, and you do not seem to have it handy on your
166
+ system. You might have modified some files without having the
167
+ proper tools for further handling them.
168
+ You can get \`$1' as part of \`Autoconf' from any GNU
169
+ archive site."
170
+
171
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
172
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
173
+ if test -f "$file"; then
174
+ touch $file
175
+ else
176
+ test -z "$file" || exec >$file
177
+ echo "#! /bin/sh"
178
+ echo "# Created by GNU Automake missing as a replacement of"
179
+ echo "# $ $@"
180
+ echo "exit 0"
181
+ chmod +x $file
182
+ exit 1
183
+ fi
184
+ ;;
185
+
186
+ bison|yacc)
187
+ echo 1>&2 "\
188
+ WARNING: \`$1' is missing on your system. You should only need it if
189
+ you modified a \`.y' file. You may need the \`Bison' package
190
+ in order for those modifications to take effect. You can get
191
+ \`Bison' from any GNU archive site."
192
+ rm -f y.tab.c y.tab.h
193
+ if [ $# -ne 1 ]; then
194
+ eval LASTARG="\${$#}"
195
+ case "$LASTARG" in
196
+ *.y)
197
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
198
+ if [ -f "$SRCFILE" ]; then
199
+ cp "$SRCFILE" y.tab.c
200
+ fi
201
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
202
+ if [ -f "$SRCFILE" ]; then
203
+ cp "$SRCFILE" y.tab.h
204
+ fi
205
+ ;;
206
+ esac
207
+ fi
208
+ if [ ! -f y.tab.h ]; then
209
+ echo >y.tab.h
210
+ fi
211
+ if [ ! -f y.tab.c ]; then
212
+ echo 'main() { return 0; }' >y.tab.c
213
+ fi
214
+ ;;
215
+
216
+ lex|flex)
217
+ echo 1>&2 "\
218
+ WARNING: \`$1' is missing on your system. You should only need it if
219
+ you modified a \`.l' file. You may need the \`Flex' package
220
+ in order for those modifications to take effect. You can get
221
+ \`Flex' from any GNU archive site."
222
+ rm -f lex.yy.c
223
+ if [ $# -ne 1 ]; then
224
+ eval LASTARG="\${$#}"
225
+ case "$LASTARG" in
226
+ *.l)
227
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
228
+ if [ -f "$SRCFILE" ]; then
229
+ cp "$SRCFILE" lex.yy.c
230
+ fi
231
+ ;;
232
+ esac
233
+ fi
234
+ if [ ! -f lex.yy.c ]; then
235
+ echo 'main() { return 0; }' >lex.yy.c
236
+ fi
237
+ ;;
238
+
239
+ help2man)
240
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
241
+ # We have it, but it failed.
242
+ exit 1
243
+ fi
244
+
245
+ echo 1>&2 "\
246
+ WARNING: \`$1' is missing on your system. You should only need it if
247
+ you modified a dependency of a manual page. You may need the
248
+ \`Help2man' package in order for those modifications to take
249
+ effect. You can get \`Help2man' from any GNU archive site."
250
+
251
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
252
+ if test -z "$file"; then
253
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
254
+ fi
255
+ if [ -f "$file" ]; then
256
+ touch $file
257
+ else
258
+ test -z "$file" || exec >$file
259
+ echo ".ab help2man is required to generate this page"
260
+ exit 1
261
+ fi
262
+ ;;
263
+
264
+ makeinfo)
265
+ if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
266
+ # We have makeinfo, but it failed.
267
+ exit 1
268
+ fi
269
+
270
+ echo 1>&2 "\
271
+ WARNING: \`$1' is missing on your system. You should only need it if
272
+ you modified a \`.texi' or \`.texinfo' file, or any other file
273
+ indirectly affecting the aspect of the manual. The spurious
274
+ call might also be the consequence of using a buggy \`make' (AIX,
275
+ DU, IRIX). You might want to install the \`Texinfo' package or
276
+ the \`GNU make' package. Grab either from any GNU archive site."
277
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
278
+ if test -z "$file"; then
279
+ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
280
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
281
+ fi
282
+ touch $file
283
+ ;;
284
+
285
+ tar)
286
+ shift
287
+ if test -n "$run"; then
288
+ echo 1>&2 "ERROR: \`tar' requires --run"
289
+ exit 1
290
+ fi
291
+
292
+ # We have already tried tar in the generic part.
293
+ # Look for gnutar/gtar before invocation to avoid ugly error
294
+ # messages.
295
+ if (gnutar --version > /dev/null 2>&1); then
296
+ gnutar "$@" && exit 0
297
+ fi
298
+ if (gtar --version > /dev/null 2>&1); then
299
+ gtar "$@" && exit 0
300
+ fi
301
+ firstarg="$1"
302
+ if shift; then
303
+ case "$firstarg" in
304
+ *o*)
305
+ firstarg=`echo "$firstarg" | sed s/o//`
306
+ tar "$firstarg" "$@" && exit 0
307
+ ;;
308
+ esac
309
+ case "$firstarg" in
310
+ *h*)
311
+ firstarg=`echo "$firstarg" | sed s/h//`
312
+ tar "$firstarg" "$@" && exit 0
313
+ ;;
314
+ esac
315
+ fi
316
+
317
+ echo 1>&2 "\
318
+ WARNING: I can't seem to be able to run \`tar' with the given arguments.
319
+ You may want to install GNU tar or Free paxutils, or check the
320
+ command line arguments."
321
+ exit 1
322
+ ;;
323
+
324
+ *)
325
+ echo 1>&2 "\
326
+ WARNING: \`$1' is needed, and you do not seem to have it handy on your
327
+ system. You might have modified some files without having the
328
+ proper tools for further handling them. Check the \`README' file,
329
+ it often tells you about the needed prerequisites for installing
330
+ this package. You may also peek at any GNU archive site, in case
331
+ some other package would contain this missing \`$1' program."
332
+ exit 1
333
+ ;;
334
+ esac
335
+
336
+ exit 0
@@ -0,0 +1,111 @@
1
+ #! /bin/sh
2
+ # mkinstalldirs --- make directory hierarchy
3
+ # Author: Noah Friedman <friedman@prep.ai.mit.edu>
4
+ # Created: 1993-05-16
5
+ # Public domain
6
+
7
+ errstatus=0
8
+ dirmode=""
9
+
10
+ usage="\
11
+ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12
+
13
+ # process command line arguments
14
+ while test $# -gt 0 ; do
15
+ case $1 in
16
+ -h | --help | --h*) # -h for help
17
+ echo "$usage" 1>&2
18
+ exit 0
19
+ ;;
20
+ -m) # -m PERM arg
21
+ shift
22
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23
+ dirmode=$1
24
+ shift
25
+ ;;
26
+ --) # stop option processing
27
+ shift
28
+ break
29
+ ;;
30
+ -*) # unknown option
31
+ echo "$usage" 1>&2
32
+ exit 1
33
+ ;;
34
+ *) # first non-opt arg
35
+ break
36
+ ;;
37
+ esac
38
+ done
39
+
40
+ for file
41
+ do
42
+ if test -d "$file"; then
43
+ shift
44
+ else
45
+ break
46
+ fi
47
+ done
48
+
49
+ case $# in
50
+ 0) exit 0 ;;
51
+ esac
52
+
53
+ case $dirmode in
54
+ '')
55
+ if mkdir -p -- . 2>/dev/null; then
56
+ echo "mkdir -p -- $*"
57
+ exec mkdir -p -- "$@"
58
+ fi
59
+ ;;
60
+ *)
61
+ if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62
+ echo "mkdir -m $dirmode -p -- $*"
63
+ exec mkdir -m "$dirmode" -p -- "$@"
64
+ fi
65
+ ;;
66
+ esac
67
+
68
+ for file
69
+ do
70
+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71
+ shift
72
+
73
+ pathcomp=
74
+ for d
75
+ do
76
+ pathcomp="$pathcomp$d"
77
+ case $pathcomp in
78
+ -*) pathcomp=./$pathcomp ;;
79
+ esac
80
+
81
+ if test ! -d "$pathcomp"; then
82
+ echo "mkdir $pathcomp"
83
+
84
+ mkdir "$pathcomp" || lasterr=$?
85
+
86
+ if test ! -d "$pathcomp"; then
87
+ errstatus=$lasterr
88
+ else
89
+ if test ! -z "$dirmode"; then
90
+ echo "chmod $dirmode $pathcomp"
91
+ lasterr=""
92
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
93
+
94
+ if test ! -z "$lasterr"; then
95
+ errstatus=$lasterr
96
+ fi
97
+ fi
98
+ fi
99
+ fi
100
+
101
+ pathcomp="$pathcomp/"
102
+ done
103
+ done
104
+
105
+ exit $errstatus
106
+
107
+ # Local Variables:
108
+ # mode: shell-script
109
+ # sh-indentation: 2
110
+ # End:
111
+ # mkinstalldirs ends here
@@ -0,0 +1,312 @@
1
+ /* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
3
+ * of this software and associated documentation files (the "Software"), to
4
+ * deal in the Software without restriction, including without limitation the
5
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6
+ * sell copies of the Software, and to permit persons to whom the Software is
7
+ * furnished to do so, subject to the following conditions:
8
+ *
9
+ * The above copyright notice and this permission notice shall be included in
10
+ * all copies or substantial portions of the Software.
11
+ *
12
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18
+ * IN THE SOFTWARE.
19
+ */
20
+
21
+ #include "uv.h"
22
+ #include "internal.h"
23
+
24
+ #include <assert.h>
25
+ #include <string.h>
26
+ #include <errno.h>
27
+
28
+ #include <kvm.h>
29
+ #include <paths.h>
30
+ #include <sys/user.h>
31
+ #include <sys/types.h>
32
+ #include <sys/resource.h>
33
+ #include <sys/sysctl.h>
34
+ #include <vm/vm_param.h> /* VM_LOADAVG */
35
+ #include <time.h>
36
+ #include <stdlib.h>
37
+ #include <unistd.h> /* sysconf */
38
+ #include <fcntl.h>
39
+
40
+ #undef NANOSEC
41
+ #define NANOSEC ((uint64_t) 1e9)
42
+
43
+ #ifndef CPUSTATES
44
+ # define CPUSTATES 5U
45
+ #endif
46
+ #ifndef CP_USER
47
+ # define CP_USER 0
48
+ # define CP_NICE 1
49
+ # define CP_SYS 2
50
+ # define CP_IDLE 3
51
+ # define CP_INTR 4
52
+ #endif
53
+
54
+ static char *process_title;
55
+
56
+
57
+ uint64_t uv_hrtime(void) {
58
+ struct timespec ts;
59
+ clock_gettime(CLOCK_MONOTONIC, &ts);
60
+ return (ts.tv_sec * NANOSEC + ts.tv_nsec);
61
+ }
62
+
63
+
64
+ int uv_exepath(char* buffer, size_t* size) {
65
+ int mib[4];
66
+ size_t cb;
67
+
68
+ if (!buffer || !size) {
69
+ return -1;
70
+ }
71
+
72
+ #ifdef __DragonFly__
73
+ mib[0] = CTL_KERN;
74
+ mib[1] = KERN_PROC;
75
+ mib[2] = KERN_PROC_ARGS;
76
+ mib[3] = getpid();
77
+ #else
78
+ mib[0] = CTL_KERN;
79
+ mib[1] = KERN_PROC;
80
+ mib[2] = KERN_PROC_PATHNAME;
81
+ mib[3] = -1;
82
+ #endif
83
+
84
+ cb = *size;
85
+ if (sysctl(mib, 4, buffer, &cb, NULL, 0) < 0) {
86
+ *size = 0;
87
+ return -1;
88
+ }
89
+ *size = strlen(buffer);
90
+
91
+ return 0;
92
+ }
93
+
94
+
95
+ uint64_t uv_get_free_memory(void) {
96
+ int freecount;
97
+ size_t size = sizeof(freecount);
98
+
99
+ if(sysctlbyname("vm.stats.vm.v_free_count",
100
+ &freecount, &size, NULL, 0) == -1){
101
+ return -1;
102
+ }
103
+ return (uint64_t) freecount * sysconf(_SC_PAGESIZE);
104
+
105
+ }
106
+
107
+
108
+ uint64_t uv_get_total_memory(void) {
109
+ unsigned long info;
110
+ int which[] = {CTL_HW, HW_PHYSMEM};
111
+
112
+ size_t size = sizeof(info);
113
+
114
+ if (sysctl(which, 2, &info, &size, NULL, 0) < 0) {
115
+ return -1;
116
+ }
117
+
118
+ return (uint64_t) info;
119
+ }
120
+
121
+
122
+ void uv_loadavg(double avg[3]) {
123
+ struct loadavg info;
124
+ size_t size = sizeof(info);
125
+ int which[] = {CTL_VM, VM_LOADAVG};
126
+
127
+ if (sysctl(which, 2, &info, &size, NULL, 0) < 0) return;
128
+
129
+ avg[0] = (double) info.ldavg[0] / info.fscale;
130
+ avg[1] = (double) info.ldavg[1] / info.fscale;
131
+ avg[2] = (double) info.ldavg[2] / info.fscale;
132
+ }
133
+
134
+
135
+ char** uv_setup_args(int argc, char** argv) {
136
+ process_title = argc ? strdup(argv[0]) : NULL;
137
+ return argv;
138
+ }
139
+
140
+
141
+ uv_err_t uv_set_process_title(const char* title) {
142
+ if (process_title) free(process_title);
143
+ process_title = strdup(title);
144
+ setproctitle(title);
145
+ return uv_ok_;
146
+ }
147
+
148
+
149
+ uv_err_t uv_get_process_title(char* buffer, size_t size) {
150
+ if (process_title) {
151
+ strncpy(buffer, process_title, size);
152
+ } else {
153
+ if (size > 0) {
154
+ buffer[0] = '\0';
155
+ }
156
+ }
157
+
158
+ return uv_ok_;
159
+ }
160
+
161
+
162
+ uv_err_t uv_resident_set_memory(size_t* rss) {
163
+ kvm_t *kd = NULL;
164
+ struct kinfo_proc *kinfo = NULL;
165
+ pid_t pid;
166
+ int nprocs;
167
+ size_t page_size = getpagesize();
168
+
169
+ pid = getpid();
170
+
171
+ kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, "kvm_open");
172
+ if (kd == NULL) goto error;
173
+
174
+ kinfo = kvm_getprocs(kd, KERN_PROC_PID, pid, &nprocs);
175
+ if (kinfo == NULL) goto error;
176
+
177
+ #ifdef __DragonFly__
178
+ *rss = kinfo->kp_vm_rssize * page_size;
179
+ #else
180
+ *rss = kinfo->ki_rssize * page_size;
181
+ #endif
182
+
183
+ kvm_close(kd);
184
+
185
+ return uv_ok_;
186
+
187
+ error:
188
+ if (kd) kvm_close(kd);
189
+ return uv__new_sys_error(errno);
190
+ }
191
+
192
+
193
+ uv_err_t uv_uptime(double* uptime) {
194
+ time_t now;
195
+ struct timeval info;
196
+ size_t size = sizeof(info);
197
+ static int which[] = {CTL_KERN, KERN_BOOTTIME};
198
+
199
+ if (sysctl(which, 2, &info, &size, NULL, 0) < 0) {
200
+ return uv__new_sys_error(errno);
201
+ }
202
+
203
+ now = time(NULL);
204
+
205
+ *uptime = (double)(now - info.tv_sec);
206
+ return uv_ok_;
207
+ }
208
+
209
+
210
+ uv_err_t uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
211
+ unsigned int ticks = (unsigned int)sysconf(_SC_CLK_TCK),
212
+ multiplier = ((uint64_t)1000L / ticks), cpuspeed, maxcpus,
213
+ cur = 0;
214
+ uv_cpu_info_t* cpu_info;
215
+ char model[512];
216
+ long* cp_times;
217
+ int numcpus;
218
+ size_t size;
219
+ int i;
220
+
221
+ size = sizeof(model);
222
+ if (sysctlbyname("hw.model", &model, &size, NULL, 0) < 0) {
223
+ return uv__new_sys_error(errno);
224
+ }
225
+ size = sizeof(numcpus);
226
+ if (sysctlbyname("hw.ncpu", &numcpus, &size, NULL, 0) < 0) {
227
+ return uv__new_sys_error(errno);
228
+ }
229
+
230
+ *cpu_infos = (uv_cpu_info_t*)malloc(numcpus * sizeof(uv_cpu_info_t));
231
+ if (!(*cpu_infos)) {
232
+ return uv__new_artificial_error(UV_ENOMEM);
233
+ }
234
+
235
+ *count = numcpus;
236
+
237
+ size = sizeof(cpuspeed);
238
+ if (sysctlbyname("hw.clockrate", &cpuspeed, &size, NULL, 0) < 0) {
239
+ free(*cpu_infos);
240
+ return uv__new_sys_error(errno);
241
+ }
242
+ /* kern.cp_times on FreeBSD i386 gives an array up to maxcpus instead of ncpu */
243
+ size = sizeof(maxcpus);
244
+ #ifdef __DragonFly__
245
+ if (sysctlbyname("hw.ncpu", &maxcpus, &size, NULL, 0) < 0) {
246
+ free(*cpu_infos);
247
+ return uv__new_sys_error(errno);
248
+ }
249
+ #else
250
+ if (sysctlbyname("kern.smp.maxcpus", &maxcpus, &size, NULL, 0) < 0) {
251
+ free(*cpu_infos);
252
+ return uv__new_sys_error(errno);
253
+ }
254
+ #endif
255
+
256
+ size = maxcpus * CPUSTATES * sizeof(long);
257
+
258
+ cp_times = malloc(size);
259
+ if (cp_times == NULL) {
260
+ free(*cpu_infos);
261
+ return uv__new_sys_error(ENOMEM);
262
+ }
263
+
264
+ if (sysctlbyname("kern.cp_times", &cp_times, &size, NULL, 0) < 0) {
265
+ free(cp_times);
266
+ free(*cpu_infos);
267
+ return uv__new_sys_error(errno);
268
+ }
269
+
270
+ for (i = 0; i < numcpus; i++) {
271
+ cpu_info = &(*cpu_infos)[i];
272
+
273
+ cpu_info->cpu_times.user = (uint64_t)(cp_times[CP_USER+cur]) * multiplier;
274
+ cpu_info->cpu_times.nice = (uint64_t)(cp_times[CP_NICE+cur]) * multiplier;
275
+ cpu_info->cpu_times.sys = (uint64_t)(cp_times[CP_SYS+cur]) * multiplier;
276
+ cpu_info->cpu_times.idle = (uint64_t)(cp_times[CP_IDLE+cur]) * multiplier;
277
+ cpu_info->cpu_times.irq = (uint64_t)(cp_times[CP_INTR+cur]) * multiplier;
278
+
279
+ cpu_info->model = strdup(model);
280
+ cpu_info->speed = cpuspeed;
281
+
282
+ cur+=CPUSTATES;
283
+ }
284
+
285
+ free(cp_times);
286
+ return uv_ok_;
287
+ }
288
+
289
+
290
+ void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count) {
291
+ int i;
292
+
293
+ for (i = 0; i < count; i++) {
294
+ free(cpu_infos[i].model);
295
+ }
296
+
297
+ free(cpu_infos);
298
+ }
299
+
300
+
301
+ uv_err_t uv_interface_addresses(uv_interface_address_t** addresses,
302
+ int* count) {
303
+ /* TODO: implement */
304
+ *addresses = NULL;
305
+ *count = 0;
306
+ return uv_ok_;
307
+ }
308
+
309
+
310
+ void uv_free_interface_addresses(uv_interface_address_t* addresses,
311
+ int count) {
312
+ }