script_core 0.2.2 → 0.2.7

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 (376) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +41 -45
  3. data/.travis.yml +2 -1
  4. data/Gemfile +3 -3
  5. data/README.md +7 -1
  6. data/bootstrap.sh +2 -2
  7. data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
  8. data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
  9. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
  10. data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
  11. data/ext/enterprise_script_service/libseccomp/README.md +21 -1
  12. data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
  13. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
  14. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
  15. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
  16. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
  17. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
  18. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
  19. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
  20. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
  21. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
  22. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
  24. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
  25. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
  26. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
  27. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
  28. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
  29. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
  30. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
  31. data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
  32. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
  33. data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
  34. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
  35. data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
  36. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
  37. data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
  38. data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
  39. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
  40. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
  41. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
  42. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
  43. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
  44. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
  45. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
  46. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
  48. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
  49. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
  50. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
  51. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
  52. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
  53. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
  54. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
  55. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
  56. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
  57. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
  58. data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
  59. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
  60. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
  61. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
  62. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
  63. data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
  64. data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
  65. data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
  66. data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
  67. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
  68. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
  69. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
  70. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
  71. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
  72. data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
  73. data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
  74. data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
  75. data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
  76. data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
  77. data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
  78. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
  79. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
  80. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
  81. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
  82. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
  83. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
  84. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
  85. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
  87. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
  88. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
  89. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
  91. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
  92. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
  93. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
  94. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
  95. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
  96. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
  97. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
  98. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
  100. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
  101. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
  102. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
  103. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
  105. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
  106. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
  107. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
  109. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
  111. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
  112. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
  113. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
  114. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
  117. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
  120. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
  121. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
  122. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
  123. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
  124. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
  125. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
  126. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
  127. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
  128. data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
  129. data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
  130. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
  131. data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
  132. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
  133. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
  134. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
  135. data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
  136. data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
  137. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +106 -0
  138. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +51 -0
  139. data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +24 -0
  140. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  141. data/ext/enterprise_script_service/mruby/.travis.yml +6 -9
  142. data/ext/enterprise_script_service/mruby/AUTHORS +1 -0
  143. data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
  144. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  145. data/ext/enterprise_script_service/mruby/README.md +6 -2
  146. data/ext/enterprise_script_service/mruby/appveyor.yml +9 -12
  147. data/ext/enterprise_script_service/mruby/appveyor_config.rb +9 -0
  148. data/ext/enterprise_script_service/mruby/build_config.rb +6 -6
  149. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +6 -2
  150. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  151. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +4 -8
  152. data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
  153. data/ext/enterprise_script_service/mruby/doc/opcode.md +108 -95
  154. data/ext/enterprise_script_service/mruby/examples/targets/build_config_ArduinoDue.rb +2 -2
  155. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelEdison.rb +2 -2
  156. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelGalileo.rb +2 -2
  157. data/ext/enterprise_script_service/mruby/examples/targets/build_config_RX630.rb +2 -2
  158. data/ext/enterprise_script_service/mruby/examples/targets/build_config_chipKITMax32.rb +2 -2
  159. data/ext/enterprise_script_service/mruby/examples/targets/build_config_dreamcast_shelf.rb +108 -0
  160. data/ext/enterprise_script_service/mruby/include/mrbconf.h +10 -7
  161. data/ext/enterprise_script_service/mruby/include/mruby.h +24 -9
  162. data/ext/enterprise_script_service/mruby/include/mruby/array.h +4 -0
  163. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +11 -2
  164. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -10
  165. data/ext/enterprise_script_service/mruby/include/mruby/common.h +10 -0
  166. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +11 -3
  167. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +1 -17
  168. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +10 -0
  169. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  170. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +23 -5
  171. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +1 -0
  172. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +3 -2
  173. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +13 -8
  174. data/ext/enterprise_script_service/mruby/include/mruby/string.h +2 -1
  175. data/ext/enterprise_script_service/mruby/include/mruby/value.h +32 -41
  176. data/ext/enterprise_script_service/mruby/include/mruby/version.h +4 -4
  177. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +2 -30
  178. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +21 -46
  179. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +9 -0
  180. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  181. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +7 -0
  182. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +0 -31
  183. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -8
  184. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  185. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +5 -2
  186. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +0 -1
  187. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +5 -1
  188. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +7 -3
  189. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +24 -21
  190. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +0 -1
  191. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +6 -2
  192. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  193. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +6 -1
  194. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +76 -48
  195. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +107 -32
  196. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13153 -0
  197. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +13 -15
  198. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
  199. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +1 -2
  200. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  201. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +3 -214
  202. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  203. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +1 -2
  204. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +1 -3
  205. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +3 -4
  206. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  207. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  208. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  209. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +7 -12
  210. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +77 -32
  211. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +18 -36
  212. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +324 -122
  213. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +18 -12
  214. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +32 -0
  215. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +57 -49
  216. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +6 -8
  217. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +15 -17
  218. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +9 -0
  219. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -5
  220. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +3 -12
  221. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +0 -1
  222. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +113 -10
  223. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +6 -3
  224. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +2 -2
  225. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +1 -3
  226. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +1 -3
  227. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +9 -9
  228. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +1 -1
  229. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  230. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  231. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +62 -25
  232. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +5 -23
  233. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +4 -5
  234. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +5 -11
  235. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +1 -1
  236. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +1 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +11 -15
  238. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  239. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -3
  240. data/ext/enterprise_script_service/mruby/src/array.c +25 -11
  241. data/ext/enterprise_script_service/mruby/src/backtrace.c +2 -2
  242. data/ext/enterprise_script_service/mruby/src/class.c +48 -32
  243. data/ext/enterprise_script_service/mruby/src/codedump.c +4 -0
  244. data/ext/enterprise_script_service/mruby/src/debug.c +8 -5
  245. data/ext/enterprise_script_service/mruby/src/dump.c +3 -65
  246. data/ext/enterprise_script_service/mruby/src/error.c +58 -7
  247. data/ext/enterprise_script_service/mruby/src/etc.c +13 -5
  248. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +98 -21
  249. data/ext/enterprise_script_service/mruby/src/gc.c +15 -280
  250. data/ext/enterprise_script_service/mruby/src/hash.c +13 -21
  251. data/ext/enterprise_script_service/mruby/src/kernel.c +6 -9
  252. data/ext/enterprise_script_service/mruby/src/load.c +56 -30
  253. data/ext/enterprise_script_service/mruby/src/numeric.c +50 -70
  254. data/ext/enterprise_script_service/mruby/src/object.c +23 -5
  255. data/ext/enterprise_script_service/mruby/src/print.c +27 -3
  256. data/ext/enterprise_script_service/mruby/src/proc.c +26 -7
  257. data/ext/enterprise_script_service/mruby/src/range.c +4 -12
  258. data/ext/enterprise_script_service/mruby/src/state.c +34 -11
  259. data/ext/enterprise_script_service/mruby/src/string.c +93 -56
  260. data/ext/enterprise_script_service/mruby/src/symbol.c +13 -12
  261. data/ext/enterprise_script_service/mruby/src/vm.c +48 -53
  262. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +19 -22
  263. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +1 -1
  264. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  265. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +3 -3
  266. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +6 -6
  267. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +8 -8
  268. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  269. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  270. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  271. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +15 -24
  272. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -14
  273. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  274. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  275. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  276. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  277. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  278. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  279. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  280. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  281. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  282. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  283. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  284. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  285. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  286. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  287. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  288. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  289. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  290. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  291. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  292. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  293. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  294. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  295. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  296. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  297. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  298. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  299. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  300. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  301. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  302. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  303. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  304. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  305. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  306. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  307. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  308. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  309. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  310. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  311. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  312. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  313. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  314. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  315. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  316. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  317. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  318. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  319. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  320. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  321. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  322. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  323. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  324. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  325. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  326. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  327. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  328. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  329. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  330. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  331. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  332. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  333. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  334. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  335. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  336. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  337. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  338. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  339. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  340. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  341. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  342. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  343. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  344. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  345. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  346. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  347. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  348. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  349. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  350. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  351. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  352. data/lib/script_core/engine.rb +24 -5
  353. data/lib/script_core/executable.rb +4 -3
  354. data/lib/script_core/result.rb +1 -5
  355. data/lib/script_core/service_channel.rb +1 -0
  356. data/lib/script_core/version.rb +1 -1
  357. data/lib/tasks/script_core.rake +3 -1
  358. data/script_core.gemspec +2 -2
  359. data/spec/dummy/app/lib/script_engine.rb +64 -5
  360. metadata +68 -30
  361. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  362. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  363. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  364. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  365. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  366. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  367. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  368. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  369. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
  370. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
  371. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  372. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  373. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  374. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  375. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
  376. data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -110,18 +110,22 @@
