webruby 0.1.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (518) hide show
  1. checksums.yaml +4 -4
  2. data/driver/driver.c +12 -0
  3. data/lib/webruby/config.rb +3 -3
  4. data/lib/webruby/environment.rb +1 -0
  5. data/lib/webruby/rake/files.rake +22 -22
  6. data/lib/webruby/rake/general.rake +0 -1
  7. data/lib/webruby/utility.rb +2 -0
  8. data/modules/emscripten/AUTHORS +12 -1
  9. data/modules/emscripten/cmake/Platform/Emscripten.cmake +152 -15
  10. data/modules/emscripten/em++ +2 -0
  11. data/modules/emscripten/em++.bat +1 -1
  12. data/modules/emscripten/em-config.bat +1 -1
  13. data/modules/emscripten/emar.bat +1 -1
  14. data/modules/emscripten/emcc +233 -95
  15. data/modules/emscripten/emcc.bat +1 -1
  16. data/modules/emscripten/emconfigure.bat +1 -1
  17. data/modules/emscripten/emmake.bat +1 -1
  18. data/modules/emscripten/emranlib.bat +1 -1
  19. data/modules/emscripten/emscripten.py +221 -217
  20. data/modules/emscripten/package.json +7 -0
  21. data/modules/emscripten/src/analyzer.js +1437 -1385
  22. data/modules/emscripten/src/compiler.js +30 -6
  23. data/modules/emscripten/src/compiler_phase.html +33 -0
  24. data/modules/emscripten/src/fastLong.js +6 -6
  25. data/modules/emscripten/src/headless.js +47 -656
  26. data/modules/emscripten/src/headlessCanvas.js +618 -0
  27. data/modules/emscripten/src/intertyper.js +1038 -899
  28. data/modules/emscripten/src/jsifier.js +818 -714
  29. data/modules/emscripten/src/library.js +1794 -2968
  30. data/modules/emscripten/src/library_browser.js +81 -16
  31. data/modules/emscripten/src/library_egl.js +9 -3
  32. data/modules/emscripten/src/library_fs.js +1585 -0
  33. data/modules/emscripten/src/library_gl.js +445 -202
  34. data/modules/emscripten/src/library_glfw.js +4 -1
  35. data/modules/emscripten/src/library_glut.js +61 -13
  36. data/modules/emscripten/src/library_idbfs.js +216 -0
  37. data/modules/emscripten/src/library_memfs.js +279 -0
  38. data/modules/emscripten/src/library_nodefs.js +234 -0
  39. data/modules/emscripten/src/library_openal.js +131 -150
  40. data/modules/emscripten/src/library_path.js +3 -0
  41. data/modules/emscripten/src/library_sdl.js +499 -229
  42. data/modules/emscripten/src/library_sockfs.js +576 -0
  43. data/modules/emscripten/src/library_tty.js +146 -0
  44. data/modules/emscripten/src/modules.js +30 -35
  45. data/modules/emscripten/src/parseTools.js +356 -161
  46. data/modules/emscripten/src/postamble.js +76 -31
  47. data/modules/emscripten/src/preamble.js +271 -41
  48. data/modules/emscripten/src/proxyClient.js +82 -0
  49. data/modules/emscripten/src/proxyWorker.js +143 -0
  50. data/modules/emscripten/src/relooper/Relooper.cpp +60 -24
  51. data/modules/emscripten/src/relooper/Relooper.h +3 -2
  52. data/modules/emscripten/src/relooper/emscripten/glue.js +20 -10
  53. data/modules/emscripten/src/relooper/fuzzer.py +19 -10
  54. data/modules/emscripten/src/relooper/test.cpp +50 -50
  55. data/modules/emscripten/src/relooper/test.txt +147 -30
  56. data/modules/emscripten/src/relooper/test2.c +13 -13
  57. data/modules/emscripten/src/relooper/test2.txt +17 -3
  58. data/modules/emscripten/src/relooper/test3.c +7 -7
  59. data/modules/emscripten/src/relooper/test3.txt +36 -7
  60. data/modules/emscripten/src/relooper/test4.cpp +7 -7
  61. data/modules/emscripten/src/relooper/test4.txt +28 -7
  62. data/modules/emscripten/src/relooper/test5.cpp +6 -6
  63. data/modules/emscripten/src/relooper/test5.txt +34 -10
  64. data/modules/emscripten/src/relooper/test6.cpp +4 -4
  65. data/modules/emscripten/src/relooper/test6.txt +17 -3
  66. data/modules/emscripten/src/relooper/test_dead.cpp +2 -2
  67. data/modules/emscripten/src/relooper/test_debug.cpp +4 -4
  68. data/modules/emscripten/src/relooper/test_debug.txt +17 -3
  69. data/modules/emscripten/src/relooper/test_fuzz1.cpp +9 -9
  70. data/modules/emscripten/src/relooper/test_fuzz1.txt +45 -5
  71. data/modules/emscripten/src/relooper/test_fuzz2.cpp +4 -4
  72. data/modules/emscripten/src/relooper/test_fuzz2.txt +18 -1
  73. data/modules/emscripten/src/relooper/test_fuzz3.cpp +5 -5
  74. data/modules/emscripten/src/relooper/test_fuzz3.txt +16 -0
  75. data/modules/emscripten/src/relooper/test_fuzz4.cpp +5 -5
  76. data/modules/emscripten/src/relooper/test_fuzz4.txt +25 -3
  77. data/modules/emscripten/src/relooper/test_fuzz5.cpp +10 -10
  78. data/modules/emscripten/src/relooper/test_fuzz5.txt +49 -15
  79. data/modules/emscripten/src/relooper/test_fuzz6.cpp +92 -92
  80. data/modules/emscripten/src/relooper/test_fuzz6.txt +201 -18
  81. data/modules/emscripten/src/relooper/test_inf.cpp +184 -184
  82. data/modules/emscripten/src/relooper/test_inf.txt +1078 -332
  83. data/modules/emscripten/src/runtime.js +69 -45
  84. data/modules/emscripten/src/settings.js +48 -919
  85. data/modules/emscripten/src/shell.html +1 -1
  86. data/modules/emscripten/src/shell.js +14 -8
  87. data/modules/emscripten/src/shell_sharedlib.js +18 -1
  88. data/modules/emscripten/src/simd.js +958 -0
  89. data/modules/emscripten/src/struct_info.json +1045 -0
  90. data/modules/emscripten/src/utility.js +11 -0
  91. data/modules/emscripten/system/bin/sdl-config +13 -0
  92. data/modules/emscripten/system/include/compat/ctype.h +17 -0
  93. data/modules/emscripten/system/include/compat/malloc.h +48 -0
  94. data/modules/emscripten/system/include/compat/math.h +14 -0
  95. data/modules/emscripten/system/include/compat/netdb.h +22 -0
  96. data/modules/emscripten/system/include/compat/stdarg.h +16 -0
  97. data/modules/emscripten/system/include/compat/stdlib.h +16 -0
  98. data/modules/emscripten/system/include/compat/string.h +17 -0
  99. data/modules/emscripten/system/include/compat/sys/socketvar.h +14 -0
  100. data/modules/emscripten/system/include/compat/sys/stat.h +20 -0
  101. data/modules/emscripten/system/include/{libc → compat}/sys/timeb.h +3 -7
  102. data/modules/emscripten/system/include/compat/time.h +18 -0
  103. data/modules/emscripten/system/include/compat/unistd.h +16 -0
  104. data/modules/emscripten/system/include/compat/xlocale.h +19 -0
  105. data/modules/emscripten/system/include/emscripten/emscripten.h +48 -7
  106. data/modules/emscripten/system/include/emscripten/vector.h +6 -0
  107. data/modules/emscripten/system/include/libc/aio.h +69 -0
  108. data/modules/emscripten/system/include/libc/alloca.h +13 -13
  109. data/modules/emscripten/system/include/libc/ar.h +19 -63
  110. data/modules/emscripten/system/include/libc/arpa/ftp.h +35 -0
  111. data/modules/emscripten/system/include/libc/arpa/inet.h +36 -0
  112. data/modules/emscripten/system/include/libc/arpa/nameser.h +467 -0
  113. data/modules/emscripten/system/include/libc/arpa/nameser_compat.h +2 -0
  114. data/modules/emscripten/system/include/libc/arpa/telnet.h +251 -0
  115. data/modules/emscripten/system/include/libc/arpa/tftp.h +31 -0
  116. data/modules/emscripten/system/include/libc/assert.h +9 -36
  117. data/modules/emscripten/system/include/libc/bits/alltypes.h +397 -0
  118. data/modules/emscripten/system/include/libc/bits/endian.h +1 -0
  119. data/modules/emscripten/system/include/libc/bits/errno.h +134 -0
  120. data/modules/emscripten/system/include/libc/bits/fcntl.h +38 -0
  121. data/modules/emscripten/system/include/libc/bits/fenv.h +34 -0
  122. data/modules/emscripten/system/include/libc/bits/float.h +17 -0
  123. data/modules/emscripten/system/include/libc/bits/io.h +0 -0
  124. data/modules/emscripten/system/include/libc/bits/ioctl.h +197 -0
  125. data/modules/emscripten/system/include/libc/bits/ipc.h +14 -0
  126. data/modules/emscripten/system/include/libc/bits/limits.h +8 -0
  127. data/modules/emscripten/system/include/libc/bits/mman.h +62 -0
  128. data/modules/emscripten/system/include/libc/bits/msg.h +16 -0
  129. data/modules/emscripten/system/include/libc/bits/posix.h +2 -0
  130. data/modules/emscripten/system/include/libc/bits/reg.h +19 -0
  131. data/modules/emscripten/system/include/libc/bits/setjmp.h +1 -0
  132. data/modules/emscripten/system/include/libc/bits/shm.h +18 -0
  133. data/modules/emscripten/system/include/libc/bits/signal.h +112 -0
  134. data/modules/emscripten/system/include/libc/bits/socket.h +17 -0
  135. data/modules/emscripten/system/include/libc/bits/stat.h +22 -0
  136. data/modules/emscripten/system/include/libc/bits/statfs.h +7 -0
  137. data/modules/emscripten/system/include/libc/bits/stdarg.h +4 -0
  138. data/modules/emscripten/system/include/libc/bits/stdint.h +20 -0
  139. data/modules/emscripten/system/include/libc/bits/syscall.h +696 -0
  140. data/modules/emscripten/system/include/libc/bits/termios.h +160 -0
  141. data/modules/emscripten/system/include/libc/bits/user.h +48 -0
  142. data/modules/emscripten/system/include/libc/byteswap.h +26 -0
  143. data/modules/emscripten/system/include/libc/complex.h +55 -54
  144. data/modules/emscripten/system/include/libc/cpio.h +29 -0
  145. data/modules/emscripten/system/include/libc/crypt.h +20 -0
  146. data/modules/emscripten/system/include/libc/ctype.h +58 -187
  147. data/modules/emscripten/system/include/libc/dirent.h +69 -6
  148. data/modules/emscripten/system/include/libc/dlfcn.h +42 -0
  149. data/modules/emscripten/system/include/libc/elf.h +2555 -0
  150. data/modules/emscripten/system/include/libc/endian.h +80 -1
  151. data/modules/emscripten/system/include/libc/err.h +25 -0
  152. data/modules/emscripten/system/include/libc/errno.h +23 -7
  153. data/modules/emscripten/system/include/libc/fcntl.h +175 -1
  154. data/modules/emscripten/system/include/libc/features.h +32 -0
  155. data/modules/emscripten/system/include/libc/fenv.h +28 -0
  156. data/modules/emscripten/system/include/libc/float.h +34 -0
  157. data/modules/emscripten/system/include/libc/fnmatch.h +24 -50
  158. data/modules/emscripten/system/include/libc/ftw.h +42 -0
  159. data/modules/emscripten/system/include/libc/getopt.h +22 -187
  160. data/modules/emscripten/system/include/libc/glob.h +42 -83
  161. data/modules/emscripten/system/include/libc/grp.h +37 -79
  162. data/modules/emscripten/system/include/libc/iconv.h +18 -56
  163. data/modules/emscripten/system/include/libc/ifaddrs.h +24 -53
  164. data/modules/emscripten/system/include/libc/inttypes.h +208 -271
  165. data/modules/emscripten/system/include/libc/iso646.h +5 -28
  166. data/modules/emscripten/system/include/libc/langinfo.h +88 -316
  167. data/modules/emscripten/system/include/libc/lastlog.h +1 -0
  168. data/modules/emscripten/system/include/libc/libgen.h +5 -13
  169. data/modules/emscripten/system/include/libc/libintl.h +25 -0
  170. data/modules/emscripten/system/include/libc/limits.h +140 -149
  171. data/modules/emscripten/system/include/libc/link.h +54 -0
  172. data/modules/emscripten/system/include/libc/locale.h +72 -70
  173. data/modules/emscripten/system/include/libc/malloc.h +0 -169
  174. data/modules/emscripten/system/include/libc/math.h +393 -573
  175. data/modules/emscripten/system/include/libc/memory.h +1 -0
  176. data/modules/emscripten/system/include/libc/mntent.h +44 -0
  177. data/modules/emscripten/system/include/libc/monetary.h +23 -0
  178. data/modules/emscripten/system/include/libc/mqueue.h +36 -0
  179. data/modules/emscripten/system/include/libc/net/ethernet.h +55 -0
  180. data/modules/emscripten/system/include/libc/net/if.h +135 -0
  181. data/modules/emscripten/system/include/libc/net/if_arp.h +133 -0
  182. data/modules/emscripten/system/include/libc/net/route.h +124 -0
  183. data/modules/emscripten/system/include/libc/netdb.h +161 -0
  184. data/modules/emscripten/system/include/libc/netinet/ether.h +14 -0
  185. data/modules/emscripten/system/include/libc/netinet/icmp6.h +305 -0
  186. data/modules/emscripten/system/include/libc/netinet/if_ether.h +126 -0
  187. data/modules/emscripten/system/include/libc/netinet/in.h +336 -0
  188. data/modules/emscripten/system/include/libc/netinet/in_systm.h +9 -0
  189. data/modules/emscripten/system/include/libc/netinet/ip.h +186 -0
  190. data/modules/emscripten/system/include/libc/netinet/ip6.h +142 -0
  191. data/modules/emscripten/system/include/libc/netinet/ip_icmp.h +192 -0
  192. data/modules/emscripten/system/include/libc/netinet/tcp.h +71 -0
  193. data/modules/emscripten/system/include/libc/netinet/udp.h +35 -0
  194. data/modules/emscripten/system/include/libc/netpacket/packet.h +44 -0
  195. data/modules/emscripten/system/include/libc/nl_types.h +22 -0
  196. data/modules/emscripten/system/include/libc/paths.h +30 -5
  197. data/modules/emscripten/system/include/libc/poll.h +46 -0
  198. data/modules/emscripten/system/include/libc/pthread.h +191 -331
  199. data/modules/emscripten/system/include/libc/pty.h +18 -0
  200. data/modules/emscripten/system/include/libc/pwd.h +33 -62
  201. data/modules/emscripten/system/include/libc/readme.txt +2 -2
  202. data/modules/emscripten/system/include/libc/regex.h +53 -93
  203. data/modules/emscripten/system/include/libc/resolv.h +144 -0
  204. data/modules/emscripten/system/include/libc/sched.h +124 -89
  205. data/modules/emscripten/system/include/libc/search.h +40 -48
  206. data/modules/emscripten/system/include/libc/semaphore.h +35 -0
  207. data/modules/emscripten/system/include/libc/setjmp.h +35 -13
  208. data/modules/emscripten/system/include/libc/shadow.h +44 -0
  209. data/modules/emscripten/system/include/libc/signal.h +245 -20
  210. data/modules/emscripten/system/include/libc/spawn.h +74 -0
  211. data/modules/emscripten/system/include/libc/stdalign.h +15 -0
  212. data/modules/emscripten/system/include/libc/stdarg.h +18 -43
  213. data/modules/emscripten/system/include/libc/stdbool.h +14 -0
  214. data/modules/emscripten/system/include/libc/stddef.h +12 -58
  215. data/modules/emscripten/system/include/libc/stdint.h +82 -458
  216. data/modules/emscripten/system/include/libc/stdio.h +184 -679
  217. data/modules/emscripten/system/include/libc/stdio_ext.h +34 -0
  218. data/modules/emscripten/system/include/libc/stdlib.h +146 -205
  219. data/modules/emscripten/system/include/libc/stdnoreturn.h +5 -0
  220. data/modules/emscripten/system/include/libc/string.h +86 -89
  221. data/modules/emscripten/system/include/libc/strings.h +27 -27
  222. data/modules/emscripten/system/include/libc/stropts.h +139 -0
  223. data/modules/emscripten/system/include/libc/sys/acct.h +75 -0
  224. data/modules/emscripten/system/include/libc/sys/cachectl.h +22 -0
  225. data/modules/emscripten/system/include/libc/sys/dir.h +0 -8
  226. data/modules/emscripten/system/include/libc/sys/epoll.h +67 -0
  227. data/modules/emscripten/system/include/libc/sys/errno.h +2 -190
  228. data/modules/emscripten/system/include/libc/sys/eventfd.h +26 -0
  229. data/modules/emscripten/system/include/libc/sys/fcntl.h +2 -4
  230. data/modules/emscripten/system/include/libc/sys/file.h +20 -1
  231. data/modules/emscripten/system/include/libc/sys/fsuid.h +20 -0
  232. data/modules/emscripten/system/include/libc/sys/inotify.h +57 -0
  233. data/modules/emscripten/system/include/libc/sys/io.h +17 -0
  234. data/modules/emscripten/system/include/libc/sys/ioctl.h +14 -0
  235. data/modules/emscripten/system/include/libc/sys/ipc.h +42 -0
  236. data/modules/emscripten/system/include/{sys/sysctl.h → libc/sys/klog.h} +4 -4
  237. data/modules/emscripten/system/include/libc/sys/mman.h +55 -0
  238. data/modules/emscripten/system/include/libc/sys/mount.h +72 -0
  239. data/modules/emscripten/system/include/libc/sys/msg.h +52 -0
  240. data/modules/emscripten/system/include/libc/sys/mtio.h +188 -0
  241. data/modules/emscripten/system/include/libc/sys/param.h +29 -19
  242. data/modules/emscripten/system/include/libc/sys/personality.h +46 -0
  243. data/modules/emscripten/system/include/libc/sys/poll.h +2 -0
  244. data/modules/emscripten/system/include/libc/sys/prctl.h +101 -0
  245. data/modules/emscripten/system/include/libc/sys/procfs.h +65 -0
  246. data/modules/emscripten/system/include/libc/sys/ptrace.h +96 -0
  247. data/modules/emscripten/system/include/libc/sys/reboot.h +20 -0
  248. data/modules/emscripten/system/include/libc/sys/reg.h +9 -0
  249. data/modules/emscripten/system/include/libc/sys/resource.h +89 -45
  250. data/modules/emscripten/system/include/libc/sys/select.h +42 -0
  251. data/modules/emscripten/system/include/libc/sys/sem.h +82 -0
  252. data/modules/emscripten/system/include/libc/sys/sendfile.h +22 -0
  253. data/modules/emscripten/system/include/libc/sys/shm.h +61 -0
  254. data/modules/emscripten/system/include/libc/sys/signal.h +1 -315
  255. data/modules/emscripten/system/include/libc/sys/signalfd.h +44 -0
  256. data/modules/emscripten/system/include/libc/sys/socket.h +299 -0
  257. data/modules/emscripten/system/include/libc/sys/stat.h +95 -204
  258. data/modules/emscripten/system/include/libc/sys/statfs.h +32 -0
  259. data/modules/emscripten/system/include/libc/sys/statvfs.h +57 -0
  260. data/modules/emscripten/system/include/libc/sys/stropts.h +1 -0
  261. data/modules/emscripten/system/include/libc/sys/swap.h +21 -0
  262. data/modules/emscripten/system/include/libc/sys/syscall.h +6 -0
  263. data/modules/emscripten/system/include/libc/sys/sysctl.h +17 -0
  264. data/modules/emscripten/system/include/libc/sys/sysinfo.h +36 -0
  265. data/modules/emscripten/system/include/libc/sys/syslog.h +1 -0
  266. data/modules/emscripten/system/include/libc/sys/sysmacros.h +15 -0
  267. data/modules/emscripten/system/include/libc/sys/termios.h +2 -280
  268. data/modules/emscripten/system/include/libc/sys/time.h +40 -68
  269. data/modules/emscripten/system/include/libc/sys/timerfd.h +24 -0
  270. data/modules/emscripten/system/include/libc/sys/times.h +14 -16
  271. data/modules/emscripten/system/include/libc/sys/timex.h +98 -0
  272. data/modules/emscripten/system/include/libc/sys/ttydefaults.h +34 -92
  273. data/modules/emscripten/system/include/libc/sys/types.h +87 -481
  274. data/modules/emscripten/system/include/libc/sys/ucontext.h +1 -0
  275. data/modules/emscripten/system/include/libc/sys/uio.h +48 -0
  276. data/modules/emscripten/system/include/libc/sys/un.h +32 -0
  277. data/modules/emscripten/system/include/libc/sys/user.h +16 -0
  278. data/modules/emscripten/system/include/libc/sys/utsname.h +30 -0
  279. data/modules/emscripten/system/include/libc/sys/vfs.h +1 -0
  280. data/modules/emscripten/system/include/libc/sys/wait.h +41 -26
  281. data/modules/emscripten/system/include/libc/sys/xattr.h +30 -0
  282. data/modules/emscripten/system/include/libc/syscall.h +1 -0
  283. data/modules/emscripten/system/include/libc/sysexits.h +21 -0
  284. data/modules/emscripten/system/include/libc/syslog.h +104 -0
  285. data/modules/emscripten/system/include/libc/tar.h +27 -33
  286. data/modules/emscripten/system/include/libc/termios.h +40 -1
  287. data/modules/emscripten/system/include/libc/tgmath.h +270 -0
  288. data/modules/emscripten/system/include/libc/time.h +96 -237
  289. data/modules/emscripten/system/include/libc/ucontext.h +25 -0
  290. data/modules/emscripten/system/include/libc/ulimit.h +17 -0
  291. data/modules/emscripten/system/include/libc/unistd.h +517 -4
  292. data/modules/emscripten/system/include/libc/utime.h +15 -3
  293. data/modules/emscripten/system/include/libc/utmp.h +40 -1
  294. data/modules/emscripten/system/include/libc/utmpx.h +58 -0
  295. data/modules/emscripten/system/include/libc/values.h +39 -0
  296. data/modules/emscripten/system/include/libc/wchar.h +164 -175
  297. data/modules/emscripten/system/include/libc/wctype.h +67 -37
  298. data/modules/emscripten/system/include/libc/wordexp.h +31 -42
  299. data/modules/emscripten/system/include/libcxx/__locale +6 -6
  300. data/modules/emscripten/system/include/libcxx/locale +1 -1
  301. data/modules/emscripten/system/lib/libc/musl/readme.txt +9 -1
  302. data/modules/emscripten/system/lib/libc/musl/src/internal/locale_impl.h +5 -0
  303. data/modules/emscripten/system/lib/libc/musl/src/internal/stdio_impl.h +92 -0
  304. data/modules/emscripten/system/lib/libc/musl/src/locale/big5.h +1085 -0
  305. data/modules/emscripten/system/lib/libc/musl/src/locale/codepages.h +238 -0
  306. data/modules/emscripten/system/lib/libc/musl/src/locale/gb18030.h +1836 -0
  307. data/modules/emscripten/system/lib/libc/musl/src/locale/hkscs.h +390 -0
  308. data/modules/emscripten/system/lib/libc/musl/src/locale/iconv.c +454 -0
  309. data/modules/emscripten/system/lib/libc/musl/src/locale/iswalnum_l.c +6 -0
  310. data/modules/emscripten/system/lib/libc/musl/src/locale/iswalpha_l.c +6 -0
  311. data/modules/emscripten/system/lib/libc/musl/src/locale/iswblank_l.c +6 -0
  312. data/modules/emscripten/system/lib/libc/musl/src/locale/iswcntrl_l.c +6 -0
  313. data/modules/emscripten/system/lib/libc/musl/src/locale/iswctype_l.c +9 -0
  314. data/modules/emscripten/system/lib/libc/musl/src/locale/iswdigit_l.c +6 -0
  315. data/modules/emscripten/system/lib/libc/musl/src/locale/iswgraph_l.c +6 -0
  316. data/modules/emscripten/system/lib/libc/musl/src/locale/iswlower_l.c +6 -0
  317. data/modules/emscripten/system/lib/libc/musl/src/locale/iswprint_l.c +6 -0
  318. data/modules/emscripten/system/lib/libc/musl/src/locale/iswpunct_l.c +6 -0
  319. data/modules/emscripten/system/lib/libc/musl/src/locale/iswspace_l.c +6 -0
  320. data/modules/emscripten/system/lib/libc/musl/src/locale/iswupper_l.c +6 -0
  321. data/modules/emscripten/system/lib/libc/musl/src/locale/iswxdigit_l.c +6 -0
  322. data/modules/emscripten/system/lib/libc/musl/src/locale/jis0208.h +550 -0
  323. data/modules/emscripten/system/lib/libc/musl/src/locale/ksc.h +640 -0
  324. data/modules/emscripten/system/lib/libc/musl/src/locale/legacychars.h +39 -0
  325. data/modules/emscripten/system/lib/libc/musl/src/locale/strfmon.c +101 -0
  326. data/modules/emscripten/system/lib/libc/musl/src/locale/strxfrm.c +18 -0
  327. data/modules/emscripten/system/lib/libc/musl/src/locale/towctrans_l.c +6 -0
  328. data/modules/emscripten/system/lib/libc/musl/src/locale/towlower_l.c +9 -0
  329. data/modules/emscripten/system/lib/libc/musl/src/locale/towupper_l.c +9 -0
  330. data/modules/emscripten/system/lib/libc/musl/src/locale/wcscoll.c +16 -0
  331. data/modules/emscripten/system/lib/libc/musl/src/locale/wcscoll_l.c +6 -0
  332. data/modules/emscripten/system/lib/libc/musl/src/locale/wcsxfrm.c +21 -0
  333. data/modules/emscripten/system/lib/libc/musl/src/locale/wcsxfrm_l.c +6 -0
  334. data/modules/emscripten/system/lib/libc/musl/src/locale/wctrans_l.c +6 -0
  335. data/modules/emscripten/system/lib/libc/musl/src/locale/wctype_l.c +9 -0
  336. data/modules/emscripten/system/lib/libc/musl/src/stdio/fwprintf.c +13 -0
  337. data/modules/emscripten/system/lib/libc/musl/src/stdio/swprintf.c +14 -0
  338. data/modules/emscripten/system/lib/libc/musl/src/stdio/vfwprintf.c +361 -0
  339. data/modules/emscripten/system/lib/libc/musl/src/stdio/vswprintf.c +53 -0
  340. data/modules/emscripten/system/lib/libc/musl/src/stdio/vwprintf.c +7 -0
  341. data/modules/emscripten/system/lib/libc/musl/src/stdio/wprintf.c +13 -0
  342. data/modules/emscripten/system/lib/libcextra.symbols +44 -0
  343. data/modules/emscripten/system/lib/libcxx/exception.cpp +3 -3
  344. data/modules/emscripten/system/lib/libcxx/locale.cpp +12 -12
  345. data/modules/emscripten/system/lib/libcxxabi/src/cxa_new_delete.cpp +1 -1
  346. data/modules/emscripten/tools/asm_module.py +2 -0
  347. data/modules/emscripten/tools/autodebugger.py +3 -1
  348. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +0 -4835
  349. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +0 -6495
  350. data/modules/emscripten/tools/file_packager.py +53 -56
  351. data/modules/emscripten/tools/find_bigfuncs.py +2 -2
  352. data/modules/emscripten/tools/find_bigvars.py +24 -0
  353. data/modules/emscripten/tools/gen_struct_info.py +509 -0
  354. data/modules/emscripten/tools/gen_struct_info.pyc +0 -0
  355. data/modules/emscripten/tools/js-optimizer.js +177 -86
  356. data/modules/emscripten/tools/js_optimizer.py +54 -19
  357. data/modules/emscripten/tools/js_optimizer.pyc +0 -0
  358. data/modules/emscripten/tools/jsrun.py +17 -7
  359. data/modules/emscripten/tools/jsrun.pyc +0 -0
  360. data/modules/emscripten/tools/response_file.py +2 -2
  361. data/modules/emscripten/tools/response_file.pyc +0 -0
  362. data/modules/emscripten/tools/shared.py +257 -123
  363. data/modules/emscripten/tools/shared.pyc +0 -0
  364. data/modules/emscripten/tools/source-maps/sourcemapper.js +37 -6
  365. data/modules/emscripten/tools/tempfiles.py +1 -0
  366. data/modules/emscripten/tools/tempfiles.pyc +0 -0
  367. data/modules/emscripten/tools/test-js-optimizer-asm-minlast-output.js +2 -0
  368. data/modules/emscripten/tools/test-js-optimizer-asm-minlast.js +8 -0
  369. data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +412 -169
  370. data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +88 -0
  371. data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +311 -265
  372. data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +0 -20
  373. data/modules/emscripten/tools/test-js-optimizer-asm-pre.js +0 -21
  374. data/modules/emscripten/tools/test-js-optimizer-asm-regs.js +2 -2
  375. data/modules/emscripten/tools/test-js-optimizer-regs-output.js +8 -8
  376. data/modules/emscripten/tools/test-js-optimizer-regs.js +1 -1
  377. data/modules/emscripten/tools/validate_asmjs.py +82 -0
  378. data/modules/mruby/Rakefile +2 -2
  379. data/modules/mruby/include/mruby/class.h +2 -2
  380. data/modules/mruby/include/mruby/compile.h +12 -4
  381. data/modules/mruby/include/mruby/data.h +8 -3
  382. data/modules/mruby/include/mruby/debug.h +65 -0
  383. data/modules/mruby/include/mruby/dump.h +10 -2
  384. data/modules/mruby/include/mruby/irep.h +1 -0
  385. data/modules/mruby/include/mruby/string.h +2 -1
  386. data/modules/mruby/include/mruby/value.h +20 -13
  387. data/modules/mruby/include/mruby/variable.h +1 -0
  388. data/modules/mruby/include/mruby.h +5 -6
  389. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +6 -4
  390. data/modules/mruby/mrbgems/mruby-math/src/math.c +4 -0
  391. data/modules/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +1 -1
  392. data/modules/mruby/mrbgems/mruby-proc-ext/src/proc.c +1 -1
  393. data/modules/mruby/mrbgems/mruby-random/src/random.c +1 -4
  394. data/modules/mruby/mrbgems/mruby-string-ext/src/string.c +25 -16
  395. data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +4 -0
  396. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +1 -1
  397. data/modules/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +51 -0
  398. data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +22 -0
  399. data/modules/mruby/mrbgems/mruby-time/src/time.c +38 -60
  400. data/modules/mruby/mrblib/class.rb +2 -2
  401. data/modules/mruby/src/backtrace.c +96 -23
  402. data/modules/mruby/src/class.c +43 -41
  403. data/modules/mruby/src/codegen.c +52 -46
  404. data/modules/mruby/src/debug.c +214 -0
  405. data/modules/mruby/src/dump.c +245 -17
  406. data/modules/mruby/src/error.c +14 -6
  407. data/modules/mruby/src/etc.c +17 -10
  408. data/modules/mruby/src/gc.c +9 -9
  409. data/modules/mruby/src/kernel.c +1 -1
  410. data/modules/mruby/src/load.c +137 -1
  411. data/modules/mruby/src/object.c +1 -1
  412. data/modules/mruby/src/parse.y +162 -37
  413. data/modules/mruby/src/state.c +2 -0
  414. data/modules/mruby/src/string.c +28 -19
  415. data/modules/mruby/src/symbol.c +0 -1
  416. data/modules/mruby/src/variable.c +12 -15
  417. data/modules/mruby/src/vm.c +38 -22
  418. data/modules/mruby/tasks/mrbgem_spec.rake +6 -4
  419. data/modules/mruby/tasks/mrbgems_test.rake +9 -9
  420. data/modules/mruby/tasks/mruby_build_gem.rake +9 -0
  421. data/modules/mruby/tasks/toolchains/androideabi.rake +2 -0
  422. data/modules/mruby/test/driver.c +3 -3
  423. data/modules/mruby/test/t/array.rb +13 -0
  424. data/modules/mruby/test/t/class.rb +28 -0
  425. data/modules/mruby/test/t/exception.rb +10 -0
  426. data/modules/mruby/test/t/literals.rb +50 -0
  427. data/modules/mruby/test/t/module.rb +22 -0
  428. data/modules/mruby/test/t/proc.rb +37 -0
  429. data/modules/mruby/test/t/string.rb +20 -21
  430. data/modules/mruby/tools/mrbc/mrbc.c +2 -4
  431. data/scripts/gen_post.rb +1 -0
  432. data/scripts/gen_require.rb +107 -0
  433. data/templates/minimal/Rakefile +20 -0
  434. metadata +210 -88
  435. data/driver/main.c +0 -40
  436. data/modules/emscripten/cmake/Platform/Emscripten_unix.cmake +0 -24
  437. data/modules/emscripten/emlibtool +0 -11
  438. data/modules/emscripten/emlibtool.bat +0 -2
  439. data/modules/emscripten/src/framework.js +0 -257
  440. data/modules/emscripten/system/include/bsd/float.h +0 -91
  441. data/modules/emscripten/system/include/bsd/readme.txt +0 -2
  442. data/modules/emscripten/system/include/bsd/sys/mman.h +0 -180
  443. data/modules/emscripten/system/include/bsd/sys/utsname.h +0 -70
  444. data/modules/emscripten/system/include/dlfcn.h +0 -31
  445. data/modules/emscripten/system/include/err.h +0 -95
  446. data/modules/emscripten/system/include/features.h +0 -3
  447. data/modules/emscripten/system/include/libc/_ansi.h +0 -135
  448. data/modules/emscripten/system/include/libc/_syslist.h +0 -40
  449. data/modules/emscripten/system/include/libc/argz.h +0 -33
  450. data/modules/emscripten/system/include/libc/envlock.h +0 -15
  451. data/modules/emscripten/system/include/libc/envz.h +0 -16
  452. data/modules/emscripten/system/include/libc/fastmath.h +0 -13
  453. data/modules/emscripten/system/include/libc/ieeefp.h +0 -256
  454. data/modules/emscripten/system/include/libc/machine/_default_types.h +0 -121
  455. data/modules/emscripten/system/include/libc/machine/_types.h +0 -8
  456. data/modules/emscripten/system/include/libc/machine/ansi.h +0 -1
  457. data/modules/emscripten/system/include/libc/machine/endian.h +0 -31
  458. data/modules/emscripten/system/include/libc/machine/fastmath.h +0 -100
  459. data/modules/emscripten/system/include/libc/machine/ieeefp.h +0 -376
  460. data/modules/emscripten/system/include/libc/machine/malloc.h +0 -8
  461. data/modules/emscripten/system/include/libc/machine/param.h +0 -1
  462. data/modules/emscripten/system/include/libc/machine/setjmp-dj.h +0 -43
  463. data/modules/emscripten/system/include/libc/machine/setjmp.h +0 -361
  464. data/modules/emscripten/system/include/libc/machine/stdlib.h +0 -8
  465. data/modules/emscripten/system/include/libc/machine/termios.h +0 -1
  466. data/modules/emscripten/system/include/libc/machine/time.h +0 -19
  467. data/modules/emscripten/system/include/libc/machine/types.h +0 -30
  468. data/modules/emscripten/system/include/libc/newlib.h +0 -2
  469. data/modules/emscripten/system/include/libc/process.h +0 -44
  470. data/modules/emscripten/system/include/libc/reent.h +0 -183
  471. data/modules/emscripten/system/include/libc/regdef.h +0 -7
  472. data/modules/emscripten/system/include/libc/sys/_default_fcntl.h +0 -223
  473. data/modules/emscripten/system/include/libc/sys/_types.h +0 -93
  474. data/modules/emscripten/system/include/libc/sys/cdefs.h +0 -123
  475. data/modules/emscripten/system/include/libc/sys/config.h +0 -255
  476. data/modules/emscripten/system/include/libc/sys/custom_file.h +0 -2
  477. data/modules/emscripten/system/include/libc/sys/dirent.h +0 -58
  478. data/modules/emscripten/system/include/libc/sys/features.h +0 -212
  479. data/modules/emscripten/system/include/libc/sys/iconvnls.h +0 -77
  480. data/modules/emscripten/system/include/libc/sys/lock.h +0 -24
  481. data/modules/emscripten/system/include/libc/sys/queue.h +0 -471
  482. data/modules/emscripten/system/include/libc/sys/reent.h +0 -843
  483. data/modules/emscripten/system/include/libc/sys/sched.h +0 -67
  484. data/modules/emscripten/system/include/libc/sys/stdio.h +0 -27
  485. data/modules/emscripten/system/include/libc/sys/string.h +0 -2
  486. data/modules/emscripten/system/include/libc/sys/syslimits.h +0 -65
  487. data/modules/emscripten/system/include/libc/sys/unistd.h +0 -514
  488. data/modules/emscripten/system/include/libc/sys/utime.h +0 -26
  489. data/modules/emscripten/system/include/libc/unctrl.h +0 -46
  490. data/modules/emscripten/system/include/memory.h +0 -10
  491. data/modules/emscripten/system/include/mntent.h +0 -23
  492. data/modules/emscripten/system/include/net/arpa/inet.h +0 -32
  493. data/modules/emscripten/system/include/net/arpa/nameser.h +0 -535
  494. data/modules/emscripten/system/include/net/arpa/nameser_compat.h +0 -187
  495. data/modules/emscripten/system/include/net/if.h +0 -106
  496. data/modules/emscripten/system/include/net/netinet/in.h +0 -230
  497. data/modules/emscripten/system/include/net/netinet/tcp.h +0 -246
  498. data/modules/emscripten/system/include/net/resolv.h +0 -389
  499. data/modules/emscripten/system/include/netdb.h +0 -130
  500. data/modules/emscripten/system/include/nl_types.h +0 -19
  501. data/modules/emscripten/system/include/poll.h +0 -3
  502. data/modules/emscripten/system/include/pty.h +0 -6
  503. data/modules/emscripten/system/include/semaphore.h +0 -31
  504. data/modules/emscripten/system/include/spawn.h +0 -105
  505. data/modules/emscripten/system/include/stdbool.h +0 -16
  506. data/modules/emscripten/system/include/sys/bitypes.h +0 -3
  507. data/modules/emscripten/system/include/sys/io.h +0 -14
  508. data/modules/emscripten/system/include/sys/ioctl.h +0 -78
  509. data/modules/emscripten/system/include/sys/poll.h +0 -31
  510. data/modules/emscripten/system/include/sys/select.h +0 -16
  511. data/modules/emscripten/system/include/sys/sendfile.h +0 -16
  512. data/modules/emscripten/system/include/sys/socket.h +0 -247
  513. data/modules/emscripten/system/include/sys/socketvar.h +0 -3
  514. data/modules/emscripten/system/include/sys/statvfs.h +0 -32
  515. data/modules/emscripten/system/include/sys/uio.h +0 -22
  516. data/modules/emscripten/system/include/sys/un.h +0 -66
  517. data/modules/emscripten/system/include/sysexits.h +0 -108
  518. data/modules/emscripten/system/include/xlocale.h +0 -47
