foolio 0.0.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 (261) hide show
  1. data/.gitignore +22 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +22 -0
  4. data/README.md +29 -0
  5. data/Rakefile +21 -0
  6. data/examples/timer.rb +20 -0
  7. data/ext/foolio/extconf.rb +34 -0
  8. data/ext/foolio/foolio_ext.c +921 -0
  9. data/ext/foolio/gen.rb +50 -0
  10. data/ext/foolio/make_table.rb +12 -0
  11. data/ext/foolio/templ +243 -0
  12. data/ext/libuv/.gitignore +33 -0
  13. data/ext/libuv/.mailmap +13 -0
  14. data/ext/libuv/.travis.yml +9 -0
  15. data/ext/libuv/AUTHORS +61 -0
  16. data/ext/libuv/LICENSE +44 -0
  17. data/ext/libuv/Makefile +71 -0
  18. data/ext/libuv/README.md +90 -0
  19. data/ext/libuv/common.gypi +178 -0
  20. data/ext/libuv/gyp_uv +73 -0
  21. data/ext/libuv/include/uv-private/eio.h +403 -0
  22. data/ext/libuv/include/uv-private/ev.h +838 -0
  23. data/ext/libuv/include/uv-private/ngx-queue.h +108 -0
  24. data/ext/libuv/include/uv-private/tree.h +768 -0
  25. data/ext/libuv/include/uv-private/uv-unix.h +324 -0
  26. data/ext/libuv/include/uv-private/uv-win.h +517 -0
  27. data/ext/libuv/include/uv.h +1838 -0
  28. data/ext/libuv/src/fs-poll.c +235 -0
  29. data/ext/libuv/src/inet.c +293 -0
  30. data/ext/libuv/src/unix/async.c +148 -0
  31. data/ext/libuv/src/unix/core.c +696 -0
  32. data/ext/libuv/src/unix/cygwin.c +83 -0
  33. data/ext/libuv/src/unix/darwin.c +342 -0
  34. data/ext/libuv/src/unix/dl.c +83 -0
  35. data/ext/libuv/src/unix/eio/Changes +63 -0
  36. data/ext/libuv/src/unix/eio/LICENSE +36 -0
  37. data/ext/libuv/src/unix/eio/Makefile.am +15 -0
  38. data/ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
  39. data/ext/libuv/src/unix/eio/autogen.sh +3 -0
  40. data/ext/libuv/src/unix/eio/config.h.in +86 -0
  41. data/ext/libuv/src/unix/eio/config_cygwin.h +80 -0
  42. data/ext/libuv/src/unix/eio/config_darwin.h +141 -0
  43. data/ext/libuv/src/unix/eio/config_freebsd.h +81 -0
  44. data/ext/libuv/src/unix/eio/config_linux.h +94 -0
  45. data/ext/libuv/src/unix/eio/config_netbsd.h +81 -0
  46. data/ext/libuv/src/unix/eio/config_openbsd.h +137 -0
  47. data/ext/libuv/src/unix/eio/config_sunos.h +84 -0
  48. data/ext/libuv/src/unix/eio/configure.ac +22 -0
  49. data/ext/libuv/src/unix/eio/demo.c +194 -0
  50. data/ext/libuv/src/unix/eio/ecb.h +370 -0
  51. data/ext/libuv/src/unix/eio/eio.3 +3428 -0
  52. data/ext/libuv/src/unix/eio/eio.c +2593 -0
  53. data/ext/libuv/src/unix/eio/eio.pod +969 -0
  54. data/ext/libuv/src/unix/eio/libeio.m4 +195 -0
  55. data/ext/libuv/src/unix/eio/xthread.h +164 -0
  56. data/ext/libuv/src/unix/error.c +105 -0
  57. data/ext/libuv/src/unix/ev/Changes +388 -0
  58. data/ext/libuv/src/unix/ev/LICENSE +36 -0
  59. data/ext/libuv/src/unix/ev/Makefile.am +18 -0
  60. data/ext/libuv/src/unix/ev/Makefile.in +771 -0
  61. data/ext/libuv/src/unix/ev/README +58 -0
  62. data/ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
  63. data/ext/libuv/src/unix/ev/autogen.sh +6 -0
  64. data/ext/libuv/src/unix/ev/config.guess +1526 -0
  65. data/ext/libuv/src/unix/ev/config.h.in +125 -0
  66. data/ext/libuv/src/unix/ev/config.sub +1658 -0
  67. data/ext/libuv/src/unix/ev/config_cygwin.h +123 -0
  68. data/ext/libuv/src/unix/ev/config_darwin.h +122 -0
  69. data/ext/libuv/src/unix/ev/config_freebsd.h +120 -0
  70. data/ext/libuv/src/unix/ev/config_linux.h +141 -0
  71. data/ext/libuv/src/unix/ev/config_netbsd.h +120 -0
  72. data/ext/libuv/src/unix/ev/config_openbsd.h +126 -0
  73. data/ext/libuv/src/unix/ev/config_sunos.h +122 -0
  74. data/ext/libuv/src/unix/ev/configure +13037 -0
  75. data/ext/libuv/src/unix/ev/configure.ac +18 -0
  76. data/ext/libuv/src/unix/ev/depcomp +630 -0
  77. data/ext/libuv/src/unix/ev/ev++.h +816 -0
  78. data/ext/libuv/src/unix/ev/ev.3 +5311 -0
  79. data/ext/libuv/src/unix/ev/ev.c +3925 -0
  80. data/ext/libuv/src/unix/ev/ev.pod +5243 -0
  81. data/ext/libuv/src/unix/ev/ev_epoll.c +266 -0
  82. data/ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
  83. data/ext/libuv/src/unix/ev/ev_poll.c +148 -0
  84. data/ext/libuv/src/unix/ev/ev_port.c +179 -0
  85. data/ext/libuv/src/unix/ev/ev_select.c +310 -0
  86. data/ext/libuv/src/unix/ev/ev_vars.h +203 -0
  87. data/ext/libuv/src/unix/ev/ev_win32.c +153 -0
  88. data/ext/libuv/src/unix/ev/ev_wrap.h +196 -0
  89. data/ext/libuv/src/unix/ev/event.c +402 -0
  90. data/ext/libuv/src/unix/ev/event.h +170 -0
  91. data/ext/libuv/src/unix/ev/install-sh +294 -0
  92. data/ext/libuv/src/unix/ev/libev.m4 +39 -0
  93. data/ext/libuv/src/unix/ev/ltmain.sh +8413 -0
  94. data/ext/libuv/src/unix/ev/missing +336 -0
  95. data/ext/libuv/src/unix/ev/mkinstalldirs +111 -0
  96. data/ext/libuv/src/unix/freebsd.c +326 -0
  97. data/ext/libuv/src/unix/fs.c +739 -0
  98. data/ext/libuv/src/unix/internal.h +188 -0
  99. data/ext/libuv/src/unix/kqueue.c +120 -0
  100. data/ext/libuv/src/unix/linux/inotify.c +239 -0
  101. data/ext/libuv/src/unix/linux/linux-core.c +557 -0
  102. data/ext/libuv/src/unix/linux/syscalls.c +388 -0
  103. data/ext/libuv/src/unix/linux/syscalls.h +124 -0
  104. data/ext/libuv/src/unix/loop-watcher.c +62 -0
  105. data/ext/libuv/src/unix/loop.c +94 -0
  106. data/ext/libuv/src/unix/netbsd.c +108 -0
  107. data/ext/libuv/src/unix/openbsd.c +295 -0
  108. data/ext/libuv/src/unix/pipe.c +259 -0
  109. data/ext/libuv/src/unix/poll.c +114 -0
  110. data/ext/libuv/src/unix/process.c +495 -0
  111. data/ext/libuv/src/unix/signal.c +269 -0
  112. data/ext/libuv/src/unix/stream.c +990 -0
  113. data/ext/libuv/src/unix/sunos.c +481 -0
  114. data/ext/libuv/src/unix/tcp.c +393 -0
  115. data/ext/libuv/src/unix/thread.c +251 -0
  116. data/ext/libuv/src/unix/timer.c +136 -0
  117. data/ext/libuv/src/unix/tty.c +145 -0
  118. data/ext/libuv/src/unix/udp.c +659 -0
  119. data/ext/libuv/src/unix/uv-eio.c +107 -0
  120. data/ext/libuv/src/unix/uv-eio.h +13 -0
  121. data/ext/libuv/src/uv-common.c +380 -0
  122. data/ext/libuv/src/uv-common.h +170 -0
  123. data/ext/libuv/src/win/async.c +100 -0
  124. data/ext/libuv/src/win/atomicops-inl.h +56 -0
  125. data/ext/libuv/src/win/core.c +278 -0
  126. data/ext/libuv/src/win/dl.c +86 -0
  127. data/ext/libuv/src/win/error.c +155 -0
  128. data/ext/libuv/src/win/fs-event.c +510 -0
  129. data/ext/libuv/src/win/fs.c +1948 -0
  130. data/ext/libuv/src/win/getaddrinfo.c +365 -0
  131. data/ext/libuv/src/win/handle-inl.h +149 -0
  132. data/ext/libuv/src/win/handle.c +154 -0
  133. data/ext/libuv/src/win/internal.h +343 -0
  134. data/ext/libuv/src/win/loop-watcher.c +122 -0
  135. data/ext/libuv/src/win/pipe.c +1672 -0
  136. data/ext/libuv/src/win/poll.c +616 -0
  137. data/ext/libuv/src/win/process-stdio.c +500 -0
  138. data/ext/libuv/src/win/process.c +1013 -0
  139. data/ext/libuv/src/win/req-inl.h +220 -0
  140. data/ext/libuv/src/win/req.c +25 -0
  141. data/ext/libuv/src/win/signal.c +57 -0
  142. data/ext/libuv/src/win/stream-inl.h +67 -0
  143. data/ext/libuv/src/win/stream.c +167 -0
  144. data/ext/libuv/src/win/tcp.c +1394 -0
  145. data/ext/libuv/src/win/thread.c +372 -0
  146. data/ext/libuv/src/win/threadpool.c +74 -0
  147. data/ext/libuv/src/win/timer.c +224 -0
  148. data/ext/libuv/src/win/tty.c +1799 -0
  149. data/ext/libuv/src/win/udp.c +716 -0
  150. data/ext/libuv/src/win/util.c +864 -0
  151. data/ext/libuv/src/win/winapi.c +132 -0
  152. data/ext/libuv/src/win/winapi.h +4452 -0
  153. data/ext/libuv/src/win/winsock.c +557 -0
  154. data/ext/libuv/src/win/winsock.h +171 -0
  155. data/ext/libuv/test/benchmark-async-pummel.c +97 -0
  156. data/ext/libuv/test/benchmark-async.c +137 -0
  157. data/ext/libuv/test/benchmark-fs-stat.c +135 -0
  158. data/ext/libuv/test/benchmark-getaddrinfo.c +94 -0
  159. data/ext/libuv/test/benchmark-list.h +127 -0
  160. data/ext/libuv/test/benchmark-loop-count.c +88 -0
  161. data/ext/libuv/test/benchmark-million-timers.c +65 -0
  162. data/ext/libuv/test/benchmark-ping-pongs.c +213 -0
  163. data/ext/libuv/test/benchmark-pound.c +324 -0
  164. data/ext/libuv/test/benchmark-pump.c +462 -0
  165. data/ext/libuv/test/benchmark-sizes.c +44 -0
  166. data/ext/libuv/test/benchmark-spawn.c +162 -0
  167. data/ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
  168. data/ext/libuv/test/benchmark-thread.c +64 -0
  169. data/ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
  170. data/ext/libuv/test/blackhole-server.c +118 -0
  171. data/ext/libuv/test/dns-server.c +321 -0
  172. data/ext/libuv/test/echo-server.c +378 -0
  173. data/ext/libuv/test/fixtures/empty_file +0 -0
  174. data/ext/libuv/test/fixtures/load_error.node +1 -0
  175. data/ext/libuv/test/run-benchmarks.c +64 -0
  176. data/ext/libuv/test/run-tests.c +138 -0
  177. data/ext/libuv/test/runner-unix.c +295 -0
  178. data/ext/libuv/test/runner-unix.h +36 -0
  179. data/ext/libuv/test/runner-win.c +285 -0
  180. data/ext/libuv/test/runner-win.h +42 -0
  181. data/ext/libuv/test/runner.c +355 -0
  182. data/ext/libuv/test/runner.h +159 -0
  183. data/ext/libuv/test/task.h +112 -0
  184. data/ext/libuv/test/test-async.c +118 -0
  185. data/ext/libuv/test/test-callback-order.c +76 -0
  186. data/ext/libuv/test/test-callback-stack.c +203 -0
  187. data/ext/libuv/test/test-connection-fail.c +148 -0
  188. data/ext/libuv/test/test-cwd-and-chdir.c +64 -0
  189. data/ext/libuv/test/test-delayed-accept.c +188 -0
  190. data/ext/libuv/test/test-dlerror.c +58 -0
  191. data/ext/libuv/test/test-error.c +59 -0
  192. data/ext/libuv/test/test-fail-always.c +29 -0
  193. data/ext/libuv/test/test-fs-event.c +474 -0
  194. data/ext/libuv/test/test-fs-poll.c +146 -0
  195. data/ext/libuv/test/test-fs.c +1843 -0
  196. data/ext/libuv/test/test-get-currentexe.c +63 -0
  197. data/ext/libuv/test/test-get-loadavg.c +36 -0
  198. data/ext/libuv/test/test-get-memory.c +38 -0
  199. data/ext/libuv/test/test-getaddrinfo.c +122 -0
  200. data/ext/libuv/test/test-getsockname.c +342 -0
  201. data/ext/libuv/test/test-hrtime.c +54 -0
  202. data/ext/libuv/test/test-idle.c +81 -0
  203. data/ext/libuv/test/test-ipc-send-recv.c +209 -0
  204. data/ext/libuv/test/test-ipc.c +620 -0
  205. data/ext/libuv/test/test-list.h +427 -0
  206. data/ext/libuv/test/test-loop-handles.c +336 -0
  207. data/ext/libuv/test/test-multiple-listen.c +102 -0
  208. data/ext/libuv/test/test-mutexes.c +63 -0
  209. data/ext/libuv/test/test-pass-always.c +28 -0
  210. data/ext/libuv/test/test-ping-pong.c +253 -0
  211. data/ext/libuv/test/test-pipe-bind-error.c +140 -0
  212. data/ext/libuv/test/test-pipe-connect-error.c +96 -0
  213. data/ext/libuv/test/test-platform-output.c +87 -0
  214. data/ext/libuv/test/test-poll-close.c +72 -0
  215. data/ext/libuv/test/test-poll.c +573 -0
  216. data/ext/libuv/test/test-process-title.c +49 -0
  217. data/ext/libuv/test/test-ref.c +338 -0
  218. data/ext/libuv/test/test-run-once.c +48 -0
  219. data/ext/libuv/test/test-semaphore.c +111 -0
  220. data/ext/libuv/test/test-shutdown-close.c +103 -0
  221. data/ext/libuv/test/test-shutdown-eof.c +183 -0
  222. data/ext/libuv/test/test-signal.c +162 -0
  223. data/ext/libuv/test/test-spawn.c +863 -0
  224. data/ext/libuv/test/test-stdio-over-pipes.c +246 -0
  225. data/ext/libuv/test/test-tcp-bind-error.c +191 -0
  226. data/ext/libuv/test/test-tcp-bind6-error.c +154 -0
  227. data/ext/libuv/test/test-tcp-close-while-connecting.c +80 -0
  228. data/ext/libuv/test/test-tcp-close.c +129 -0
  229. data/ext/libuv/test/test-tcp-connect-error-after-write.c +95 -0
  230. data/ext/libuv/test/test-tcp-connect-error.c +70 -0
  231. data/ext/libuv/test/test-tcp-connect-timeout.c +85 -0
  232. data/ext/libuv/test/test-tcp-connect6-error.c +68 -0
  233. data/ext/libuv/test/test-tcp-flags.c +51 -0
  234. data/ext/libuv/test/test-tcp-shutdown-after-write.c +131 -0
  235. data/ext/libuv/test/test-tcp-unexpected-read.c +113 -0
  236. data/ext/libuv/test/test-tcp-write-error.c +168 -0
  237. data/ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
  238. data/ext/libuv/test/test-tcp-writealot.c +170 -0
  239. data/ext/libuv/test/test-thread.c +183 -0
  240. data/ext/libuv/test/test-threadpool.c +57 -0
  241. data/ext/libuv/test/test-timer-again.c +141 -0
  242. data/ext/libuv/test/test-timer.c +152 -0
  243. data/ext/libuv/test/test-tty.c +110 -0
  244. data/ext/libuv/test/test-udp-dgram-too-big.c +86 -0
  245. data/ext/libuv/test/test-udp-ipv6.c +156 -0
  246. data/ext/libuv/test/test-udp-multicast-join.c +139 -0
  247. data/ext/libuv/test/test-udp-multicast-ttl.c +86 -0
  248. data/ext/libuv/test/test-udp-options.c +86 -0
  249. data/ext/libuv/test/test-udp-send-and-recv.c +208 -0
  250. data/ext/libuv/test/test-util.c +97 -0
  251. data/ext/libuv/test/test-walk-handles.c +77 -0
  252. data/ext/libuv/uv.gyp +375 -0
  253. data/ext/libuv/vcbuild.bat +105 -0
  254. data/foolio.gemspec +18 -0
  255. data/lib/foolio.rb +9 -0
  256. data/lib/foolio/handle.rb +27 -0
  257. data/lib/foolio/listener.rb +26 -0
  258. data/lib/foolio/loop.rb +79 -0
  259. data/lib/foolio/stream.rb +109 -0
  260. data/lib/foolio/version.rb +3 -0
  261. metadata +309 -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,326 @@
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
+ int oid[4];
143
+
144
+ if (process_title) free(process_title);
145
+ process_title = strdup(title);
146
+
147
+ oid[0] = CTL_KERN;
148
+ oid[1] = KERN_PROC;
149
+ oid[2] = KERN_PROC_ARGS;
150
+ oid[3] = getpid();
151
+
152
+ sysctl(oid,
153
+ ARRAY_SIZE(oid),
154
+ NULL,
155
+ NULL,
156
+ process_title,
157
+ strlen(process_title) + 1);
158
+
159
+ return uv_ok_;
160
+ }
161
+
162
+
163
+ uv_err_t uv_get_process_title(char* buffer, size_t size) {
164
+ if (process_title) {
165
+ strncpy(buffer, process_title, size);
166
+ } else {
167
+ if (size > 0) {
168
+ buffer[0] = '\0';
169
+ }
170
+ }
171
+
172
+ return uv_ok_;
173
+ }
174
+
175
+
176
+ uv_err_t uv_resident_set_memory(size_t* rss) {
177
+ kvm_t *kd = NULL;
178
+ struct kinfo_proc *kinfo = NULL;
179
+ pid_t pid;
180
+ int nprocs;
181
+ size_t page_size = getpagesize();
182
+
183
+ pid = getpid();
184
+
185
+ kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, "kvm_open");
186
+ if (kd == NULL) goto error;
187
+
188
+ kinfo = kvm_getprocs(kd, KERN_PROC_PID, pid, &nprocs);
189
+ if (kinfo == NULL) goto error;
190
+
191
+ #ifdef __DragonFly__
192
+ *rss = kinfo->kp_vm_rssize * page_size;
193
+ #else
194
+ *rss = kinfo->ki_rssize * page_size;
195
+ #endif
196
+
197
+ kvm_close(kd);
198
+
199
+ return uv_ok_;
200
+
201
+ error:
202
+ if (kd) kvm_close(kd);
203
+ return uv__new_sys_error(errno);
204
+ }
205
+
206
+
207
+ uv_err_t uv_uptime(double* uptime) {
208
+ time_t now;
209
+ struct timeval info;
210
+ size_t size = sizeof(info);
211
+ static int which[] = {CTL_KERN, KERN_BOOTTIME};
212
+
213
+ if (sysctl(which, 2, &info, &size, NULL, 0) < 0) {
214
+ return uv__new_sys_error(errno);
215
+ }
216
+
217
+ now = time(NULL);
218
+
219
+ *uptime = (double)(now - info.tv_sec);
220
+ return uv_ok_;
221
+ }
222
+
223
+
224
+ uv_err_t uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
225
+ unsigned int ticks = (unsigned int)sysconf(_SC_CLK_TCK),
226
+ multiplier = ((uint64_t)1000L / ticks), cpuspeed, maxcpus,
227
+ cur = 0;
228
+ uv_cpu_info_t* cpu_info;
229
+ char model[512];
230
+ long* cp_times;
231
+ int numcpus;
232
+ size_t size;
233
+ int i;
234
+
235
+ size = sizeof(model);
236
+ if (sysctlbyname("hw.model", &model, &size, NULL, 0) < 0) {
237
+ return uv__new_sys_error(errno);
238
+ }
239
+ size = sizeof(numcpus);
240
+ if (sysctlbyname("hw.ncpu", &numcpus, &size, NULL, 0) < 0) {
241
+ return uv__new_sys_error(errno);
242
+ }
243
+
244
+ *cpu_infos = (uv_cpu_info_t*)malloc(numcpus * sizeof(uv_cpu_info_t));
245
+ if (!(*cpu_infos)) {
246
+ return uv__new_artificial_error(UV_ENOMEM);
247
+ }
248
+
249
+ *count = numcpus;
250
+
251
+ size = sizeof(cpuspeed);
252
+ if (sysctlbyname("hw.clockrate", &cpuspeed, &size, NULL, 0) < 0) {
253
+ free(*cpu_infos);
254
+ return uv__new_sys_error(errno);
255
+ }
256
+ /* kern.cp_times on FreeBSD i386 gives an array up to maxcpus instead of ncpu */
257
+ size = sizeof(maxcpus);
258
+ #ifdef __DragonFly__
259
+ if (sysctlbyname("hw.ncpu", &maxcpus, &size, NULL, 0) < 0) {
260
+ free(*cpu_infos);
261
+ return uv__new_sys_error(errno);
262
+ }
263
+ #else
264
+ if (sysctlbyname("kern.smp.maxcpus", &maxcpus, &size, NULL, 0) < 0) {
265
+ free(*cpu_infos);
266
+ return uv__new_sys_error(errno);
267
+ }
268
+ #endif
269
+
270
+ size = maxcpus * CPUSTATES * sizeof(long);
271
+
272
+ cp_times = malloc(size);
273
+ if (cp_times == NULL) {
274
+ free(*cpu_infos);
275
+ return uv__new_sys_error(ENOMEM);
276
+ }
277
+
278
+ if (sysctlbyname("kern.cp_times", cp_times, &size, NULL, 0) < 0) {
279
+ free(cp_times);
280
+ free(*cpu_infos);
281
+ return uv__new_sys_error(errno);
282
+ }
283
+
284
+ for (i = 0; i < numcpus; i++) {
285
+ cpu_info = &(*cpu_infos)[i];
286
+
287
+ cpu_info->cpu_times.user = (uint64_t)(cp_times[CP_USER+cur]) * multiplier;
288
+ cpu_info->cpu_times.nice = (uint64_t)(cp_times[CP_NICE+cur]) * multiplier;
289
+ cpu_info->cpu_times.sys = (uint64_t)(cp_times[CP_SYS+cur]) * multiplier;
290
+ cpu_info->cpu_times.idle = (uint64_t)(cp_times[CP_IDLE+cur]) * multiplier;
291
+ cpu_info->cpu_times.irq = (uint64_t)(cp_times[CP_INTR+cur]) * multiplier;
292
+
293
+ cpu_info->model = strdup(model);
294
+ cpu_info->speed = cpuspeed;
295
+
296
+ cur+=CPUSTATES;
297
+ }
298
+
299
+ free(cp_times);
300
+ return uv_ok_;
301
+ }
302
+
303
+
304
+ void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count) {
305
+ int i;
306
+
307
+ for (i = 0; i < count; i++) {
308
+ free(cpu_infos[i].model);
309
+ }
310
+
311
+ free(cpu_infos);
312
+ }
313
+
314
+
315
+ uv_err_t uv_interface_addresses(uv_interface_address_t** addresses,
316
+ int* count) {
317
+ /* TODO: implement */
318
+ *addresses = NULL;
319
+ *count = 0;
320
+ return uv_ok_;
321
+ }
322
+
323
+
324
+ void uv_free_interface_addresses(uv_interface_address_t* addresses,
325
+ int count) {
326
+ }