110
110
  end
111
111
 
112
112
  assert('File.realpath') do
113
- if File::ALT_SEPARATOR
114
- readme_path = File._getwd + File::ALT_SEPARATOR + "README.md"
115
- assert_equal readme_path, File.realpath("README.md")
116
- else
117
- dir = MRubyIOTestUtil.mkdtemp("mruby-io-test.XXXXXX")
118
- begin
119
- dir1 = File.realpath($mrbtest_io_rfname)
120
- dir2 = File.realpath("./#{dir}//./../#{$mrbtest_io_symlinkname}")
121
- assert_equal dir1, dir2
122
- ensure
123
- MRubyIOTestUtil.rmdir dir
113
+ dir = MRubyIOTestUtil.mkdtemp("mruby-io-test.XXXXXX")
114
+ begin
115
+ sep = File::ALT_SEPARATOR || File::SEPARATOR
116
+ relative_path = "#{File.basename(dir)}#{sep}realpath_test"
117
+ path = "#{File._getwd}#{sep}#{relative_path}"
118
+ File.open(path, "w"){}
119
+ assert_equal path, File.realpath(relative_path)
120
+
121
+ unless MRubyIOTestUtil.win?
122
+ path1 = File.realpath($mrbtest_io_rfname)
123
+ path2 = File.realpath($mrbtest_io_symlinkname)
124
+ assert_equal path1, path2
124
125
  end
