immunio 0.15.4 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (454) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +0 -27
  3. data/ext/immunio/Rakefile +9 -0
  4. data/lib/immunio/plugins/active_record.rb +1 -1
  5. data/lib/immunio/plugins/active_record_relation.rb +1 -1
  6. data/lib/immunio/plugins/environment_reporter.rb +20 -0
  7. data/lib/immunio/rufus_lua_ext/ref.rb +1 -3
  8. data/lib/immunio/version.rb +1 -1
  9. data/lib/immunio/vm.rb +1 -2
  10. data/lua-hooks/Makefile +97 -0
  11. data/lua-hooks/ext/all.c +41 -52
  12. data/lua-hooks/ext/all.o +0 -0
  13. data/lua-hooks/ext/libinjection/libinjection_html5.o +0 -0
  14. data/lua-hooks/ext/libinjection/libinjection_sqli.o +0 -0
  15. data/lua-hooks/ext/libinjection/libinjection_xss.o +0 -0
  16. data/lua-hooks/ext/libinjection/lualib.c +2 -2
  17. data/lua-hooks/ext/lpeg/lpcap.c +2 -2
  18. data/lua-hooks/ext/lpeg/lpcap.o +0 -0
  19. data/lua-hooks/ext/lpeg/lpcode.c +2 -2
  20. data/lua-hooks/ext/lpeg/lpcode.h +1 -1
  21. data/lua-hooks/ext/lpeg/lpcode.o +0 -0
  22. data/lua-hooks/ext/lpeg/lpprint.o +0 -0
  23. data/lua-hooks/ext/lpeg/lptree.c +2 -2
  24. data/lua-hooks/ext/lpeg/lptypes.h +1 -1
  25. data/lua-hooks/ext/lpeg/lpvm.c +2 -2
  26. data/lua-hooks/ext/lpeg/lpvm.o +0 -0
  27. data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +16 -3
  28. data/lua-hooks/ext/lua-snapshot/snapshot.c +14 -7
  29. data/lua-hooks/ext/luajit/COPYRIGHT +56 -0
  30. data/lua-hooks/ext/luajit/Makefile +159 -0
  31. data/lua-hooks/ext/luajit/README +16 -0
  32. data/lua-hooks/ext/luajit/doc/bluequad-print.css +166 -0
  33. data/lua-hooks/ext/luajit/doc/bluequad.css +325 -0
  34. data/lua-hooks/ext/luajit/doc/changes.html +804 -0
  35. data/lua-hooks/ext/luajit/doc/contact.html +104 -0
  36. data/lua-hooks/ext/luajit/doc/ext_c_api.html +189 -0
  37. data/lua-hooks/ext/luajit/doc/ext_ffi.html +332 -0
  38. data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +570 -0
  39. data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +1261 -0
  40. data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +603 -0
  41. data/lua-hooks/ext/luajit/doc/ext_jit.html +201 -0
  42. data/lua-hooks/ext/luajit/doc/ext_profiler.html +365 -0
  43. data/lua-hooks/ext/luajit/doc/extensions.html +448 -0
  44. data/lua-hooks/ext/luajit/doc/faq.html +186 -0
  45. data/lua-hooks/ext/luajit/doc/img/contact.png +0 -0
  46. data/lua-hooks/ext/luajit/doc/install.html +659 -0
  47. data/lua-hooks/ext/luajit/doc/luajit.html +236 -0
  48. data/lua-hooks/ext/luajit/doc/running.html +309 -0
  49. data/lua-hooks/ext/luajit/doc/status.html +118 -0
  50. data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +456 -0
  51. data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1125 -0
  52. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +518 -0
  53. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1166 -0
  54. data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +416 -0
  55. data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +953 -0
  56. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +419 -0
  57. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1919 -0
  58. data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +83 -0
  59. data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +12 -0
  60. data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +471 -0
  61. data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +1945 -0
  62. data/lua-hooks/ext/luajit/dynasm/dynasm.lua +1094 -0
  63. data/lua-hooks/ext/luajit/etc/luajit.1 +88 -0
  64. data/lua-hooks/ext/luajit/etc/luajit.pc +25 -0
  65. data/lua-hooks/ext/luajit/src/Makefile +697 -0
  66. data/lua-hooks/ext/luajit/src/Makefile.dep +244 -0
  67. data/lua-hooks/ext/luajit/src/host/README +4 -0
  68. data/lua-hooks/ext/luajit/src/host/buildvm +0 -0
  69. data/lua-hooks/ext/luajit/src/host/buildvm.c +518 -0
  70. data/lua-hooks/ext/luajit/src/host/buildvm.h +105 -0
  71. data/lua-hooks/ext/luajit/src/host/buildvm.o +0 -0
  72. data/lua-hooks/ext/luajit/src/host/buildvm_arch.h +7449 -0
  73. data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +345 -0
  74. data/lua-hooks/ext/luajit/src/host/buildvm_asm.o +0 -0
  75. data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +229 -0
  76. data/lua-hooks/ext/luajit/src/host/buildvm_fold.o +0 -0
  77. data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +457 -0
  78. data/lua-hooks/ext/luajit/src/host/buildvm_lib.o +0 -0
  79. data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +45 -0
  80. data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +368 -0
  81. data/lua-hooks/ext/luajit/src/host/buildvm_peobj.o +0 -0
  82. data/lua-hooks/ext/luajit/src/host/genlibbc.lua +197 -0
  83. data/lua-hooks/ext/luajit/src/host/genminilua.lua +428 -0
  84. data/lua-hooks/ext/luajit/src/host/minilua +0 -0
  85. data/lua-hooks/ext/luajit/src/host/minilua.c +7770 -0
  86. data/lua-hooks/ext/luajit/src/host/minilua.o +0 -0
  87. data/lua-hooks/ext/luajit/src/jit/bc.lua +190 -0
  88. data/lua-hooks/ext/luajit/src/jit/bcsave.lua +661 -0
  89. data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +689 -0
  90. data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +428 -0
  91. data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +17 -0
  92. data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +591 -0
  93. data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +17 -0
  94. data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +838 -0
  95. data/lua-hooks/ext/luajit/src/jit/dump.lua +706 -0
  96. data/lua-hooks/ext/luajit/src/jit/p.lua +310 -0
  97. data/lua-hooks/ext/luajit/src/jit/v.lua +170 -0
  98. data/lua-hooks/ext/luajit/src/jit/vmdef.lua +362 -0
  99. data/lua-hooks/ext/luajit/src/jit/zone.lua +45 -0
  100. data/lua-hooks/ext/{lua → luajit/src}/lauxlib.h +10 -17
  101. data/lua-hooks/ext/luajit/src/lib_aux.c +356 -0
  102. data/lua-hooks/ext/luajit/src/lib_aux.o +0 -0
  103. data/lua-hooks/ext/luajit/src/lib_aux_dyn.o +0 -0
  104. data/lua-hooks/ext/luajit/src/lib_base.c +664 -0
  105. data/lua-hooks/ext/luajit/src/lib_base.o +0 -0
  106. data/lua-hooks/ext/luajit/src/lib_base_dyn.o +0 -0
  107. data/lua-hooks/ext/luajit/src/lib_bit.c +180 -0
  108. data/lua-hooks/ext/luajit/src/lib_bit.o +0 -0
  109. data/lua-hooks/ext/luajit/src/lib_bit_dyn.o +0 -0
  110. data/lua-hooks/ext/luajit/src/lib_debug.c +405 -0
  111. data/lua-hooks/ext/luajit/src/lib_debug.o +0 -0
  112. data/lua-hooks/ext/luajit/src/lib_debug_dyn.o +0 -0
  113. data/lua-hooks/ext/luajit/src/lib_ffi.c +872 -0
  114. data/lua-hooks/ext/luajit/src/lib_ffi.o +0 -0
  115. data/lua-hooks/ext/luajit/src/lib_ffi_dyn.o +0 -0
  116. data/lua-hooks/ext/luajit/src/lib_init.c +55 -0
  117. data/lua-hooks/ext/luajit/src/lib_init.o +0 -0
  118. data/lua-hooks/ext/luajit/src/lib_init_dyn.o +0 -0
  119. data/lua-hooks/ext/luajit/src/lib_io.c +541 -0
  120. data/lua-hooks/ext/luajit/src/lib_io.o +0 -0
  121. data/lua-hooks/ext/luajit/src/lib_io_dyn.o +0 -0
  122. data/lua-hooks/ext/luajit/src/lib_jit.c +767 -0
  123. data/lua-hooks/ext/luajit/src/lib_jit.o +0 -0
  124. data/lua-hooks/ext/luajit/src/lib_jit_dyn.o +0 -0
  125. data/lua-hooks/ext/luajit/src/lib_math.c +230 -0
  126. data/lua-hooks/ext/luajit/src/lib_math.o +0 -0
  127. data/lua-hooks/ext/luajit/src/lib_math_dyn.o +0 -0
  128. data/lua-hooks/ext/luajit/src/lib_os.c +292 -0
  129. data/lua-hooks/ext/luajit/src/lib_os.o +0 -0
  130. data/lua-hooks/ext/luajit/src/lib_os_dyn.o +0 -0
  131. data/lua-hooks/ext/luajit/src/lib_package.c +610 -0
  132. data/lua-hooks/ext/luajit/src/lib_package.o +0 -0
  133. data/lua-hooks/ext/luajit/src/lib_package_dyn.o +0 -0
  134. data/lua-hooks/ext/luajit/src/lib_string.c +752 -0
  135. data/lua-hooks/ext/luajit/src/lib_string.o +0 -0
  136. data/lua-hooks/ext/luajit/src/lib_string_dyn.o +0 -0
  137. data/lua-hooks/ext/luajit/src/lib_table.c +307 -0
  138. data/lua-hooks/ext/luajit/src/lib_table.o +0 -0
  139. data/lua-hooks/ext/luajit/src/lib_table_dyn.o +0 -0
  140. data/lua-hooks/ext/luajit/src/libluajit.a +0 -0
  141. data/lua-hooks/ext/luajit/src/libluajit.so +0 -0
  142. data/lua-hooks/ext/luajit/src/lj.supp +26 -0
  143. data/lua-hooks/ext/luajit/src/lj_alloc.c +1398 -0
  144. data/lua-hooks/ext/luajit/src/lj_alloc.h +17 -0
  145. data/lua-hooks/ext/luajit/src/lj_alloc.o +0 -0
  146. data/lua-hooks/ext/luajit/src/lj_alloc_dyn.o +0 -0
  147. data/lua-hooks/ext/luajit/src/lj_api.c +1210 -0
  148. data/lua-hooks/ext/luajit/src/lj_api.o +0 -0
  149. data/lua-hooks/ext/luajit/src/lj_api_dyn.o +0 -0
  150. data/lua-hooks/ext/luajit/src/lj_arch.h +509 -0
  151. data/lua-hooks/ext/luajit/src/lj_asm.c +2278 -0
  152. data/lua-hooks/ext/luajit/src/lj_asm.h +17 -0
  153. data/lua-hooks/ext/luajit/src/lj_asm.o +0 -0
  154. data/lua-hooks/ext/luajit/src/lj_asm_arm.h +2217 -0
  155. data/lua-hooks/ext/luajit/src/lj_asm_dyn.o +0 -0
  156. data/lua-hooks/ext/luajit/src/lj_asm_mips.h +1833 -0
  157. data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +2015 -0
  158. data/lua-hooks/ext/luajit/src/lj_asm_x86.h +2634 -0
  159. data/lua-hooks/ext/luajit/src/lj_bc.c +14 -0
  160. data/lua-hooks/ext/luajit/src/lj_bc.h +265 -0
  161. data/lua-hooks/ext/luajit/src/lj_bc.o +0 -0
  162. data/lua-hooks/ext/luajit/src/lj_bc_dyn.o +0 -0
  163. data/lua-hooks/ext/luajit/src/lj_bcdef.h +220 -0
  164. data/lua-hooks/ext/luajit/src/lj_bcdump.h +68 -0
  165. data/lua-hooks/ext/luajit/src/lj_bcread.c +457 -0
  166. data/lua-hooks/ext/luajit/src/lj_bcread.o +0 -0
  167. data/lua-hooks/ext/luajit/src/lj_bcread_dyn.o +0 -0
  168. data/lua-hooks/ext/luajit/src/lj_bcwrite.c +361 -0
  169. data/lua-hooks/ext/luajit/src/lj_bcwrite.o +0 -0
  170. data/lua-hooks/ext/luajit/src/lj_bcwrite_dyn.o +0 -0
  171. data/lua-hooks/ext/luajit/src/lj_buf.c +234 -0
  172. data/lua-hooks/ext/luajit/src/lj_buf.h +105 -0
  173. data/lua-hooks/ext/luajit/src/lj_buf.o +0 -0
  174. data/lua-hooks/ext/luajit/src/lj_buf_dyn.o +0 -0
  175. data/lua-hooks/ext/luajit/src/lj_carith.c +429 -0
  176. data/lua-hooks/ext/luajit/src/lj_carith.h +37 -0
  177. data/lua-hooks/ext/luajit/src/lj_carith.o +0 -0
  178. data/lua-hooks/ext/luajit/src/lj_carith_dyn.o +0 -0
  179. data/lua-hooks/ext/luajit/src/lj_ccall.c +984 -0
  180. data/lua-hooks/ext/luajit/src/lj_ccall.h +178 -0
  181. data/lua-hooks/ext/luajit/src/lj_ccall.o +0 -0
  182. data/lua-hooks/ext/luajit/src/lj_ccall_dyn.o +0 -0
  183. data/lua-hooks/ext/luajit/src/lj_ccallback.c +712 -0
  184. data/lua-hooks/ext/luajit/src/lj_ccallback.h +25 -0
  185. data/lua-hooks/ext/luajit/src/lj_ccallback.o +0 -0
  186. data/lua-hooks/ext/luajit/src/lj_ccallback_dyn.o +0 -0
  187. data/lua-hooks/ext/luajit/src/lj_cconv.c +752 -0
  188. data/lua-hooks/ext/luajit/src/lj_cconv.h +70 -0
  189. data/lua-hooks/ext/luajit/src/lj_cconv.o +0 -0
  190. data/lua-hooks/ext/luajit/src/lj_cconv_dyn.o +0 -0
  191. data/lua-hooks/ext/luajit/src/lj_cdata.c +288 -0
  192. data/lua-hooks/ext/luajit/src/lj_cdata.h +76 -0
  193. data/lua-hooks/ext/luajit/src/lj_cdata.o +0 -0
  194. data/lua-hooks/ext/luajit/src/lj_cdata_dyn.o +0 -0
  195. data/lua-hooks/ext/luajit/src/lj_char.c +43 -0
  196. data/lua-hooks/ext/luajit/src/lj_char.h +42 -0
  197. data/lua-hooks/ext/luajit/src/lj_char.o +0 -0
  198. data/lua-hooks/ext/luajit/src/lj_char_dyn.o +0 -0
  199. data/lua-hooks/ext/luajit/src/lj_clib.c +418 -0
  200. data/lua-hooks/ext/luajit/src/lj_clib.h +29 -0
  201. data/lua-hooks/ext/luajit/src/lj_clib.o +0 -0
  202. data/lua-hooks/ext/luajit/src/lj_clib_dyn.o +0 -0
  203. data/lua-hooks/ext/luajit/src/lj_cparse.c +1862 -0
  204. data/lua-hooks/ext/luajit/src/lj_cparse.h +65 -0
  205. data/lua-hooks/ext/luajit/src/lj_cparse.o +0 -0
  206. data/lua-hooks/ext/luajit/src/lj_cparse_dyn.o +0 -0
  207. data/lua-hooks/ext/luajit/src/lj_crecord.c +1834 -0
  208. data/lua-hooks/ext/luajit/src/lj_crecord.h +38 -0
  209. data/lua-hooks/ext/luajit/src/lj_crecord.o +0 -0
  210. data/lua-hooks/ext/luajit/src/lj_crecord_dyn.o +0 -0
  211. data/lua-hooks/ext/luajit/src/lj_ctype.c +635 -0
  212. data/lua-hooks/ext/luajit/src/lj_ctype.h +461 -0
  213. data/lua-hooks/ext/luajit/src/lj_ctype.o +0 -0
  214. data/lua-hooks/ext/luajit/src/lj_ctype_dyn.o +0 -0
  215. data/lua-hooks/ext/luajit/src/lj_debug.c +699 -0
  216. data/lua-hooks/ext/luajit/src/lj_debug.h +65 -0
  217. data/lua-hooks/ext/luajit/src/lj_debug.o +0 -0
  218. data/lua-hooks/ext/luajit/src/lj_debug_dyn.o +0 -0
  219. data/lua-hooks/ext/luajit/src/lj_def.h +365 -0
  220. data/lua-hooks/ext/luajit/src/lj_dispatch.c +557 -0
  221. data/lua-hooks/ext/luajit/src/lj_dispatch.h +138 -0
  222. data/lua-hooks/ext/luajit/src/lj_dispatch.o +0 -0
  223. data/lua-hooks/ext/luajit/src/lj_dispatch_dyn.o +0 -0
  224. data/lua-hooks/ext/luajit/src/lj_emit_arm.h +356 -0
  225. data/lua-hooks/ext/luajit/src/lj_emit_mips.h +211 -0
  226. data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +238 -0
  227. data/lua-hooks/ext/luajit/src/lj_emit_x86.h +462 -0
  228. data/lua-hooks/ext/luajit/src/lj_err.c +794 -0
  229. data/lua-hooks/ext/luajit/src/lj_err.h +41 -0
  230. data/lua-hooks/ext/luajit/src/lj_err.o +0 -0
  231. data/lua-hooks/ext/luajit/src/lj_err_dyn.o +0 -0
  232. data/lua-hooks/ext/luajit/src/lj_errmsg.h +190 -0
  233. data/lua-hooks/ext/luajit/src/lj_ff.h +18 -0
  234. data/lua-hooks/ext/luajit/src/lj_ffdef.h +209 -0
  235. data/lua-hooks/ext/luajit/src/lj_ffrecord.c +1247 -0
  236. data/lua-hooks/ext/luajit/src/lj_ffrecord.h +24 -0
  237. data/lua-hooks/ext/luajit/src/lj_ffrecord.o +0 -0
  238. data/lua-hooks/ext/luajit/src/lj_ffrecord_dyn.o +0 -0
  239. data/lua-hooks/ext/luajit/src/lj_folddef.h +1138 -0
  240. data/lua-hooks/ext/luajit/src/lj_frame.h +259 -0
  241. data/lua-hooks/ext/luajit/src/lj_func.c +185 -0
  242. data/lua-hooks/ext/luajit/src/lj_func.h +24 -0
  243. data/lua-hooks/ext/luajit/src/lj_func.o +0 -0
  244. data/lua-hooks/ext/luajit/src/lj_func_dyn.o +0 -0
  245. data/lua-hooks/ext/luajit/src/lj_gc.c +845 -0
  246. data/lua-hooks/ext/luajit/src/lj_gc.h +134 -0
  247. data/lua-hooks/ext/luajit/src/lj_gc.o +0 -0
  248. data/lua-hooks/ext/luajit/src/lj_gc_dyn.o +0 -0
  249. data/lua-hooks/ext/luajit/src/lj_gdbjit.c +787 -0
  250. data/lua-hooks/ext/luajit/src/lj_gdbjit.h +22 -0
  251. data/lua-hooks/ext/luajit/src/lj_gdbjit.o +0 -0
  252. data/lua-hooks/ext/luajit/src/lj_gdbjit_dyn.o +0 -0
  253. data/lua-hooks/ext/luajit/src/lj_ir.c +505 -0
  254. data/lua-hooks/ext/luajit/src/lj_ir.h +577 -0
  255. data/lua-hooks/ext/luajit/src/lj_ir.o +0 -0
  256. data/lua-hooks/ext/luajit/src/lj_ir_dyn.o +0 -0
  257. data/lua-hooks/ext/luajit/src/lj_ircall.h +321 -0
  258. data/lua-hooks/ext/luajit/src/lj_iropt.h +161 -0
  259. data/lua-hooks/ext/luajit/src/lj_jit.h +440 -0
  260. data/lua-hooks/ext/luajit/src/lj_lex.c +482 -0
  261. data/lua-hooks/ext/luajit/src/lj_lex.h +86 -0
  262. data/lua-hooks/ext/luajit/src/lj_lex.o +0 -0
  263. data/lua-hooks/ext/luajit/src/lj_lex_dyn.o +0 -0
  264. data/lua-hooks/ext/luajit/src/lj_lib.c +303 -0
  265. data/lua-hooks/ext/luajit/src/lj_lib.h +115 -0
  266. data/lua-hooks/ext/luajit/src/lj_lib.o +0 -0
  267. data/lua-hooks/ext/luajit/src/lj_lib_dyn.o +0 -0
  268. data/lua-hooks/ext/luajit/src/lj_libdef.h +414 -0
  269. data/lua-hooks/ext/luajit/src/lj_load.c +168 -0
  270. data/lua-hooks/ext/luajit/src/lj_load.o +0 -0
  271. data/lua-hooks/ext/luajit/src/lj_load_dyn.o +0 -0
  272. data/lua-hooks/ext/luajit/src/lj_mcode.c +386 -0
  273. data/lua-hooks/ext/luajit/src/lj_mcode.h +30 -0
  274. data/lua-hooks/ext/luajit/src/lj_mcode.o +0 -0
  275. data/lua-hooks/ext/luajit/src/lj_mcode_dyn.o +0 -0
  276. data/lua-hooks/ext/luajit/src/lj_meta.c +477 -0
  277. data/lua-hooks/ext/luajit/src/lj_meta.h +38 -0
  278. data/lua-hooks/ext/luajit/src/lj_meta.o +0 -0
  279. data/lua-hooks/ext/luajit/src/lj_meta_dyn.o +0 -0
  280. data/lua-hooks/ext/luajit/src/lj_obj.c +50 -0
  281. data/lua-hooks/ext/luajit/src/lj_obj.h +976 -0
  282. data/lua-hooks/ext/luajit/src/lj_obj.o +0 -0
  283. data/lua-hooks/ext/luajit/src/lj_obj_dyn.o +0 -0
  284. data/lua-hooks/ext/luajit/src/lj_opt_dce.c +78 -0
  285. data/lua-hooks/ext/luajit/src/lj_opt_dce.o +0 -0
  286. data/lua-hooks/ext/luajit/src/lj_opt_dce_dyn.o +0 -0
  287. data/lua-hooks/ext/luajit/src/lj_opt_fold.c +2488 -0
  288. data/lua-hooks/ext/luajit/src/lj_opt_fold.o +0 -0
  289. data/lua-hooks/ext/luajit/src/lj_opt_fold_dyn.o +0 -0
  290. data/lua-hooks/ext/luajit/src/lj_opt_loop.c +449 -0
  291. data/lua-hooks/ext/luajit/src/lj_opt_loop.o +0 -0
  292. data/lua-hooks/ext/luajit/src/lj_opt_loop_dyn.o +0 -0
  293. data/lua-hooks/ext/luajit/src/lj_opt_mem.c +935 -0
  294. data/lua-hooks/ext/luajit/src/lj_opt_mem.o +0 -0
  295. data/lua-hooks/ext/luajit/src/lj_opt_mem_dyn.o +0 -0
  296. data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +652 -0
  297. data/lua-hooks/ext/luajit/src/lj_opt_narrow.o +0 -0
  298. data/lua-hooks/ext/luajit/src/lj_opt_narrow_dyn.o +0 -0
  299. data/lua-hooks/ext/luajit/src/lj_opt_sink.c +245 -0
  300. data/lua-hooks/ext/luajit/src/lj_opt_sink.o +0 -0
  301. data/lua-hooks/ext/luajit/src/lj_opt_sink_dyn.o +0 -0
  302. data/lua-hooks/ext/luajit/src/lj_opt_split.c +856 -0
  303. data/lua-hooks/ext/luajit/src/lj_opt_split.o +0 -0
  304. data/lua-hooks/ext/luajit/src/lj_opt_split_dyn.o +0 -0
  305. data/lua-hooks/ext/luajit/src/lj_parse.c +2725 -0
  306. data/lua-hooks/ext/luajit/src/lj_parse.h +18 -0
  307. data/lua-hooks/ext/luajit/src/lj_parse.o +0 -0
  308. data/lua-hooks/ext/luajit/src/lj_parse_dyn.o +0 -0
  309. data/lua-hooks/ext/luajit/src/lj_profile.c +368 -0
  310. data/lua-hooks/ext/luajit/src/lj_profile.h +21 -0
  311. data/lua-hooks/ext/luajit/src/lj_profile.o +0 -0
  312. data/lua-hooks/ext/luajit/src/lj_profile_dyn.o +0 -0
  313. data/lua-hooks/ext/luajit/src/lj_recdef.h +270 -0
  314. data/lua-hooks/ext/luajit/src/lj_record.c +2554 -0
  315. data/lua-hooks/ext/luajit/src/lj_record.h +45 -0
  316. data/lua-hooks/ext/luajit/src/lj_record.o +0 -0
  317. data/lua-hooks/ext/luajit/src/lj_record_dyn.o +0 -0
  318. data/lua-hooks/ext/luajit/src/lj_snap.c +870 -0
  319. data/lua-hooks/ext/luajit/src/lj_snap.h +34 -0
  320. data/lua-hooks/ext/luajit/src/lj_snap.o +0 -0
  321. data/lua-hooks/ext/luajit/src/lj_snap_dyn.o +0 -0
  322. data/lua-hooks/ext/luajit/src/lj_state.c +300 -0
  323. data/lua-hooks/ext/luajit/src/lj_state.h +35 -0
  324. data/lua-hooks/ext/luajit/src/lj_state.o +0 -0
  325. data/lua-hooks/ext/luajit/src/lj_state_dyn.o +0 -0
  326. data/lua-hooks/ext/luajit/src/lj_str.c +197 -0
  327. data/lua-hooks/ext/luajit/src/lj_str.h +27 -0
  328. data/lua-hooks/ext/luajit/src/lj_str.o +0 -0
  329. data/lua-hooks/ext/luajit/src/lj_str_dyn.o +0 -0
  330. data/lua-hooks/ext/luajit/src/lj_strfmt.c +554 -0
  331. data/lua-hooks/ext/luajit/src/lj_strfmt.h +125 -0
  332. data/lua-hooks/ext/luajit/src/lj_strfmt.o +0 -0
  333. data/lua-hooks/ext/luajit/src/lj_strfmt_dyn.o +0 -0
  334. data/lua-hooks/ext/luajit/src/lj_strscan.c +547 -0
  335. data/lua-hooks/ext/luajit/src/lj_strscan.h +39 -0
  336. data/lua-hooks/ext/luajit/src/lj_strscan.o +0 -0
  337. data/lua-hooks/ext/luajit/src/lj_strscan_dyn.o +0 -0
  338. data/lua-hooks/ext/luajit/src/lj_tab.c +666 -0
  339. data/lua-hooks/ext/luajit/src/lj_tab.h +73 -0
  340. data/lua-hooks/ext/luajit/src/lj_tab.o +0 -0
  341. data/lua-hooks/ext/luajit/src/lj_tab_dyn.o +0 -0
  342. data/lua-hooks/ext/luajit/src/lj_target.h +164 -0
  343. data/lua-hooks/ext/luajit/src/lj_target_arm.h +270 -0
  344. data/lua-hooks/ext/luajit/src/lj_target_arm64.h +97 -0
  345. data/lua-hooks/ext/luajit/src/lj_target_mips.h +260 -0
  346. data/lua-hooks/ext/luajit/src/lj_target_ppc.h +280 -0
  347. data/lua-hooks/ext/luajit/src/lj_target_x86.h +345 -0
  348. data/lua-hooks/ext/luajit/src/lj_trace.c +859 -0
  349. data/lua-hooks/ext/luajit/src/lj_trace.h +54 -0
  350. data/lua-hooks/ext/luajit/src/lj_trace.o +0 -0
  351. data/lua-hooks/ext/luajit/src/lj_trace_dyn.o +0 -0
  352. data/lua-hooks/ext/luajit/src/lj_traceerr.h +63 -0
  353. data/lua-hooks/ext/luajit/src/lj_udata.c +34 -0
  354. data/lua-hooks/ext/luajit/src/lj_udata.h +14 -0
  355. data/lua-hooks/ext/luajit/src/lj_udata.o +0 -0
  356. data/lua-hooks/ext/luajit/src/lj_udata_dyn.o +0 -0
  357. data/lua-hooks/ext/luajit/src/lj_vm.S +2730 -0
  358. data/lua-hooks/ext/luajit/src/lj_vm.h +114 -0
  359. data/lua-hooks/ext/luajit/src/lj_vm.o +0 -0
  360. data/lua-hooks/ext/luajit/src/lj_vm_dyn.o +0 -0
  361. data/lua-hooks/ext/luajit/src/lj_vmevent.c +58 -0
  362. data/lua-hooks/ext/luajit/src/lj_vmevent.h +59 -0
  363. data/lua-hooks/ext/luajit/src/lj_vmevent.o +0 -0
  364. data/lua-hooks/ext/luajit/src/lj_vmevent_dyn.o +0 -0
  365. data/lua-hooks/ext/luajit/src/lj_vmmath.c +152 -0
  366. data/lua-hooks/ext/luajit/src/lj_vmmath.o +0 -0
  367. data/lua-hooks/ext/luajit/src/lj_vmmath_dyn.o +0 -0
  368. data/lua-hooks/ext/luajit/src/ljamalg.c +96 -0
  369. data/lua-hooks/ext/{lua → luajit/src}/lua.h +12 -7
  370. data/lua-hooks/ext/luajit/src/lua.hpp +9 -0
  371. data/lua-hooks/ext/luajit/src/luaconf.h +156 -0
  372. data/lua-hooks/ext/luajit/src/luajit +0 -0
  373. data/lua-hooks/ext/luajit/src/luajit.c +570 -0
  374. data/lua-hooks/ext/luajit/src/luajit.h +79 -0
  375. data/lua-hooks/ext/luajit/src/luajit.o +0 -0
  376. data/lua-hooks/ext/luajit/src/lualib.h +43 -0
  377. data/lua-hooks/ext/luajit/src/msvcbuild.bat +114 -0
  378. data/lua-hooks/ext/luajit/src/ps4build.bat +103 -0
  379. data/lua-hooks/ext/luajit/src/psvitabuild.bat +93 -0
  380. data/lua-hooks/ext/luajit/src/vm_arm.dasc +4585 -0
  381. data/lua-hooks/ext/luajit/src/vm_arm64.dasc +3764 -0
  382. data/lua-hooks/ext/luajit/src/vm_mips.dasc +4355 -0
  383. data/lua-hooks/ext/luajit/src/vm_ppc.dasc +5252 -0
  384. data/lua-hooks/ext/luajit/src/vm_x64.dasc +4902 -0
  385. data/lua-hooks/ext/luajit/src/vm_x86.dasc +5710 -0
  386. data/lua-hooks/ext/luajit/src/xb1build.bat +101 -0
  387. data/lua-hooks/ext/luajit/src/xedkbuild.bat +92 -0
  388. data/lua-hooks/ext/luautf8/lutf8lib.c +3 -3
  389. data/lua-hooks/lib/boot.lua +37 -2
  390. metadata +372 -69
  391. data/lua-hooks/ext/bitop/README +0 -22
  392. data/lua-hooks/ext/bitop/bit.c +0 -189
  393. data/lua-hooks/ext/extconf.rb +0 -38
  394. data/lua-hooks/ext/lua/COPYRIGHT +0 -34
  395. data/lua-hooks/ext/lua/lapi.c +0 -1087
  396. data/lua-hooks/ext/lua/lapi.h +0 -16
  397. data/lua-hooks/ext/lua/lauxlib.c +0 -652
  398. data/lua-hooks/ext/lua/lbaselib.c +0 -659
  399. data/lua-hooks/ext/lua/lcode.c +0 -831
  400. data/lua-hooks/ext/lua/lcode.h +0 -76
  401. data/lua-hooks/ext/lua/ldblib.c +0 -398
  402. data/lua-hooks/ext/lua/ldebug.c +0 -638
  403. data/lua-hooks/ext/lua/ldebug.h +0 -33
  404. data/lua-hooks/ext/lua/ldo.c +0 -519
  405. data/lua-hooks/ext/lua/ldo.h +0 -57
  406. data/lua-hooks/ext/lua/ldump.c +0 -164
  407. data/lua-hooks/ext/lua/lfunc.c +0 -174
  408. data/lua-hooks/ext/lua/lfunc.h +0 -34
  409. data/lua-hooks/ext/lua/lgc.c +0 -710
  410. data/lua-hooks/ext/lua/lgc.h +0 -110
  411. data/lua-hooks/ext/lua/linit.c +0 -38
  412. data/lua-hooks/ext/lua/liolib.c +0 -556
  413. data/lua-hooks/ext/lua/llex.c +0 -463
  414. data/lua-hooks/ext/lua/llex.h +0 -81
  415. data/lua-hooks/ext/lua/llimits.h +0 -128
  416. data/lua-hooks/ext/lua/lmathlib.c +0 -263
  417. data/lua-hooks/ext/lua/lmem.c +0 -86
  418. data/lua-hooks/ext/lua/lmem.h +0 -49
  419. data/lua-hooks/ext/lua/loadlib.c +0 -705
  420. data/lua-hooks/ext/lua/loadlib_rel.c +0 -760
  421. data/lua-hooks/ext/lua/lobject.c +0 -214
  422. data/lua-hooks/ext/lua/lobject.h +0 -381
  423. data/lua-hooks/ext/lua/lopcodes.c +0 -102
  424. data/lua-hooks/ext/lua/lopcodes.h +0 -268
  425. data/lua-hooks/ext/lua/loslib.c +0 -243
  426. data/lua-hooks/ext/lua/lparser.c +0 -1339
  427. data/lua-hooks/ext/lua/lparser.h +0 -82
  428. data/lua-hooks/ext/lua/lstate.c +0 -214
  429. data/lua-hooks/ext/lua/lstate.h +0 -169
  430. data/lua-hooks/ext/lua/lstring.c +0 -111
  431. data/lua-hooks/ext/lua/lstring.h +0 -31
  432. data/lua-hooks/ext/lua/lstrlib.c +0 -871
  433. data/lua-hooks/ext/lua/ltable.c +0 -588
  434. data/lua-hooks/ext/lua/ltable.h +0 -40
  435. data/lua-hooks/ext/lua/ltablib.c +0 -287
  436. data/lua-hooks/ext/lua/ltm.c +0 -75
  437. data/lua-hooks/ext/lua/ltm.h +0 -54
  438. data/lua-hooks/ext/lua/lua.c +0 -392
  439. data/lua-hooks/ext/lua/lua.def +0 -131
  440. data/lua-hooks/ext/lua/lua.rc +0 -28
  441. data/lua-hooks/ext/lua/lua_dll.rc +0 -26
  442. data/lua-hooks/ext/lua/luac.c +0 -200
  443. data/lua-hooks/ext/lua/luac.rc +0 -1
  444. data/lua-hooks/ext/lua/luaconf.h +0 -763
  445. data/lua-hooks/ext/lua/luaconf.h.in +0 -724
  446. data/lua-hooks/ext/lua/luaconf.h.orig +0 -763
  447. data/lua-hooks/ext/lua/lualib.h +0 -53
  448. data/lua-hooks/ext/lua/lundump.c +0 -227
  449. data/lua-hooks/ext/lua/lundump.h +0 -36
  450. data/lua-hooks/ext/lua/lvm.c +0 -767
  451. data/lua-hooks/ext/lua/lvm.h +0 -36
  452. data/lua-hooks/ext/lua/lzio.c +0 -82
  453. data/lua-hooks/ext/lua/lzio.h +0 -67
  454. data/lua-hooks/ext/lua/print.c +0 -227