@@ -0,0 +1,39 @@
1
+ 0,1,160,167,168,169,175,176,178,183,184,198,215,216,230,247,248,256,257,258,
2
+ 259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,278,279,
3
+ 280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,
4
+ 299,302,303,304,305,308,309,310,311,312,313,314,315,316,317,318,321,322,323,
5
+ 324,325,326,327,328,330,331,332,333,336,337,338,339,340,341,342,343,344,345,
6
+ 346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,
7
+ 365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,402,
8
+ 416,417,431,432,536,537,538,539,710,711,728,729,731,732,733,768,769,771,777,
9
+ 803,890,900,901,902,904,905,906,908,910,911,912,913,914,915,916,917,918,919,
10
+ 920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,
11
+ 940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,
12
+ 959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1025,1026,
13
+ 1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1038,1039,1040,1041,1042,
14
+ 1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,
15
+ 1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,
16
+ 1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,
17
+ 1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,
18
+ 1103,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1118,1119,
19
+ 1168,1169,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1467,1468,1469,
20
+ 1470,1471,1472,1473,1474,1475,1488,1489,1490,1491,1492,1493,1494,1495,1496,
21
+ 1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,
22
+ 1512,1513,1514,1520,1521,1522,1523,1524,1548,1563,1567,1569,1570,1571,1572,
23
+ 1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,
24
+ 1588,1589,1590,1591,1592,1593,1594,1600,1601,1602,1603,1604,1605,1606,1607,
25
+ 1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1657,1662,1670,1672,
26
+ 1681,1688,1705,1711,1722,1726,1729,1746,3585,3586,3587,3588,3589,3590,3591,
27
+ 3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,
28
+ 3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,
29
+ 3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,
30
+ 3637,3638,3639,3640,3641,3642,3647,3648,3649,3650,3651,3652,3653,3654,3655,
31
+ 3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,
32
+ 3671,3672,3673,3674,3675,7682,7683,7690,7691,7710,7711,7744,7745,7766,7767,
33
+ 7776,7777,7786,7787,7808,7809,7810,7811,7812,7813,7922,7923,8204,8205,8206,
34
+ 8207,8211,8212,8213,8215,8216,8217,8218,8220,8221,8222,8224,8225,8226,8230,
35
+ 8240,8249,8250,8362,8363,8364,8367,8470,8482,8729,8730,8776,8804,8805,8992,
36
+ 8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,
37
+ 9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,
38
+ 9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,
39
+ 9616,9617,9618,9619,9632,
@@ -0,0 +1,101 @@
1
+ #include <stdio.h>
2
+ #include <ctype.h>
3
+ #include <stdarg.h>
4
+ #include <monetary.h>
5
+ #include <errno.h>
6
+ #include <stdarg.h>
7
+
8
+ static ssize_t vstrfmon_l(char *s, size_t n, locale_t loc, const char *fmt, va_list ap)
9
+ {
10
+ size_t l;
11
+ double x;
12
+ int fill, nogrp, negpar, nosym, left, intl;
13
+ int lp, rp, w, fw;
14
+ char *s0=s;
15
+ for (; n && *fmt; ) {
16
+ if (*fmt != '%') {
17
+ literal:
18
+ *s++ = *fmt++;
19
+ n--;
20
+ continue;
21
+ }
22
+ fmt++;
23
+ if (*fmt == '%') goto literal;
24
+
25
+ fill = ' ';
26
+ nogrp = 0;
27
+ negpar = 0;
28
+ nosym = 0;
29
+ left = 0;
30
+ for (; ; fmt++) {
31
+ switch (*fmt) {
32
+ case '=':
33
+ fill = *++fmt;
34
+ continue;
35
+ case '^':
36
+ nogrp = 1;
37
+ continue;
38
+ case '(':
39
+ negpar = 1;
40
+ case '+':
41
+ continue;
42
+ case '!':
43
+ nosym = 1;
44
+ continue;
45
+ case '-':
46
+ left = 1;
47
+ continue;
48
+ }
49
+ break;
50
+ }
51
+
52
+ for (fw=0; isdigit(*fmt); fmt++)
53
+ fw = 10*fw + (*fmt-'0');
54
+ lp = 0;
55
+ rp = 2;
56
+ if (*fmt=='#') for (lp=0, fmt++; isdigit(*fmt); fmt++)
57
+ lp = 10*lp + (*fmt-'0');
58
+ if (*fmt=='.') for (rp=0, fmt++; isdigit(*fmt); fmt++)
59
+ rp = 10*rp + (*fmt-'0');
60
+
61
+ intl = *fmt++ == 'i';
62
+
63
+ w = lp + 1 + rp;
64
+ if (!left && fw>w) w = fw;
65
+
66
+ x = va_arg(ap, double);
67
+ l = snprintf(s, n, "%*.*f", w, rp, x);
68
+ if (l >= n) {
69
+ errno = E2BIG;
70
+ return -1;
71
+ }
72
+ s += l;
73
+ n -= l;
74
+ }
75
+ return s-s0;
76
+ }
77
+
78
+ ssize_t strfmon_l(char *restrict s, size_t n, locale_t loc, const char *restrict fmt, ...)
79
+ {
80
+ va_list ap;
81
+ ssize_t ret;
82
+
83
+ va_start(ap, fmt);
84
+ ret = vstrfmon_l(s, n, loc, fmt, ap);
85
+ va_end(ap);
86
+
87
+ return ret;
88
+ }
89
+
90
+
91
+ ssize_t strfmon(char *restrict s, size_t n, const char *restrict fmt, ...)
92
+ {
93
+ va_list ap;
94
+ ssize_t ret;
95
+
96
+ va_start(ap, fmt);
97
+ ret = vstrfmon_l(s, n, 0, fmt, ap);
98
+ va_end(ap);
99
+
100
+ return ret;
101
+ }
@@ -0,0 +1,18 @@
1
+ #include <string.h>
2
+ #include <locale.h>
3
+ #include "libc.h"
4
+
5
+ /* collate only by code points */
6
+ size_t __strxfrm_l(char *restrict dest, const char *restrict src, size_t n, locale_t loc)
7
+ {
8
+ size_t l = strlen(src);
9
+ if (n > l) strcpy(dest, src);
10
+ return l;
11
+ }
12
+
13
+ size_t strxfrm(char *restrict dest, const char *restrict src, size_t n)
14
+ {
15
+ return __strxfrm_l(dest, src, n, 0);
16
+ }
17
+
18
+ weak_alias(__strxfrm_l, strxfrm_l);
@@ -0,0 +1,6 @@
1
+ #include <wctype.h>
2
+
3
+ wint_t towctrans_l(wint_t c, wctrans_t t, locale_t l)
4
+ {
5
+ return towctrans(c, t);
6
+ }
@@ -0,0 +1,9 @@
1
+ #include <wctype.h>
2
+ #include "libc.h"
3
+
4
+ wint_t towlower_l(wint_t c, locale_t l)
5
+ {
6
+ return towlower(c);
7
+ }
8
+
9
+ weak_alias(towlower_l, __towlower_l);
@@ -0,0 +1,9 @@
1
+ #include <wctype.h>
2
+ #include "libc.h"
3
+
4
+ wint_t towupper_l(wint_t c, locale_t l)
5
+ {
6
+ return towupper(c);
7
+ }
8
+
9
+ weak_alias(towupper_l, __towupper_l);
@@ -0,0 +1,16 @@
1
+ #include <wchar.h>
2
+ #include <locale.h>
3
+ #include "libc.h"
4
+
5
+ /* FIXME: stub */
6
+ int __wcscoll_l(const wchar_t *l, const wchar_t *r, locale_t locale)
7
+ {
8
+ return wcscmp(l, r);
9
+ }
10
+
11
+ int wcscoll(const wchar_t *l, const wchar_t *r)
12
+ {
13
+ return __wcscoll_l(l, r, 0);
14
+ }
15
+
16
+ weak_alias(__wcscoll_l, wcscoll_l);
@@ -0,0 +1,6 @@
1
+ #include <wchar.h>
2
+
3
+ int wcscoll_l(const wchar_t *l, const wchar_t *r, locale_t locale)
4
+ {
5
+ return wcscoll(l, r);
6
+ }
@@ -0,0 +1,21 @@
1
+ #include <wchar.h>
2
+ #include <locale.h>
3
+ #include "libc.h"
4
+
5
+ /* collate only by code points */
6
+ size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t loc)
7
+ {
8
+ size_t l = wcslen(src);
9
+ if (l >= n) {
10
+ wmemcpy(dest, src, n-1);
11
+ dest[n-1] = 0;
12
+ } else wcscpy(dest, src);
13
+ return l;
14
+ }
15
+
16
+ size_t wcsxfrm(wchar_t *restrict dest, const wchar_t *restrict src, size_t n)
17
+ {
18
+ return __wcsxfrm_l(dest, src, n, 0);
19
+ }
20
+
21
+ weak_alias(__wcsxfrm_l, wcsxfrm_l);
@@ -0,0 +1,6 @@
1
+ #include <wchar.h>
2
+
3
+ size_t wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t locale)
4
+ {
5
+ return wcsxfrm(dest, src, n);
6
+ }
@@ -0,0 +1,6 @@
1
+ #include <wctype.h>
2
+
3
+ wctrans_t wctrans_l(const char *s, locale_t l)
4
+ {
5
+ return wctrans(s);
6
+ }
@@ -0,0 +1,9 @@
1
+ #include <wctype.h>
2
+ #include "libc.h"
3
+
4
+ wctype_t wctype_l(const char *s, locale_t l)
5
+ {
6
+ return wctype(s);
7
+ }
8
+
9
+ weak_alias(wctype_l, __wctype_l);
@@ -0,0 +1,13 @@
1
+ #include <stdio.h>
2
+ #include <stdarg.h>
3
+ #include <wchar.h>
4
+
5
+ int fwprintf(FILE *restrict f, const wchar_t *restrict fmt, ...)
6
+ {
7
+ int ret;
8
+ va_list ap;
9
+ va_start(ap, fmt);
10
+ ret = vfwprintf(f, fmt, ap);
11
+ va_end(ap);
12
+ return ret;
13
+ }
@@ -0,0 +1,14 @@
1
+ #include <stdio.h>
2
+ #include <stdarg.h>
3
+ #include <wchar.h>
4
+
5
+ int swprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, ...)
6
+ {
7
+ int ret;
8
+ va_list ap;
9
+ va_start(ap, fmt);
10
+ ret = vswprintf(s, n, fmt, ap);
11
+ va_end(ap);
12
+ return ret;
13
+ }
14
+
@@ -0,0 +1,361 @@
1
+ #include "stdio_impl.h"
2
+ #include <errno.h>
3
+ #include <ctype.h>
4
+ #include <limits.h>
5
+ #include <string.h>
6
+ #include <stdarg.h>
7
+ #include <wchar.h>
8
+ #include <inttypes.h>
9
+
10
+ /* Convenient bit representation for modifier flags, which all fall
11
+ * within 31 codepoints of the space character. */
12
+
13
+ #define ALT_FORM (1U<<'#'-' ')
14
+ #define ZERO_PAD (1U<<'0'-' ')
15
+ #define LEFT_ADJ (1U<<'-'-' ')
16
+ #define PAD_POS (1U<<' '-' ')
17
+ #define MARK_POS (1U<<'+'-' ')
18
+ #define GROUPED (1U<<'\''-' ')
19
+
20
+ #define FLAGMASK (ALT_FORM|ZERO_PAD|LEFT_ADJ|PAD_POS|MARK_POS|GROUPED)
21
+
22
+ #if UINT_MAX == ULONG_MAX
23
+ #define LONG_IS_INT
24
+ #endif
25
+
26
+ #if SIZE_MAX != ULONG_MAX || UINTMAX_MAX != ULLONG_MAX
27
+ #define ODD_TYPES
28
+ #endif
29
+
30
+ /* State machine to accept length modifiers + conversion specifiers.
31
+ * Result is 0 on failure, or an argument type to pop on success. */
32
+
33
+ enum {
34
+ BARE, LPRE, LLPRE, HPRE, HHPRE, BIGLPRE,
35
+ ZTPRE, JPRE,
36
+ STOP,
37
+ PTR, INT, UINT, ULLONG,
38
+ #ifndef LONG_IS_INT
39
+ LONG, ULONG,
40
+ #else
41
+ #define LONG INT
42
+ #define ULONG UINT
43
+ #endif
44
+ SHORT, USHORT, CHAR, UCHAR,
45
+ #ifdef ODD_TYPES
46
+ LLONG, SIZET, IMAX, UMAX, PDIFF, UIPTR,
47
+ #else
48
+ #define LLONG ULLONG
49
+ #define SIZET ULONG
50
+ #define IMAX LLONG
51
+ #define UMAX ULLONG
52
+ #define PDIFF LONG
53
+ #define UIPTR ULONG
54
+ #endif
55
+ DBL, LDBL,
56
+ NOARG,
57
+ MAXSTATE
58
+ };
59
+
60
+ #define S(x) [(x)-'A']
61
+
62
+ static const unsigned char states[]['z'-'A'+1] = {
63
+ { /* 0: bare types */
64
+ S('d') = INT, S('i') = INT,
65
+ S('o') = UINT, S('u') = UINT, S('x') = UINT, S('X') = UINT,
66
+ S('e') = DBL, S('f') = DBL, S('g') = DBL, S('a') = DBL,
67
+ S('E') = DBL, S('F') = DBL, S('G') = DBL, S('A') = DBL,
68
+ S('c') = CHAR, S('C') = INT,
69
+ S('s') = PTR, S('S') = PTR, S('p') = UIPTR, S('n') = PTR,
70
+ S('m') = NOARG,
71
+ S('l') = LPRE, S('h') = HPRE, S('L') = BIGLPRE,
72
+ S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE,
73
+ }, { /* 1: l-prefixed */
74
+ S('d') = LONG, S('i') = LONG,
75
+ S('o') = ULONG, S('u') = ULONG, S('x') = ULONG, S('X') = ULONG,
76
+ S('c') = INT, S('s') = PTR, S('n') = PTR,
77
+ S('l') = LLPRE,
78
+ }, { /* 2: ll-prefixed */
79
+ S('d') = LLONG, S('i') = LLONG,
80
+ S('o') = ULLONG, S('u') = ULLONG,
81
+ S('x') = ULLONG, S('X') = ULLONG,
82
+ S('n') = PTR,
83
+ }, { /* 3: h-prefixed */
84
+ S('d') = SHORT, S('i') = SHORT,
85
+ S('o') = USHORT, S('u') = USHORT,
86
+ S('x') = USHORT, S('X') = USHORT,
87
+ S('n') = PTR,
88
+ S('h') = HHPRE,
89
+ }, { /* 4: hh-prefixed */
90
+ S('d') = CHAR, S('i') = CHAR,
91
+ S('o') = UCHAR, S('u') = UCHAR,
92
+ S('x') = UCHAR, S('X') = UCHAR,
93
+ S('n') = PTR,
94
+ }, { /* 5: L-prefixed */
95
+ S('e') = LDBL, S('f') = LDBL, S('g') = LDBL, S('a') = LDBL,
96
+ S('E') = LDBL, S('F') = LDBL, S('G') = LDBL, S('A') = LDBL,
97
+ S('n') = PTR,
98
+ }, { /* 6: z- or t-prefixed (assumed to be same size) */
99
+ S('d') = PDIFF, S('i') = PDIFF,
100
+ S('o') = SIZET, S('u') = SIZET,
101
+ S('x') = SIZET, S('X') = SIZET,
102
+ S('n') = PTR,
103
+ }, { /* 7: j-prefixed */
104
+ S('d') = IMAX, S('i') = IMAX,
105
+ S('o') = UMAX, S('u') = UMAX,
106
+ S('x') = UMAX, S('X') = UMAX,
107
+ S('n') = PTR,
108
+ }
109
+ };
110
+
111
+ #define OOB(x) ((unsigned)(x)-'A' > 'z'-'A')
112
+
113
+ union arg
114
+ {
115
+ uintmax_t i;
116
+ long double f;
117
+ void *p;
118
+ };
119
+
120
+ static void pop_arg(union arg *arg, int type, va_list *ap)
121
+ {
122
+ /* Give the compiler a hint for optimizing the switch. */
123
+ if ((unsigned)type > MAXSTATE) return;
124
+ switch (type) {
125
+ case PTR: arg->p = va_arg(*ap, void *);
126
+ break; case INT: arg->i = va_arg(*ap, int);
127
+ break; case UINT: arg->i = va_arg(*ap, unsigned int);
128
+ #ifndef LONG_IS_INT
129
+ break; case LONG: arg->i = va_arg(*ap, long);
130
+ break; case ULONG: arg->i = va_arg(*ap, unsigned long);
131
+ #endif
132
+ break; case ULLONG: arg->i = va_arg(*ap, unsigned long long);
133
+ break; case SHORT: arg->i = (short)va_arg(*ap, int);
134
+ break; case USHORT: arg->i = (unsigned short)va_arg(*ap, int);
135
+ break; case CHAR: arg->i = (signed char)va_arg(*ap, int);
136
+ break; case UCHAR: arg->i = (unsigned char)va_arg(*ap, int);
137
+ #ifdef ODD_TYPES
138
+ break; case LLONG: arg->i = va_arg(*ap, long long);
139
+ break; case SIZET: arg->i = va_arg(*ap, size_t);
140
+ break; case IMAX: arg->i = va_arg(*ap, intmax_t);
141
+ break; case UMAX: arg->i = va_arg(*ap, uintmax_t);
142
+ break; case PDIFF: arg->i = va_arg(*ap, ptrdiff_t);
143
+ break; case UIPTR: arg->i = (uintptr_t)va_arg(*ap, void *);
144
+ #endif
145
+ break; case DBL: arg->f = va_arg(*ap, double);
146
+ break; case LDBL: arg->f = va_arg(*ap, long double);
147
+ }
148
+ }
149
+
150
+ static void out(FILE *f, const wchar_t *s, size_t l)
151
+ {
152
+ while (l--) fputwc(*s++, f);
153
+ }
154
+
155
+ static int getint(wchar_t **s) {
156
+ int i;
157
+ for (i=0; iswdigit(**s); (*s)++)
158
+ i = 10*i + (**s-'0');
159
+ return i;
160
+ }
161
+
162
+ static const char sizeprefix['y'-'a'] = {
163
+ ['a'-'a']='L', ['e'-'a']='L', ['f'-'a']='L', ['g'-'a']='L',
164
+ ['d'-'a']='j', ['i'-'a']='j', ['o'-'a']='j', ['u'-'a']='j', ['x'-'a']='j',
165
+ ['p'-'a']='j'
166
+ };
167
+
168
+ static int wprintf_core(FILE *f, const wchar_t *fmt, va_list *ap, union arg *nl_arg, int *nl_type)
169
+ {
170
+ wchar_t *a, *z, *s=(wchar_t *)fmt, *s0;
171
+ unsigned l10n=0, litpct, fl;
172
+ int w, p;
173
+ union arg arg;
174
+ int argpos;
175
+ unsigned st, ps;
176
+ int cnt=0, l=0;
177
+ int i;
178
+ int t;
179
+ char *bs;
180
+ char charfmt[16];
181
+ wchar_t wc;
182
+
183
+ for (;;) {
184
+ /* Update output count, end loop when fmt is exhausted */
185
+ if (cnt >= 0) {
186
+ if (l > INT_MAX - cnt) {
187
+ if (!ferror(f)) errno = EOVERFLOW;
188
+ cnt = -1;
189
+ } else cnt += l;
190
+ }
191
+ if (!*s) break;
192
+
193
+ /* Handle literal text and %% format specifiers */
194
+ for (a=s; *s && *s!='%'; s++);
195
+ litpct = wcsspn(s, L"%")/2; /* Optimize %%%% runs */
196
+ z = s+litpct;
197
+ s += 2*litpct;
198
+ l = z-a;
199
+ if (f) out(f, a, l);
200
+ if (l) continue;
201
+
202
+ if (iswdigit(s[1]) && s[2]=='$') {
203
+ l10n=1;
204
+ argpos = s[1]-'0';
205
+ s+=3;
206
+ } else {
207
+ argpos = -1;
208
+ s++;
209
+ }
210
+
211
+ /* Read modifier flags */
212
+ for (fl=0; (unsigned)*s-' '<32 && (FLAGMASK&(1U<<*s-' ')); s++)
213
+ fl |= 1U<<*s-' ';
214
+
215
+ /* Read field width */
216
+ if (*s=='*') {
217
+ if (iswdigit(s[1]) && s[2]=='$') {
218
+ l10n=1;
219
+ nl_type[s[1]-'0'] = INT;
220
+ w = nl_arg[s[1]-'0'].i;
221
+ s+=3;
222
+ } else if (!l10n) {
223
+ w = f ? va_arg(*ap, int) : 0;
224
+ s++;
225
+ } else return -1;
226
+ if (w<0) fl|=LEFT_ADJ, w=-w;
227
+ } else if ((w=getint(&s))<0) return -1;
228
+
229
+ /* Read precision */
230
+ if (*s=='.' && s[1]=='*') {
231
+ if (isdigit(s[2]) && s[3]=='$') {
232
+ nl_type[s[2]-'0'] = INT;
233
+ p = nl_arg[s[2]-'0'].i;
234
+ s+=4;
235
+ } else if (!l10n) {
236
+ p = f ? va_arg(*ap, int) : 0;
237
+ s+=2;
238
+ } else return -1;
239
+ } else if (*s=='.') {
240
+ s++;
241
+ p = getint(&s);
242
+ } else p = -1;
243
+
244
+ /* Format specifier state machine */
245
+ s0=s;
246
+ st=0;
247
+ do {
248
+ if (OOB(*s)) return -1;
249
+ ps=st;
250
+ st=states[st]S(*s++);
251
+ } while (st-1<STOP);
252
+ if (!st) return -1;
253
+
254
+ /* Check validity of argument type (nl/normal) */
255
+ if (st==NOARG) {
256
+ if (argpos>=0) return -1;
257
+ else if (!f) continue;
258
+ } else {
259
+ if (argpos>=0) nl_type[argpos]=st, arg=nl_arg[argpos];
260
+ else if (f) pop_arg(&arg, st, ap);
261
+ else return 0;
262
+ }
263
+
264
+ if (!f) continue;
265
+ t = s[-1];
266
+ if (ps && (t&15)==3) t&=~32;
267
+
268
+ switch (t) {
269
+ case 'n':
270
+ switch(ps) {
271
+ case BARE: *(int *)arg.p = cnt; break;
272
+ case LPRE: *(long *)arg.p = cnt; break;
273
+ case LLPRE: *(long long *)arg.p = cnt; break;
274
+ case HPRE: *(unsigned short *)arg.p = cnt; break;
275
+ case HHPRE: *(unsigned char *)arg.p = cnt; break;
276
+ case ZTPRE: *(size_t *)arg.p = cnt; break;
277
+ case JPRE: *(uintmax_t *)arg.p = cnt; break;
278
+ }
279
+ continue;
280
+ case 'c':
281
+ fputwc(btowc(arg.i), f);
282
+ l = 1;
283
+ continue;
284
+ case 'C':
285
+ fputwc(arg.i, f);
286
+ l = 1;
287
+ continue;
288
+ case 'S':
289
+ a = arg.p;
290
+ z = wmemchr(a, 0, p);
291
+ if (!z) z=a+p;
292
+ else p=z-a;
293
+ if (w<p) w=p;
294
+ if (!(fl&LEFT_ADJ)) fprintf(f, "%.*s", w-p, "");
295
+ out(f, a, p);
296
+ if ((fl&LEFT_ADJ)) fprintf(f, "%.*s", w-p, "");
297
+ l=w;
298
+ continue;
299
+ case 's':
300
+ bs = arg.p;
301
+ if (p<0) p = INT_MAX;
302
+ for (i=l=0; l<p && (i=mbtowc(&wc, bs, MB_LEN_MAX))>0; bs+=i, l++);
303
+ if (i<0) return -1;
304
+ p=l;
305
+ if (w<p) w=p;
306
+ if (!(fl&LEFT_ADJ)) fprintf(f, "%.*s", w-p, "");
307
+ bs = arg.p;
308
+ while (l--) {
309
+ i=mbtowc(&wc, bs, MB_LEN_MAX);
310
+ bs+=i;
311
+ fputwc(wc, f);
312
+ }
313
+ if ((fl&LEFT_ADJ)) fprintf(f, "%.*s", w-p, "");
314
+ l=w;
315
+ continue;
316
+ }
317
+
318
+ snprintf(charfmt, sizeof charfmt, "%%%s%s%s%s%s*.*%c%c",
319
+ "#"+!(fl & ALT_FORM),
320
+ "+"+!(fl & MARK_POS),
321
+ "-"+!(fl & LEFT_ADJ),
322
+ " "+!(fl & PAD_POS),
323
+ "0"+!(fl & ZERO_PAD),
324
+ sizeprefix[(t|32)-'a'], t);
325
+
326
+ switch (t|32) {
327
+ case 'a': case 'e': case 'f': case 'g':
328
+ l = fprintf(f, charfmt, w, p, arg.f);
329
+ break;
330
+ case 'd': case 'i': case 'o': case 'u': case 'x': case 'p':
331
+ l = fprintf(f, charfmt, w, p, arg.i);
332
+ break;
333
+ }
334
+ }
335
+
336
+ if (f) return cnt;
337
+ if (!l10n) return 0;
338
+
339
+ for (i=1; i<=NL_ARGMAX && nl_type[i]; i++)
340
+ pop_arg(nl_arg+i, nl_type[i], ap);
341
+ for (; i<=NL_ARGMAX && !nl_type[i]; i++);
342
+ if (i<=NL_ARGMAX) return -1;
343
+ return 1;
344
+ }
345
+
346
+ int vfwprintf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap)
347
+ {
348
+ va_list ap2;
349
+ int nl_type[NL_ARGMAX] = {0};
350
+ union arg nl_arg[NL_ARGMAX];
351
+ int ret;
352
+
353
+ va_copy(ap2, ap);
354
+ if (wprintf_core(0, fmt, &ap2, nl_arg, nl_type) < 0) return -1;
355
+
356
+ FLOCK(f);
357
+ ret = wprintf_core(f, fmt, &ap2, nl_arg, nl_type);
358
+ FUNLOCK(f);
359
+ va_end(ap2);
360
+ return ret;
361
+ }