126
+ ensure
127
+ File.delete path rescue nil
128
+ MRubyIOTestUtil.rmdir dir
125
129
  end
126
130
 
127
131
  assert_raise(ArgumentError) { File.realpath("TO\0DO") }
@@ -129,7 +133,9 @@
129
133
 
130
134
  assert("File.readlink") do
131
135
  begin
132
- assert_equal $mrbtest_io_rfname, File.readlink($mrbtest_io_symlinkname)
136
+ exp = File.basename($mrbtest_io_rfname)
137
+ act = File.readlink($mrbtest_io_symlinkname)
138
+ assert_equal exp, act
133
139
  rescue NotImplementedError => e
134
140
  skip e.message
135
141
  end
@@ -24,6 +24,10 @@ def assert_io_open(meth)
24
24
  end
25
25
  end
26
26
  io2.close unless meth == :open
27
+
28
+ assert_raise(RuntimeError) { IO.__send__(meth, 1023) } # For Windows
29
+ assert_raise(RuntimeError) { IO.__send__(meth, 1 << 26) }
30
+ assert_raise(RuntimeError) { IO.__send__(meth, 1 << 32) } if (1 << 32).kind_of?(Integer)
27
31
  end
28
32
  end
29
33
 
@@ -564,6 +568,34 @@ def io._buf
564
568
  end
565
569
  end
566
570
 