@@ -1,659 +0,0 @@
1
- /*
2
- ** $Id: lbaselib.c,v 1.191.1.6 2008/02/14 16:46:22 roberto Exp $
3
- ** Basic library
4
- ** See Copyright Notice in lua.h
5
- */
6
-
7
-
8
-
9
- #include <ctype.h>
10
- #include <stdio.h>
11
- #include <stdlib.h>
12
- #include <string.h>
13
-
14
- #define lbaselib_c
15
- #define LUA_LIB
16
-
17
- #include "lua.h"
18
-
19
- #include "lauxlib.h"
20
- #include "lualib.h"
21
-
22
-
23
-
24
-
25
- /*
26
- ** If your system does not support `stdout', you can just remove this function.
27
- ** If you need, you can define your own `print' function, following this
28
- ** model but changing `fputs' to put the strings at a proper place
29
- ** (a console window or a log file, for instance).
30
- */
31
- static int luaB_print (lua_State *L) {
32
- int n = lua_gettop(L); /* number of arguments */
33
- int i;
34
- lua_getglobal(L, "tostring");
35
- for (i=1; i<=n; i++) {
36
- const char *s;
37
- lua_pushvalue(L, -1); /* function to be called */
38
- lua_pushvalue(L, i); /* value to print */
39
- lua_call(L, 1, 1);
40
- s = lua_tostring(L, -1); /* get result */
41
- if (s == NULL)
42
- return luaL_error(L, LUA_QL("tostring") " must return a string to "
43
- LUA_QL("print"));
44
- if (i>1) fputs("\t", stdout);
45
- fputs(s, stdout);
46
- lua_pop(L, 1); /* pop result */
47
- }
48
- fputs("\n", stdout);
49
- /*
50
- ** XXX This fflush is needed because print is used to output debug
51
- ** information which should not be buffered. This change does not affect
52
- ** the behavior of the print function but it might affect its performance.
53
- */
54
- fflush(stdout);
55
- return 0;
56
- }
57
-
58
-
59
- static int luaB_tonumber (lua_State *L) {
60
- int base = luaL_optint(L, 2, 10);
61
- if (base == 10) { /* standard conversion */
62
- luaL_checkany(L, 1);
63
- if (lua_isnumber(L, 1)) {
64
- lua_pushnumber(L, lua_tonumber(L, 1));
65
- return 1;
66
- }
67
- }
68
- else {
69
- const char *s1 = luaL_checkstring(L, 1);
70
- char *s2;
71
- unsigned long n;
72
- luaL_argcheck(L, 2 <= base && base <= 36, 2, "base out of range");
73
- n = strtoul(s1, &s2, base);
74
- if (s1 != s2) { /* at least one valid digit? */
75
- while (isspace((unsigned char)(*s2))) s2++; /* skip trailing spaces */
76
- if (*s2 == '\0') { /* no invalid trailing characters? */
77
- lua_pushnumber(L, (lua_Number)n);
78
- return 1;
79
- }
80
- }
81
- }
82
- lua_pushnil(L); /* else not a number */
83
- return 1;
84
- }
85
-
86
-
87
- static int luaB_error (lua_State *L) {
88
- int level = luaL_optint(L, 2, 1);
89
- lua_settop(L, 1);
90
- if (lua_isstring(L, 1) && level > 0) { /* add extra information? */
91
- luaL_where(L, level);
92
- lua_pushvalue(L, 1);
93
- lua_concat(L, 2);
94
- }
95
- return lua_error(L);
96
- }
97
-
98
-
99
- static int luaB_getmetatable (lua_State *L) {
100
- luaL_checkany(L, 1);
101
- if (!lua_getmetatable(L, 1)) {
102
- lua_pushnil(L);
103
- return 1; /* no metatable */
104
- }
105
- luaL_getmetafield(L, 1, "__metatable");
106
- return 1; /* returns either __metatable field (if present) or metatable */
107
- }
108
-
109
-
110
- static int luaB_setmetatable (lua_State *L) {
111
- int t = lua_type(L, 2);
112
- luaL_checktype(L, 1, LUA_TTABLE);
113
- luaL_argcheck(L, t == LUA_TNIL || t == LUA_TTABLE, 2,
114
- "nil or table expected");
115
- if (luaL_getmetafield(L, 1, "__metatable"))
116
- luaL_error(L, "cannot change a protected metatable");
117
- lua_settop(L, 2);
118
- lua_setmetatable(L, 1);
119
- return 1;
120
- }
121
-
122
-
123
- static void getfunc (lua_State *L, int opt) {
124
- if (lua_isfunction(L, 1)) lua_pushvalue(L, 1);
125
- else {
126
- lua_Debug ar;
127
- int level = opt ? luaL_optint(L, 1, 1) : luaL_checkint(L, 1);
128
- luaL_argcheck(L, level >= 0, 1, "level must be non-negative");
129
- if (lua_getstack(L, level, &ar) == 0)
130
- luaL_argerror(L, 1, "invalid level");
131
- lua_getinfo(L, "f", &ar);
132
- if (lua_isnil(L, -1))
133
- luaL_error(L, "no function environment for tail call at level %d",
134
- level);
135
- }
136
- }
137
-
138
-
139
- static int luaB_getfenv (lua_State *L) {
140
- getfunc(L, 1);
141
- if (lua_iscfunction(L, -1)) /* is a C function? */
142
- lua_pushvalue(L, LUA_GLOBALSINDEX); /* return the thread's global env. */
143
- else
144
- lua_getfenv(L, -1);
145
- return 1;
146
- }
147
-
148
-
149
- static int luaB_setfenv (lua_State *L) {
150
- luaL_checktype(L, 2, LUA_TTABLE);
151
- getfunc(L, 0);
152
- lua_pushvalue(L, 2);
153
- if (lua_isnumber(L, 1) && lua_tonumber(L, 1) == 0) {
154
- /* change environment of current thread */
155
- lua_pushthread(L);
156
- lua_insert(L, -2);
157
- lua_setfenv(L, -2);
158
- return 0;
159
- }
160
- else if (lua_iscfunction(L, -2) || lua_setfenv(L, -2) == 0)
161
- luaL_error(L,
162
- LUA_QL("setfenv") " cannot change environment of given object");
163
- return 1;
164
- }
165
-
166
-
167
- static int luaB_rawequal (lua_State *L) {
168
- luaL_checkany(L, 1);
169
- luaL_checkany(L, 2);
170
- lua_pushboolean(L, lua_rawequal(L, 1, 2));
171
- return 1;
172
- }
173
-
174
-
175
- static int luaB_rawget (lua_State *L) {
176
- luaL_checktype(L, 1, LUA_TTABLE);
177
- luaL_checkany(L, 2);
178
- lua_settop(L, 2);
179
- lua_rawget(L, 1);
180
- return 1;
181
- }
182
-
183
- static int luaB_rawset (lua_State *L) {
184
- luaL_checktype(L, 1, LUA_TTABLE);
185
- luaL_checkany(L, 2);
186
- luaL_checkany(L, 3);
187
- lua_settop(L, 3);
188
- lua_rawset(L, 1);
189
- return 1;
190
- }
191
-
192
-
193
- static int luaB_gcinfo (lua_State *L) {
194
- lua_pushinteger(L, lua_getgccount(L));
195
- return 1;
196
- }
197
-
198
-
199
- static int luaB_collectgarbage (lua_State *L) {
200
- static const char *const opts[] = {"stop", "restart", "collect",
201
- "count", "step", "setpause", "setstepmul", NULL};
202
- static const int optsnum[] = {LUA_GCSTOP, LUA_GCRESTART, LUA_GCCOLLECT,
203
- LUA_GCCOUNT, LUA_GCSTEP, LUA_GCSETPAUSE, LUA_GCSETSTEPMUL};
204
- int o = luaL_checkoption(L, 1, "collect", opts);
205
- int ex = luaL_optint(L, 2, 0);
206
- int res = lua_gc(L, optsnum[o], ex);
207
- switch (optsnum[o]) {
208
- case LUA_GCCOUNT: {
209
- int b = lua_gc(L, LUA_GCCOUNTB, 0);
210
- lua_pushnumber(L, res + ((lua_Number)b/1024));
211
- return 1;
212
- }
213
- case LUA_GCSTEP: {
214
- lua_pushboolean(L, res);
215
- return 1;
216
- }
217
- default: {
218
- lua_pushnumber(L, res);
219
- return 1;
220
- }
221
- }
222
- }
223
-
224
-
225
- static int luaB_type (lua_State *L) {
226
- luaL_checkany(L, 1);
227
- lua_pushstring(L, luaL_typename(L, 1));
228
- return 1;
229
- }
230
-
231
-
232
- static int luaB_next (lua_State *L) {
233
- luaL_checktype(L, 1, LUA_TTABLE);
234
- lua_settop(L, 2); /* create a 2nd argument if there isn't one */
235
- if (lua_next(L, 1))
236
- return 2;
237
- else {
238
- lua_pushnil(L);
239
- return 1;
240
- }
241
- }
242
-
243
-
244
- static int luaB_pairs (lua_State *L) {
245
- luaL_checktype(L, 1, LUA_TTABLE);
246
- lua_pushvalue(L, lua_upvalueindex(1)); /* return generator, */
247
- lua_pushvalue(L, 1); /* state, */
248
- lua_pushnil(L); /* and initial value */
249
- return 3;
250
- }
251
-
252
-
253
- static int ipairsaux (lua_State *L) {
254
- int i = luaL_checkint(L, 2);
255
- luaL_checktype(L, 1, LUA_TTABLE);
256
- i++; /* next value */
257
- lua_pushinteger(L, i);
258
- lua_rawgeti(L, 1, i);
259
- return (lua_isnil(L, -1)) ? 0 : 2;
260
- }
261
-
262
-
263
- static int luaB_ipairs (lua_State *L) {
264
- luaL_checktype(L, 1, LUA_TTABLE);
265
- lua_pushvalue(L, lua_upvalueindex(1)); /* return generator, */
266
- lua_pushvalue(L, 1); /* state, */
267
- lua_pushinteger(L, 0); /* and initial value */
268
- return 3;
269
- }
270
-
271
-
272
- static int load_aux (lua_State *L, int status) {
273
- if (status == 0) /* OK? */
274
- return 1;
275
- else {
276
- lua_pushnil(L);
277
- lua_insert(L, -2); /* put before error message */
278
- return 2; /* return nil plus error message */
279
- }
280
- }
281
-
282
-
283
- static int luaB_loadstring (lua_State *L) {
284
- size_t l;
285
- const char *s = luaL_checklstring(L, 1, &l);
286
- const char *chunkname = luaL_optstring(L, 2, s);
287
- return load_aux(L, luaL_loadbuffer(L, s, l, chunkname));
288
- }
289
-
290
-
291
- static int luaB_loadfile (lua_State *L) {
292
- const char *fname = luaL_optstring(L, 1, NULL);
293
- return load_aux(L, luaL_loadfile(L, fname));
294
- }
295
-
296
-
297
- /*
298
- ** Reader for generic `load' function: `lua_load' uses the
299
- ** stack for internal stuff, so the reader cannot change the
300
- ** stack top. Instead, it keeps its resulting string in a
301
- ** reserved slot inside the stack.
302
- */
303
- static const char *generic_reader (lua_State *L, void *ud, size_t *size) {
304
- (void)ud; /* to avoid warnings */
305
- luaL_checkstack(L, 2, "too many nested functions");
306
- lua_pushvalue(L, 1); /* get function */
307
- lua_call(L, 0, 1); /* call it */
308
- if (lua_isnil(L, -1)) {
309
- *size = 0;
310
- return NULL;
311
- }
312
- else if (lua_isstring(L, -1)) {
313
- lua_replace(L, 3); /* save string in a reserved stack slot */
314
- return lua_tolstring(L, 3, size);
315
- }
316
- else luaL_error(L, "reader function must return a string");
317
- return NULL; /* to avoid warnings */
318
- }
319
-
320
-
321
- static int luaB_load (lua_State *L) {
322
- int status;
323
- const char *cname = luaL_optstring(L, 2, "=(load)");
324
- luaL_checktype(L, 1, LUA_TFUNCTION);
325
- lua_settop(L, 3); /* function, eventual name, plus one reserved slot */
326
- status = lua_load(L, generic_reader, NULL, cname);
327
- return load_aux(L, status);
328
- }
329
-
330
-
331
- static int luaB_dofile (lua_State *L) {
332
- const char *fname = luaL_optstring(L, 1, NULL);
333
- int n = lua_gettop(L);
334
- if (luaL_loadfile(L, fname) != 0) lua_error(L);
335
- lua_call(L, 0, LUA_MULTRET);
336
- return lua_gettop(L) - n;
337
- }
338
-
339
-
340
- static int luaB_assert (lua_State *L) {
341
- luaL_checkany(L, 1);
342
- if (!lua_toboolean(L, 1))
343
- return luaL_error(L, "%s", luaL_optstring(L, 2, "assertion failed!"));
344
- return lua_gettop(L);
345
- }
346
-
347
-
348
- static int luaB_unpack (lua_State *L) {
349
- int i, e, n;
350
- luaL_checktype(L, 1, LUA_TTABLE);
351
- i = luaL_optint(L, 2, 1);
352
- e = luaL_opt(L, luaL_checkint, 3, luaL_getn(L, 1));
353
- if (i > e) return 0; /* empty range */
354
- n = e - i + 1; /* number of elements */
355
- if (n <= 0 || !lua_checkstack(L, n)) /* n <= 0 means arith. overflow */
356
- return luaL_error(L, "too many results to unpack");
357
- lua_rawgeti(L, 1, i); /* push arg[i] (avoiding overflow problems) */
358
- while (i++ < e) /* push arg[i + 1...e] */
359
- lua_rawgeti(L, 1, i);
360
- return n;
361
- }
362
-
363
-
364
- static int luaB_select (lua_State *L) {
365
- int n = lua_gettop(L);
366
- if (lua_type(L, 1) == LUA_TSTRING && *lua_tostring(L, 1) == '#') {
367
- lua_pushinteger(L, n-1);
368
- return 1;
369
- }
370
- else {
371
- int i = luaL_checkint(L, 1);
372
- if (i < 0) i = n + i;
373
- else if (i > n) i = n;
374
- luaL_argcheck(L, 1 <= i, 1, "index out of range");
375
- return n - i;
376
- }
377
- }
378
-
379
-
380
- static int luaB_pcall (lua_State *L) {
381
- int status;
382
- luaL_checkany(L, 1);
383
- status = lua_pcall(L, lua_gettop(L) - 1, LUA_MULTRET, 0);
384
- lua_pushboolean(L, (status == 0));
385
- lua_insert(L, 1);
386
- return lua_gettop(L); /* return status + all results */
387
- }
388
-
389
-
390
- static int luaB_xpcall (lua_State *L) {
391
- int status;
392
- luaL_checkany(L, 2);
393
- lua_settop(L, 2);
394
- lua_insert(L, 1); /* put error function under function to be called */
395
- status = lua_pcall(L, 0, LUA_MULTRET, 1);
396
- lua_pushboolean(L, (status == 0));
397
- lua_replace(L, 1);
398
- return lua_gettop(L); /* return status + all results */
399
- }
400
-
401
-
402
- static int luaB_tostring (lua_State *L) {
403
- luaL_checkany(L, 1);
404
- if (luaL_callmeta(L, 1, "__tostring")) /* is there a metafield? */
405
- return 1; /* use its value */
406
- switch (lua_type(L, 1)) {
407
- case LUA_TNUMBER:
408
- lua_pushstring(L, lua_tostring(L, 1));
409
- break;
410
- case LUA_TSTRING:
411
- lua_pushvalue(L, 1);
412
- break;
413
- case LUA_TBOOLEAN:
414
- lua_pushstring(L, (lua_toboolean(L, 1) ? "true" : "false"));
415
- break;
416
- case LUA_TNIL:
417
- lua_pushliteral(L, "nil");
418
- break;
419
- default:
420
- lua_pushfstring(L, "%s: %p", luaL_typename(L, 1), lua_topointer(L, 1));
421
- break;
422
- }
423
- return 1;
424
- }
425
-
426
-
427
- static int luaB_newproxy (lua_State *L) {
428
- lua_settop(L, 1);
429
- lua_newuserdata(L, 0); /* create proxy */
430
- if (lua_toboolean(L, 1) == 0)
431
- return 1; /* no metatable */
432
- else if (lua_isboolean(L, 1)) {
433
- lua_newtable(L); /* create a new metatable `m' ... */
434
- lua_pushvalue(L, -1); /* ... and mark `m' as a valid metatable */
435
- lua_pushboolean(L, 1);
436
- lua_rawset(L, lua_upvalueindex(1)); /* weaktable[m] = true */
437
- }
438
- else {
439
- int validproxy = 0; /* to check if weaktable[metatable(u)] == true */
440
- if (lua_getmetatable(L, 1)) {
441
- lua_rawget(L, lua_upvalueindex(1));
442
- validproxy = lua_toboolean(L, -1);
443
- lua_pop(L, 1); /* remove value */
444
- }
445
- luaL_argcheck(L, validproxy, 1, "boolean or proxy expected");
446
- lua_getmetatable(L, 1); /* metatable is valid; get it */
447
- }
448
- lua_setmetatable(L, 2);
449
- return 1;
450
- }
451
-
452
-
453
- static const luaL_Reg base_funcs[] = {
454
- {"assert", luaB_assert},
455
- {"collectgarbage", luaB_collectgarbage},
456
- {"dofile", luaB_dofile},
457
- {"error", luaB_error},
458
- {"gcinfo", luaB_gcinfo},
459
- {"getfenv", luaB_getfenv},
460
- {"getmetatable", luaB_getmetatable},
461
- {"loadfile", luaB_loadfile},
462
- {"load", luaB_load},
463
- {"loadstring", luaB_loadstring},
464
- {"next", luaB_next},
465
- {"pcall", luaB_pcall},
466
- {"print", luaB_print},
467
- {"rawequal", luaB_rawequal},
468
- {"rawget", luaB_rawget},
469
- {"rawset", luaB_rawset},
470
- {"select", luaB_select},
471
- {"setfenv", luaB_setfenv},
472
- {"setmetatable", luaB_setmetatable},
473
- {"tonumber", luaB_tonumber},
474
- {"tostring", luaB_tostring},
475
- {"type", luaB_type},
476
- {"unpack", luaB_unpack},
477
- {"xpcall", luaB_xpcall},
478
- {NULL, NULL}
479
- };
480
-
481
-
482
- /*
483
- ** {======================================================
484
- ** Coroutine library
485
- ** =======================================================
486
- */
487
-
488
- #define CO_RUN 0 /* running */
489
- #define CO_SUS 1 /* suspended */
490
- #define CO_NOR 2 /* 'normal' (it resumed another coroutine) */
491
- #define CO_DEAD 3
492
-
493
- static const char *const statnames[] =
494
- {"running", "suspended", "normal", "dead"};
495
-
496
- static int costatus (lua_State *L, lua_State *co) {
497
- if (L == co) return CO_RUN;
498
- switch (lua_status(co)) {
499
- case LUA_YIELD:
500
- return CO_SUS;
501
- case 0: {
502
- lua_Debug ar;
503
- if (lua_getstack(co, 0, &ar) > 0) /* does it have frames? */
504
- return CO_NOR; /* it is running */
505
- else if (lua_gettop(co) == 0)
506
- return CO_DEAD;
507
- else
508
- return CO_SUS; /* initial state */
509
- }
510
- default: /* some error occured */
511
- return CO_DEAD;
512
- }
513
- }
514
-
515
-
516
- static int luaB_costatus (lua_State *L) {
517
- lua_State *co = lua_tothread(L, 1);
518
- luaL_argcheck(L, co, 1, "coroutine expected");
519
- lua_pushstring(L, statnames[costatus(L, co)]);
520
- return 1;
521
- }
522
-
523
-
524
- static int auxresume (lua_State *L, lua_State *co, int narg) {
525
- int status = costatus(L, co);
526
- if (!lua_checkstack(co, narg))
527
- luaL_error(L, "too many arguments to resume");
528
- if (status != CO_SUS) {
529
- lua_pushfstring(L, "cannot resume %s coroutine", statnames[status]);
530
- return -1; /* error flag */
531
- }
532
- lua_xmove(L, co, narg);
533
- lua_setlevel(L, co);
534
- status = lua_resume(co, narg);
535
- if (status == 0 || status == LUA_YIELD) {
536
- int nres = lua_gettop(co);
537
- if (!lua_checkstack(L, nres + 1))
538
- luaL_error(L, "too many results to resume");
539
- lua_xmove(co, L, nres); /* move yielded values */
540
- return nres;
541
- }
542
- else {
543
- lua_xmove(co, L, 1); /* move error message */
544
- return -1; /* error flag */
545
- }
546
- }
547
-
548
-
549
- static int luaB_coresume (lua_State *L) {
550
- lua_State *co = lua_tothread(L, 1);
551
- int r;
552
- luaL_argcheck(L, co, 1, "coroutine expected");
553
- r = auxresume(L, co, lua_gettop(L) - 1);
554
- if (r < 0) {
555
- lua_pushboolean(L, 0);
556
- lua_insert(L, -2);
557
- return 2; /* return false + error message */
558
- }
559
- else {
560
- lua_pushboolean(L, 1);
561
- lua_insert(L, -(r + 1));
562
- return r + 1; /* return true + `resume' returns */
563
- }
564
- }
565
-
566
-
567
- static int luaB_auxwrap (lua_State *L) {
568
- lua_State *co = lua_tothread(L, lua_upvalueindex(1));
569
- int r = auxresume(L, co, lua_gettop(L));
570
- if (r < 0) {
571
- if (lua_isstring(L, -1)) { /* error object is a string? */
572
- luaL_where(L, 1); /* add extra info */
573
- lua_insert(L, -2);
574
- lua_concat(L, 2);
575
- }
576
- lua_error(L); /* propagate error */
577
- }
578
- return r;
579
- }
580
-
581
-
582
- static int luaB_cocreate (lua_State *L) {
583
- lua_State *NL = lua_newthread(L);
584
- luaL_argcheck(L, lua_isfunction(L, 1) && !lua_iscfunction(L, 1), 1,
585
- "Lua function expected");
586
- lua_pushvalue(L, 1); /* move function to top */
587
- lua_xmove(L, NL, 1); /* move function from L to NL */
588
- return 1;
589
- }
590
-
591
-
592
- static int luaB_cowrap (lua_State *L) {
593
- luaB_cocreate(L);
594
- lua_pushcclosure(L, luaB_auxwrap, 1);
595
- return 1;
596
- }
597
-
598
-
599
- static int luaB_yield (lua_State *L) {
600
- return lua_yield(L, lua_gettop(L));
601
- }
602
-
603
-
604
- static int luaB_corunning (lua_State *L) {
605
- if (lua_pushthread(L))
606
- lua_pushnil(L); /* main thread is not a coroutine */
607
- return 1;
608
- }
609
-
610
-
611
- static const luaL_Reg co_funcs[] = {
612
- {"create", luaB_cocreate},
613
- {"resume", luaB_coresume},
614
- {"running", luaB_corunning},
615
- {"status", luaB_costatus},
616
- {"wrap", luaB_cowrap},
617
- {"yield", luaB_yield},
618
- {NULL, NULL}
619
- };
620
-
621
- /* }====================================================== */
622
-
623
-
624
- static void auxopen (lua_State *L, const char *name,
625
- lua_CFunction f, lua_CFunction u) {
626
- lua_pushcfunction(L, u);
627
- lua_pushcclosure(L, f, 1);
628
- lua_setfield(L, -2, name);
629
- }
630
-
631
-
632
- static void base_open (lua_State *L) {
633
- /* set global _G */
634
- lua_pushvalue(L, LUA_GLOBALSINDEX);
635
- lua_setglobal(L, "_G");
636
- /* open lib into global table */
637
- luaL_register(L, "_G", base_funcs);
638
- lua_pushliteral(L, LUA_VERSION);
639
- lua_setglobal(L, "_VERSION"); /* set global _VERSION */
640
- /* `ipairs' and `pairs' need auxiliary functions as upvalues */
641
- auxopen(L, "ipairs", luaB_ipairs, ipairsaux);
642
- auxopen(L, "pairs", luaB_pairs, luaB_next);
643
- /* `newproxy' needs a weaktable as upvalue */
644
- lua_createtable(L, 0, 1); /* new table `w' */
645
- lua_pushvalue(L, -1); /* `w' will be its own metatable */
646
- lua_setmetatable(L, -2);
647
- lua_pushliteral(L, "kv");
648
- lua_setfield(L, -2, "__mode"); /* metatable(w).__mode = "kv" */
649
- lua_pushcclosure(L, luaB_newproxy, 1);
650
- lua_setglobal(L, "newproxy"); /* set global `newproxy' */
651
- }
652
-
653
-
654
- LUALIB_API int luaopen_base (lua_State *L) {
655
- base_open(L);
656
- luaL_register(L, LUA_COLIBNAME, co_funcs);
657
- return 2;
658
- }
659
-