571
+ assert('IO#pread') do
572
+ skip "IO#pread is not implemented on this configuration" unless MRubyIOTestUtil::MRB_WITH_IO_PREAD_PWRITE
573
+
574
+ IO.open(IO.sysopen($mrbtest_io_rfname, 'r'), 'r') do |io|
575
+ assert_equal $mrbtest_io_msg.byteslice(5, 8), io.pread(8, 5)
576
+ assert_equal 0, io.pos
577
+ assert_equal $mrbtest_io_msg.byteslice(1, 5), io.pread(5, 1)
578
+ assert_equal 0, io.pos
579
+ assert_raise(RuntimeError) { io.pread(20, -9) }
580
+ end
581
+ end
582
+
583
+ assert('IO#pwrite') do
584
+ skip "IO#pwrite is not implemented on this configuration" unless MRubyIOTestUtil::MRB_WITH_IO_PREAD_PWRITE
585
+
586
+ IO.open(IO.sysopen($mrbtest_io_wfname, 'w+'), 'w+') do |io|
587
+ assert_equal 6, io.pwrite("Warld!", 7)
588
+ assert_equal 0, io.pos
589
+ assert_equal 7, io.pwrite("Hello, ", 0)
590
+ assert_equal 0, io.pos
591
+ assert_equal "Hello, Warld!", io.read
592
+ assert_equal 6, io.pwrite("world!", 7)
593
+ assert_equal 13, io.pos
594
+ io.pos = 0
595
+ assert_equal "Hello, world!", io.read
596
+ end
597
+ end
598
+
567
599
  assert('IO.pipe') do
568
600
  begin
569
601
  called = false
@@ -1,5 +1,7 @@
1
+ #include <mruby/common.h>
1
2
  #include <sys/types.h>
2
3
  #include <errno.h>
4
+ #include <string.h>
3
5
 
4
6
  #if defined(_WIN32) || defined(_WIN64)
5
7
 
@@ -7,7 +9,6 @@
7
9
  #include <io.h>
8
10
  #include <fcntl.h>
9
11
  #include <direct.h>
10
- #include <string.h>
11
12
  #include <stdlib.h>
12
13
  #include <malloc.h>
13
14
 
@@ -18,12 +19,6 @@ typedef int mode_t;
18
19
  #define open _open
19
20
  #define close _close
20
21
 
21
- #if defined(__MINGW64_VERSION_MAJOR)
22
- # define MRB_MINGW64_VERSION (__MINGW64_VERSION_MAJOR * 1000 + __MINGW64_VERSION_MINOR)
23
- #elif defined(__MINGW32_MAJOR_VERSION)
24
- # define MRB_MINGW32_VERSION (__MINGW32_MAJOR_VERSION * 1000 + __MINGW32_MINOR_VERSION)
25
- #endif
26
-
27
22
  #if defined(_MSC_VER) || \
28
23
  (defined(MRB_MINGW32_VERSION) && MRB_MINGW32_VERSION < 3021) || \
29
24
  (defined(MRB_MINGW64_VERSION) && MRB_MINGW64_VERSION < 4000)
@@ -58,10 +53,11 @@ mkdtemp(char *temp)
58
53
  #include <sys/socket.h>
59
54
  #include <unistd.h>
60
55
  #include <sys/un.h>
56
+ #include <fcntl.h>
57
+ #include <libgen.h>
61
58
  #endif
62
59
 
63
60
  #include <sys/stat.h>
64
- #include <stdio.h>
65
61
  #include <stdlib.h>
66
62
 
67
63
  #include "mruby.h"
@@ -69,51 +65,55 @@ mkdtemp(char *temp)
69
65
  #include "mruby/error.h"
70
66
  #include "mruby/string.h"
71
67
  #include "mruby/variable.h"
68
+ #include <mruby/ext/io.h>
72
69
 
73
70
  static mrb_value
74
71
  mrb_io_test_io_setup(mrb_state *mrb, mrb_value self)
75
72
  {
76
- char rfname[] = "tmp.mruby-io-test-r.XXXXXXXX";
77
- char wfname[] = "tmp.mruby-io-test-w.XXXXXXXX";
78
- char symlinkname[] = "tmp.mruby-io-test-l.XXXXXXXX";
79
- char socketname[] = "tmp.mruby-io-test-s.XXXXXXXX";
73
+ #define GVNAME(n) "$mrbtest_io_" #n "name"
74
+ enum {IDX_READ, IDX_WRITE, IDX_LINK, IDX_SOCKET, IDX_COUNT};
75
+ const char *gvnames[] = {GVNAME(rf), GVNAME(wf), GVNAME(symlink), GVNAME(socket)};
76
+ char *fnames[IDX_COUNT];
77
+ int fds[IDX_COUNT];
80
78
  char msg[] = "mruby io test\n";
81
79
  mode_t mask;
82
- int fd0, fd1;
83
80
  FILE *fp;
84
-
81
+ int i;
85
82
  #if !defined(_WIN32) && !defined(_WIN64)
86
- int fd2, fd3;
87
83
  struct sockaddr_un sun0;
88
84
  #endif
89
85
 
90
- mask = umask(077);
91
- fd0 = mkstemp(rfname);
92
- fd1 = mkstemp(wfname);
93
- if (fd0 == -1 || fd1 == -1) {
94
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't create temporary file");
95
- return mrb_nil_value();
96
- }
97
- close(fd0);
98
- close(fd1);
86
+ mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_msg"), mrb_str_new_cstr(mrb, msg));
99
87
 
88
+ mask = umask(077);
89
+ for (i = 0; i < IDX_COUNT; i++) {
90
+ mrb_value fname = mrb_str_new_capa(mrb, 0);
100
91
  #if !defined(_WIN32) && !defined(_WIN64)
101
- fd2 = mkstemp(symlinkname);
102
- fd3 = mkstemp(socketname);
103
- if (fd2 == -1 || fd3 == -1) {
104
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't create temporary file");
105
- return mrb_nil_value();
106
- }
92
+ /*
93
+ * Workaround for not being able to bind a socket to some file systems
94
+ * (e.g. vboxsf, NFS). [#4981]
95
+ */
96
+ char *tmpdir = getenv("TMPDIR");
97
+ if (tmpdir && strlen(tmpdir) > 0) {
98
+ mrb_str_cat_cstr(mrb, fname, tmpdir);
99
+ if (*(RSTRING_END(fname)-1) != '/') mrb_str_cat_lit(mrb, fname, "/");
100
+ } else {
101
+ mrb_str_cat_lit(mrb, fname, "/tmp/");
102
+ }
107
103
  #endif
104
+ mrb_str_cat_cstr(mrb, fname, gvnames[i]+1);
105
+ mrb_str_cat_cstr(mrb, fname, ".XXXXXXXX");
106
+ fnames[i] = RSTRING_PTR(fname);
107
+ fds[i] = mkstemp(fnames[i]);
108
+ if (fds[i] == -1) {
109
+ mrb_raise(mrb, E_RUNTIME_ERROR, "can't create temporary file");
110
+ }
111
+ close(fds[i]);
112
+ mrb_gv_set(mrb, mrb_intern_cstr(mrb, gvnames[i]), fname);
113
+ }
108
114
  umask(mask);
109
115
 
110
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_rfname"), mrb_str_new_cstr(mrb, rfname));
111
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_wfname"), mrb_str_new_cstr(mrb, wfname));
112
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_symlinkname"), mrb_str_new_cstr(mrb, symlinkname));
113
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_socketname"), mrb_str_new_cstr(mrb, socketname));
114
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_msg"), mrb_str_new_cstr(mrb, msg));
115
-
116
- fp = fopen(rfname, "wb");
116
+ fp = fopen(fnames[IDX_READ], "wb");
117
117
  if (fp == NULL) {
118
118
  mrb_raise(mrb, E_RUNTIME_ERROR, "can't open temporary file");
119
119
  return mrb_nil_value();
@@ -121,7 +121,7 @@ mrb_io_test_io_setup(mrb_state *mrb, mrb_value self)
121
121
  fputs(msg, fp);
122
122
  fclose(fp);
123
123
 
124
- fp = fopen(wfname, "wb");
124
+ fp = fopen(fnames[IDX_WRITE], "wb");
125
125
  if (fp == NULL) {
126
126
  mrb_raise(mrb, E_RUNTIME_ERROR, "can't open temporary file");
127
127
  return mrb_nil_value();
@@ -129,29 +129,29 @@ mrb_io_test_io_setup(mrb_state *mrb, mrb_value self)
129
129
  fclose(fp);
130
130
 
131
131
  #if !defined(_WIN32) && !defined(_WIN64)
132
- unlink(symlinkname);
133
- close(fd2);
134
- if (symlink(rfname, symlinkname) == -1) {
132
+ unlink(fnames[IDX_LINK]);
133
+ if (symlink(basename(fnames[IDX_READ]), fnames[IDX_LINK]) == -1) {
135
134
  mrb_raise(mrb, E_RUNTIME_ERROR, "can't make a symbolic link");
136
135
  }
137
136
 
138
- unlink(socketname);
139
- close(fd3);
140
- fd3 = socket(AF_UNIX, SOCK_STREAM, 0);
141
- if (fd3 == -1) {
137
+ unlink(fnames[IDX_SOCKET]);
138
+ fds[IDX_SOCKET] = socket(AF_UNIX, SOCK_STREAM, 0);
139
+ if (fds[IDX_SOCKET] == -1) {
142
140
  mrb_raise(mrb, E_RUNTIME_ERROR, "can't make a socket");
143
141
  }
144
142
  sun0.sun_family = AF_UNIX;
145
- snprintf(sun0.sun_path, sizeof(sun0.sun_path), "%s", socketname);
146
- if (bind(fd3, (struct sockaddr *)&sun0, sizeof(sun0)) == -1) {
143
+ strncpy(sun0.sun_path, fnames[IDX_SOCKET], sizeof(sun0.sun_path)-1);
144
+ sun0.sun_path[sizeof(sun0.sun_path)-1] = 0;
145
+ if (bind(fds[IDX_SOCKET], (struct sockaddr *)&sun0, sizeof(sun0)) == -1) {
147
146
  mrb_raisef(mrb, E_RUNTIME_ERROR, "can't bind AF_UNIX socket to %s: %d",
148
147
  sun0.sun_path,
149
148
  errno);
150
149
  }
151
- close(fd3);
150
+ close(fds[IDX_SOCKET]);
152
151
  #endif
153
152
 
154
153
  return mrb_true_value();
154
+ #undef GVNAME
155
155
  }
156
156
 
157
157
  static mrb_value
@@ -210,7 +210,7 @@ mrb_io_test_rmdir(mrb_state *mrb, mrb_value klass)
210
210
  return mrb_true_value();
211
211
  }
212
212
 
213
- mrb_value
213
+ static mrb_value
214
214
  mrb_io_win_p(mrb_state *mrb, mrb_value klass)
215
215
  {
216
216
  #if defined(_WIN32) || defined(_WIN64)
@@ -224,6 +224,12 @@ mrb_io_win_p(mrb_state *mrb, mrb_value klass)
224
224
  #endif
225
225
  }
226
226
 
227
+ #ifdef MRB_WITH_IO_PREAD_PWRITE
228
+ # define MRB_WITH_IO_PREAD_PWRITE_ENABLED TRUE
229
+ #else
230
+ # define MRB_WITH_IO_PREAD_PWRITE_ENABLED FALSE
231
+ #endif
232
+
227
233
  void
228
234
  mrb_mruby_io_gem_test(mrb_state* mrb)
229
235
  {
@@ -234,4 +240,6 @@ mrb_mruby_io_gem_test(mrb_state* mrb)
234
240
  mrb_define_class_method(mrb, io_test, "mkdtemp", mrb_io_test_mkdtemp, MRB_ARGS_REQ(1));
235
241
  mrb_define_class_method(mrb, io_test, "rmdir", mrb_io_test_rmdir, MRB_ARGS_REQ(1));
236
242
  mrb_define_class_method(mrb, io_test, "win?", mrb_io_win_p, MRB_ARGS_NONE());
243
+
244
+ mrb_define_const(mrb, io_test, "MRB_WITH_IO_PREAD_PWRITE", mrb_bool_value(MRB_WITH_IO_PREAD_PWRITE_ENABLED));
237
245
  }
@@ -128,9 +128,8 @@ mrb_f_integer(mrb_state *mrb, mrb_value self)
128
128
  static mrb_value
129
129
  mrb_f_float(mrb_state *mrb, mrb_value self)
130
130
  {
131
- mrb_value arg;
131
+ mrb_value arg = mrb_get_arg1(mrb);
132
132
 
133
- mrb_get_args(mrb, "o", &arg);
134
133
  return mrb_Float(mrb, arg);
135
134
  }
136
135
  #endif
@@ -149,9 +148,9 @@ mrb_f_float(mrb_state *mrb, mrb_value self)
149
148
  static mrb_value
150
149
  mrb_f_string(mrb_state *mrb, mrb_value self)
151
150
  {
152
- mrb_value arg, tmp;
151
+ mrb_value arg = mrb_get_arg1(mrb);
152
+ mrb_value tmp;
153
153
 
154
- mrb_get_args(mrb, "o", &arg);
155
154
  tmp = mrb_convert_type(mrb, arg, MRB_TT_STRING, "String", "to_s");
156
155
  return tmp;
157
156
  }
@@ -168,9 +167,9 @@ mrb_f_string(mrb_state *mrb, mrb_value self)
168
167
  static mrb_value
169
168
  mrb_f_array(mrb_state *mrb, mrb_value self)
170
169
  {
171
- mrb_value arg, tmp;
170
+ mrb_value arg = mrb_get_arg1(mrb);
171
+ mrb_value tmp;
172
172
 
173
- mrb_get_args(mrb, "o", &arg);
174
173
  tmp = mrb_check_convert_type(mrb, arg, MRB_TT_ARRAY, "Array", "to_a");
175
174
  if (mrb_nil_p(tmp)) {
176
175
  return mrb_ary_new_from_values(mrb, 1, &arg);
@@ -196,9 +195,8 @@ mrb_f_array(mrb_state *mrb, mrb_value self)
196
195
  static mrb_value
197
196
  mrb_f_hash(mrb_state *mrb, mrb_value self)
198
197
  {
199
- mrb_value arg;
198
+ mrb_value arg = mrb_get_arg1(mrb);
200
199
 
201
- mrb_get_args(mrb, "o", &arg);
202
200
  if (mrb_nil_p(arg) || (mrb_array_p(arg) && RARRAY_LEN(arg) == 0)) {
203
201
  return mrb_hash_new(mrb);
204
202
  }
@@ -139,31 +139,30 @@ mrb_local_variables(mrb_state *mrb, mrb_value self)
139
139
 
140
140
  proc = mrb->c->ci[-1].proc;
141
141
 
142
- if (MRB_PROC_CFUNC_P(proc)) {
142
+ if (proc == NULL || MRB_PROC_CFUNC_P(proc)) {
143
143
  return mrb_ary_new(mrb);
144
144
  }
145
145
  vars = mrb_hash_new(mrb);
146
146
  while (proc) {
147
147
  if (MRB_PROC_CFUNC_P(proc)) break;
148
148
  irep = proc->body.irep;
149
- if (!irep->lv) break;
150
- for (i = 0; i + 1 < irep->nlocals; ++i) {
151
- if (irep->lv[i].name) {
152
- mrb_sym sym = irep->lv[i].name;
153
- const char *name = mrb_sym_name(mrb, sym);
154
- switch (name[0]) {
155
- case '*': case '&':
156
- break;
157
- default:
158
- mrb_hash_set(mrb, vars, mrb_symbol_value(sym), mrb_true_value());
159
- break;
149
+ if (irep->lv) {
150
+ for (i = 0; i + 1 < irep->nlocals; ++i) {
151
+ if (irep->lv[i].name) {
152
+ mrb_sym sym = irep->lv[i].name;
153
+ const char *name = mrb_sym_name(mrb, sym);
154
+ switch (name[0]) {
155
+ case '*': case '&':
156
+ break;
157
+ default:
158
+ mrb_hash_set(mrb, vars, mrb_symbol_value(sym), mrb_true_value());
159
+ break;
160
+ }
160
161
  }
161
162
  }
162
163
  }
163
- if (!MRB_PROC_ENV_P(proc)) break;
164
+ if (MRB_PROC_SCOPE_P(proc)) break;
164
165
  proc = proc->upper;
165
- //if (MRB_PROC_SCOPE_P(proc)) break;
166
- if (!proc->c) break;
167
166
  }
168
167
 
169
168
  return mrb_hash_keys(mrb, vars);
@@ -671,8 +670,7 @@ mrb_mod_s_nesting(mrb_state *mrb, mrb_value mod)
671
670
 
672
671
  ary = mrb_ary_new(mrb);
673
672
  proc = mrb->c->ci[-1].proc; /* callee proc */
674
- mrb_assert(!MRB_PROC_CFUNC_P(proc));
675
- while (proc) {
673
+ while (proc && !MRB_PROC_CFUNC_P(proc)) {
676
674
  if (MRB_PROC_SCOPE_P(proc)) {
677
675
  struct RClass *c2 = MRB_PROC_TARGET_CLASS(proc);
678
676
 
@@ -114,6 +114,15 @@ def foo
114
114
  # Kernel#local_variables: 15.3.1.3.28
115
115
  local_variables.sort
116
116
  }.call(-1, -2)
117
+
118
+ a = Object.new
119
+ def a.hoge(vars, *, **)
120
+ Proc.new {
121
+ x, y = 1, 2
122
+ local_variables.sort
123
+ }
124
+ end
125
+ assert_equal([:vars, :x, :y]) { a.hoge(0).call }
117
126
  end
118
127
 
119
128
  assert('Kernel#define_singleton_method') do
@@ -33,9 +33,8 @@ unbound_method_bind(mrb_state *mrb, mrb_value self)
33
33
  mrb_value name = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name"));
34
34
  mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc"));
35
35
  mrb_value klass = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_klass"));
36
- mrb_value recv;
36
+ mrb_value recv = mrb_get_arg1(mrb);
37
37
 
38
- mrb_get_args(mrb, "o", &recv);
39
38
  bind_check(mrb, recv, owner);
40
39
  me = method_object_alloc(mrb, mrb_class_get(mrb, "Method"));
41
40
  mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_owner"), owner);
@@ -51,11 +50,11 @@ unbound_method_bind(mrb_state *mrb, mrb_value self)
51
50
  static mrb_value
52
51
  method_eql(mrb_state *mrb, mrb_value self)
53
52
  {
54
- mrb_value other, receiver, orig_proc, other_proc;
53
+ mrb_value other = mrb_get_arg1(mrb);
54
+ mrb_value receiver, orig_proc, other_proc;
55
55
  struct RClass *owner, *klass;
56
56
  struct RProc *orig_rproc, *other_rproc;
57
57
 
58
- mrb_get_args(mrb, "o", &other);
59
58
  if (!mrb_obj_is_instance_of(mrb, other, mrb_class(mrb, self)))
60
59
  return mrb_false_value();
61
60
 
@@ -110,7 +109,7 @@ method_eql(mrb_state *mrb, mrb_value self)
110
109
 
111
110
  static mrb_value
112
111
  mcall(mrb_state *mrb, mrb_value recv, mrb_value proc, mrb_value name, struct RClass *owner,
113
- int argc, mrb_value *argv, mrb_value block)
112
+ mrb_int argc, mrb_value *argv, mrb_value block)
114
113
  {
115
114
  mrb_value ret;
116
115
  mrb_sym orig_mid = mrb->c->ci->mid;
@@ -101,18 +101,9 @@ mrb_obj_instance_exec(mrb_state *mrb, mrb_value self)
101
101
  struct RClass *c;
102
102
 
103
103
  mrb_get_args(mrb, "*&!", &argv, &argc, &blk);
104
-
105
- switch (mrb_type(self)) {
106
- case MRB_TT_SYMBOL:
107
- case MRB_TT_FIXNUM:
108
- #ifndef MRB_WITHOUT_FLOAT
109
- case MRB_TT_FLOAT:
110
- #endif
111
- c = NULL;
112
- break;
113
- default:
114
- c = mrb_class_ptr(mrb_singleton_class(mrb, self));
115
- break;
104
+ c = mrb_singleton_class_ptr(mrb, self);
105
+ if (mrb->c->ci->acc < 0) {
106
+ return mrb_yield_with_class(mrb, blk, argc, argv, self, c);
116
107
  }
117
108
  mrb->c->ci->target_class = c;
118
109
  return mrb_yield_cont(mrb, blk, self, argc, argv);