webruby 0.1.2 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/driver/driver.c +12 -0
- data/lib/webruby/config.rb +3 -3
- data/lib/webruby/environment.rb +1 -0
- data/lib/webruby/rake/files.rake +22 -22
- data/lib/webruby/rake/general.rake +0 -1
- data/lib/webruby/utility.rb +2 -0
- data/modules/emscripten/AUTHORS +12 -1
- data/modules/emscripten/cmake/Platform/Emscripten.cmake +152 -15
- data/modules/emscripten/em++ +2 -0
- data/modules/emscripten/em++.bat +1 -1
- data/modules/emscripten/em-config.bat +1 -1
- data/modules/emscripten/emar.bat +1 -1
- data/modules/emscripten/emcc +233 -95
- data/modules/emscripten/emcc.bat +1 -1
- data/modules/emscripten/emconfigure.bat +1 -1
- data/modules/emscripten/emmake.bat +1 -1
- data/modules/emscripten/emranlib.bat +1 -1
- data/modules/emscripten/emscripten.py +221 -217
- data/modules/emscripten/package.json +7 -0
- data/modules/emscripten/src/analyzer.js +1437 -1385
- data/modules/emscripten/src/compiler.js +30 -6
- data/modules/emscripten/src/compiler_phase.html +33 -0
- data/modules/emscripten/src/fastLong.js +6 -6
- data/modules/emscripten/src/headless.js +47 -656
- data/modules/emscripten/src/headlessCanvas.js +618 -0
- data/modules/emscripten/src/intertyper.js +1038 -899
- data/modules/emscripten/src/jsifier.js +818 -714
- data/modules/emscripten/src/library.js +1794 -2968
- data/modules/emscripten/src/library_browser.js +81 -16
- data/modules/emscripten/src/library_egl.js +9 -3
- data/modules/emscripten/src/library_fs.js +1585 -0
- data/modules/emscripten/src/library_gl.js +445 -202
- data/modules/emscripten/src/library_glfw.js +4 -1
- data/modules/emscripten/src/library_glut.js +61 -13
- data/modules/emscripten/src/library_idbfs.js +216 -0
- data/modules/emscripten/src/library_memfs.js +279 -0
- data/modules/emscripten/src/library_nodefs.js +234 -0
- data/modules/emscripten/src/library_openal.js +131 -150
- data/modules/emscripten/src/library_path.js +3 -0
- data/modules/emscripten/src/library_sdl.js +499 -229
- data/modules/emscripten/src/library_sockfs.js +576 -0
- data/modules/emscripten/src/library_tty.js +146 -0
- data/modules/emscripten/src/modules.js +30 -35
- data/modules/emscripten/src/parseTools.js +356 -161
- data/modules/emscripten/src/postamble.js +76 -31
- data/modules/emscripten/src/preamble.js +271 -41
- data/modules/emscripten/src/proxyClient.js +82 -0
- data/modules/emscripten/src/proxyWorker.js +143 -0
- data/modules/emscripten/src/relooper/Relooper.cpp +60 -24
- data/modules/emscripten/src/relooper/Relooper.h +3 -2
- data/modules/emscripten/src/relooper/emscripten/glue.js +20 -10
- data/modules/emscripten/src/relooper/fuzzer.py +19 -10
- data/modules/emscripten/src/relooper/test.cpp +50 -50
- data/modules/emscripten/src/relooper/test.txt +147 -30
- data/modules/emscripten/src/relooper/test2.c +13 -13
- data/modules/emscripten/src/relooper/test2.txt +17 -3
- data/modules/emscripten/src/relooper/test3.c +7 -7
- data/modules/emscripten/src/relooper/test3.txt +36 -7
- data/modules/emscripten/src/relooper/test4.cpp +7 -7
- data/modules/emscripten/src/relooper/test4.txt +28 -7
- data/modules/emscripten/src/relooper/test5.cpp +6 -6
- data/modules/emscripten/src/relooper/test5.txt +34 -10
- data/modules/emscripten/src/relooper/test6.cpp +4 -4
- data/modules/emscripten/src/relooper/test6.txt +17 -3
- data/modules/emscripten/src/relooper/test_dead.cpp +2 -2
- data/modules/emscripten/src/relooper/test_debug.cpp +4 -4
- data/modules/emscripten/src/relooper/test_debug.txt +17 -3
- data/modules/emscripten/src/relooper/test_fuzz1.cpp +9 -9
- data/modules/emscripten/src/relooper/test_fuzz1.txt +45 -5
- data/modules/emscripten/src/relooper/test_fuzz2.cpp +4 -4
- data/modules/emscripten/src/relooper/test_fuzz2.txt +18 -1
- data/modules/emscripten/src/relooper/test_fuzz3.cpp +5 -5
- data/modules/emscripten/src/relooper/test_fuzz3.txt +16 -0
- data/modules/emscripten/src/relooper/test_fuzz4.cpp +5 -5
- data/modules/emscripten/src/relooper/test_fuzz4.txt +25 -3
- data/modules/emscripten/src/relooper/test_fuzz5.cpp +10 -10
- data/modules/emscripten/src/relooper/test_fuzz5.txt +49 -15
- data/modules/emscripten/src/relooper/test_fuzz6.cpp +92 -92
- data/modules/emscripten/src/relooper/test_fuzz6.txt +201 -18
- data/modules/emscripten/src/relooper/test_inf.cpp +184 -184
- data/modules/emscripten/src/relooper/test_inf.txt +1078 -332
- data/modules/emscripten/src/runtime.js +69 -45
- data/modules/emscripten/src/settings.js +48 -919
- data/modules/emscripten/src/shell.html +1 -1
- data/modules/emscripten/src/shell.js +14 -8
- data/modules/emscripten/src/shell_sharedlib.js +18 -1
- data/modules/emscripten/src/simd.js +958 -0
- data/modules/emscripten/src/struct_info.json +1045 -0
- data/modules/emscripten/src/utility.js +11 -0
- data/modules/emscripten/system/bin/sdl-config +13 -0
- data/modules/emscripten/system/include/compat/ctype.h +17 -0
- data/modules/emscripten/system/include/compat/malloc.h +48 -0
- data/modules/emscripten/system/include/compat/math.h +14 -0
- data/modules/emscripten/system/include/compat/netdb.h +22 -0
- data/modules/emscripten/system/include/compat/stdarg.h +16 -0
- data/modules/emscripten/system/include/compat/stdlib.h +16 -0
- data/modules/emscripten/system/include/compat/string.h +17 -0
- data/modules/emscripten/system/include/compat/sys/socketvar.h +14 -0
- data/modules/emscripten/system/include/compat/sys/stat.h +20 -0
- data/modules/emscripten/system/include/{libc → compat}/sys/timeb.h +3 -7
- data/modules/emscripten/system/include/compat/time.h +18 -0
- data/modules/emscripten/system/include/compat/unistd.h +16 -0
- data/modules/emscripten/system/include/compat/xlocale.h +19 -0
- data/modules/emscripten/system/include/emscripten/emscripten.h +48 -7
- data/modules/emscripten/system/include/emscripten/vector.h +6 -0
- data/modules/emscripten/system/include/libc/aio.h +69 -0
- data/modules/emscripten/system/include/libc/alloca.h +13 -13
- data/modules/emscripten/system/include/libc/ar.h +19 -63
- data/modules/emscripten/system/include/libc/arpa/ftp.h +35 -0
- data/modules/emscripten/system/include/libc/arpa/inet.h +36 -0
- data/modules/emscripten/system/include/libc/arpa/nameser.h +467 -0
- data/modules/emscripten/system/include/libc/arpa/nameser_compat.h +2 -0
- data/modules/emscripten/system/include/libc/arpa/telnet.h +251 -0
- data/modules/emscripten/system/include/libc/arpa/tftp.h +31 -0
- data/modules/emscripten/system/include/libc/assert.h +9 -36
- data/modules/emscripten/system/include/libc/bits/alltypes.h +397 -0
- data/modules/emscripten/system/include/libc/bits/endian.h +1 -0
- data/modules/emscripten/system/include/libc/bits/errno.h +134 -0
- data/modules/emscripten/system/include/libc/bits/fcntl.h +38 -0
- data/modules/emscripten/system/include/libc/bits/fenv.h +34 -0
- data/modules/emscripten/system/include/libc/bits/float.h +17 -0
- data/modules/emscripten/system/include/libc/bits/io.h +0 -0
- data/modules/emscripten/system/include/libc/bits/ioctl.h +197 -0
- data/modules/emscripten/system/include/libc/bits/ipc.h +14 -0
- data/modules/emscripten/system/include/libc/bits/limits.h +8 -0
- data/modules/emscripten/system/include/libc/bits/mman.h +62 -0
- data/modules/emscripten/system/include/libc/bits/msg.h +16 -0
- data/modules/emscripten/system/include/libc/bits/posix.h +2 -0
- data/modules/emscripten/system/include/libc/bits/reg.h +19 -0
- data/modules/emscripten/system/include/libc/bits/setjmp.h +1 -0
- data/modules/emscripten/system/include/libc/bits/shm.h +18 -0
- data/modules/emscripten/system/include/libc/bits/signal.h +112 -0
- data/modules/emscripten/system/include/libc/bits/socket.h +17 -0
- data/modules/emscripten/system/include/libc/bits/stat.h +22 -0
- data/modules/emscripten/system/include/libc/bits/statfs.h +7 -0
- data/modules/emscripten/system/include/libc/bits/stdarg.h +4 -0
- data/modules/emscripten/system/include/libc/bits/stdint.h +20 -0
- data/modules/emscripten/system/include/libc/bits/syscall.h +696 -0
- data/modules/emscripten/system/include/libc/bits/termios.h +160 -0
- data/modules/emscripten/system/include/libc/bits/user.h +48 -0
- data/modules/emscripten/system/include/libc/byteswap.h +26 -0
- data/modules/emscripten/system/include/libc/complex.h +55 -54
- data/modules/emscripten/system/include/libc/cpio.h +29 -0
- data/modules/emscripten/system/include/libc/crypt.h +20 -0
- data/modules/emscripten/system/include/libc/ctype.h +58 -187
- data/modules/emscripten/system/include/libc/dirent.h +69 -6
- data/modules/emscripten/system/include/libc/dlfcn.h +42 -0
- data/modules/emscripten/system/include/libc/elf.h +2555 -0
- data/modules/emscripten/system/include/libc/endian.h +80 -1
- data/modules/emscripten/system/include/libc/err.h +25 -0
- data/modules/emscripten/system/include/libc/errno.h +23 -7
- data/modules/emscripten/system/include/libc/fcntl.h +175 -1
- data/modules/emscripten/system/include/libc/features.h +32 -0
- data/modules/emscripten/system/include/libc/fenv.h +28 -0
- data/modules/emscripten/system/include/libc/float.h +34 -0
- data/modules/emscripten/system/include/libc/fnmatch.h +24 -50
- data/modules/emscripten/system/include/libc/ftw.h +42 -0
- data/modules/emscripten/system/include/libc/getopt.h +22 -187
- data/modules/emscripten/system/include/libc/glob.h +42 -83
- data/modules/emscripten/system/include/libc/grp.h +37 -79
- data/modules/emscripten/system/include/libc/iconv.h +18 -56
- data/modules/emscripten/system/include/libc/ifaddrs.h +24 -53
- data/modules/emscripten/system/include/libc/inttypes.h +208 -271
- data/modules/emscripten/system/include/libc/iso646.h +5 -28
- data/modules/emscripten/system/include/libc/langinfo.h +88 -316
- data/modules/emscripten/system/include/libc/lastlog.h +1 -0
- data/modules/emscripten/system/include/libc/libgen.h +5 -13
- data/modules/emscripten/system/include/libc/libintl.h +25 -0
- data/modules/emscripten/system/include/libc/limits.h +140 -149
- data/modules/emscripten/system/include/libc/link.h +54 -0
- data/modules/emscripten/system/include/libc/locale.h +72 -70
- data/modules/emscripten/system/include/libc/malloc.h +0 -169
- data/modules/emscripten/system/include/libc/math.h +393 -573
- data/modules/emscripten/system/include/libc/memory.h +1 -0
- data/modules/emscripten/system/include/libc/mntent.h +44 -0
- data/modules/emscripten/system/include/libc/monetary.h +23 -0
- data/modules/emscripten/system/include/libc/mqueue.h +36 -0
- data/modules/emscripten/system/include/libc/net/ethernet.h +55 -0
- data/modules/emscripten/system/include/libc/net/if.h +135 -0
- data/modules/emscripten/system/include/libc/net/if_arp.h +133 -0
- data/modules/emscripten/system/include/libc/net/route.h +124 -0
- data/modules/emscripten/system/include/libc/netdb.h +161 -0
- data/modules/emscripten/system/include/libc/netinet/ether.h +14 -0
- data/modules/emscripten/system/include/libc/netinet/icmp6.h +305 -0
- data/modules/emscripten/system/include/libc/netinet/if_ether.h +126 -0
- data/modules/emscripten/system/include/libc/netinet/in.h +336 -0
- data/modules/emscripten/system/include/libc/netinet/in_systm.h +9 -0
- data/modules/emscripten/system/include/libc/netinet/ip.h +186 -0
- data/modules/emscripten/system/include/libc/netinet/ip6.h +142 -0
- data/modules/emscripten/system/include/libc/netinet/ip_icmp.h +192 -0
- data/modules/emscripten/system/include/libc/netinet/tcp.h +71 -0
- data/modules/emscripten/system/include/libc/netinet/udp.h +35 -0
- data/modules/emscripten/system/include/libc/netpacket/packet.h +44 -0
- data/modules/emscripten/system/include/libc/nl_types.h +22 -0
- data/modules/emscripten/system/include/libc/paths.h +30 -5
- data/modules/emscripten/system/include/libc/poll.h +46 -0
- data/modules/emscripten/system/include/libc/pthread.h +191 -331
- data/modules/emscripten/system/include/libc/pty.h +18 -0
- data/modules/emscripten/system/include/libc/pwd.h +33 -62
- data/modules/emscripten/system/include/libc/readme.txt +2 -2
- data/modules/emscripten/system/include/libc/regex.h +53 -93
- data/modules/emscripten/system/include/libc/resolv.h +144 -0
- data/modules/emscripten/system/include/libc/sched.h +124 -89
- data/modules/emscripten/system/include/libc/search.h +40 -48
- data/modules/emscripten/system/include/libc/semaphore.h +35 -0
- data/modules/emscripten/system/include/libc/setjmp.h +35 -13
- data/modules/emscripten/system/include/libc/shadow.h +44 -0
- data/modules/emscripten/system/include/libc/signal.h +245 -20
- data/modules/emscripten/system/include/libc/spawn.h +74 -0
- data/modules/emscripten/system/include/libc/stdalign.h +15 -0
- data/modules/emscripten/system/include/libc/stdarg.h +18 -43
- data/modules/emscripten/system/include/libc/stdbool.h +14 -0
- data/modules/emscripten/system/include/libc/stddef.h +12 -58
- data/modules/emscripten/system/include/libc/stdint.h +82 -458
- data/modules/emscripten/system/include/libc/stdio.h +184 -679
- data/modules/emscripten/system/include/libc/stdio_ext.h +34 -0
- data/modules/emscripten/system/include/libc/stdlib.h +146 -205
- data/modules/emscripten/system/include/libc/stdnoreturn.h +5 -0
- data/modules/emscripten/system/include/libc/string.h +86 -89
- data/modules/emscripten/system/include/libc/strings.h +27 -27
- data/modules/emscripten/system/include/libc/stropts.h +139 -0
- data/modules/emscripten/system/include/libc/sys/acct.h +75 -0
- data/modules/emscripten/system/include/libc/sys/cachectl.h +22 -0
- data/modules/emscripten/system/include/libc/sys/dir.h +0 -8
- data/modules/emscripten/system/include/libc/sys/epoll.h +67 -0
- data/modules/emscripten/system/include/libc/sys/errno.h +2 -190
- data/modules/emscripten/system/include/libc/sys/eventfd.h +26 -0
- data/modules/emscripten/system/include/libc/sys/fcntl.h +2 -4
- data/modules/emscripten/system/include/libc/sys/file.h +20 -1
- data/modules/emscripten/system/include/libc/sys/fsuid.h +20 -0
- data/modules/emscripten/system/include/libc/sys/inotify.h +57 -0
- data/modules/emscripten/system/include/libc/sys/io.h +17 -0
- data/modules/emscripten/system/include/libc/sys/ioctl.h +14 -0
- data/modules/emscripten/system/include/libc/sys/ipc.h +42 -0
- data/modules/emscripten/system/include/{sys/sysctl.h → libc/sys/klog.h} +4 -4
- data/modules/emscripten/system/include/libc/sys/mman.h +55 -0
- data/modules/emscripten/system/include/libc/sys/mount.h +72 -0
- data/modules/emscripten/system/include/libc/sys/msg.h +52 -0
- data/modules/emscripten/system/include/libc/sys/mtio.h +188 -0
- data/modules/emscripten/system/include/libc/sys/param.h +29 -19
- data/modules/emscripten/system/include/libc/sys/personality.h +46 -0
- data/modules/emscripten/system/include/libc/sys/poll.h +2 -0
- data/modules/emscripten/system/include/libc/sys/prctl.h +101 -0
- data/modules/emscripten/system/include/libc/sys/procfs.h +65 -0
- data/modules/emscripten/system/include/libc/sys/ptrace.h +96 -0
- data/modules/emscripten/system/include/libc/sys/reboot.h +20 -0
- data/modules/emscripten/system/include/libc/sys/reg.h +9 -0
- data/modules/emscripten/system/include/libc/sys/resource.h +89 -45
- data/modules/emscripten/system/include/libc/sys/select.h +42 -0
- data/modules/emscripten/system/include/libc/sys/sem.h +82 -0
- data/modules/emscripten/system/include/libc/sys/sendfile.h +22 -0
- data/modules/emscripten/system/include/libc/sys/shm.h +61 -0
- data/modules/emscripten/system/include/libc/sys/signal.h +1 -315
- data/modules/emscripten/system/include/libc/sys/signalfd.h +44 -0
- data/modules/emscripten/system/include/libc/sys/socket.h +299 -0
- data/modules/emscripten/system/include/libc/sys/stat.h +95 -204
- data/modules/emscripten/system/include/libc/sys/statfs.h +32 -0
- data/modules/emscripten/system/include/libc/sys/statvfs.h +57 -0
- data/modules/emscripten/system/include/libc/sys/stropts.h +1 -0
- data/modules/emscripten/system/include/libc/sys/swap.h +21 -0
- data/modules/emscripten/system/include/libc/sys/syscall.h +6 -0
- data/modules/emscripten/system/include/libc/sys/sysctl.h +17 -0
- data/modules/emscripten/system/include/libc/sys/sysinfo.h +36 -0
- data/modules/emscripten/system/include/libc/sys/syslog.h +1 -0
- data/modules/emscripten/system/include/libc/sys/sysmacros.h +15 -0
- data/modules/emscripten/system/include/libc/sys/termios.h +2 -280
- data/modules/emscripten/system/include/libc/sys/time.h +40 -68
- data/modules/emscripten/system/include/libc/sys/timerfd.h +24 -0
- data/modules/emscripten/system/include/libc/sys/times.h +14 -16
- data/modules/emscripten/system/include/libc/sys/timex.h +98 -0
- data/modules/emscripten/system/include/libc/sys/ttydefaults.h +34 -92
- data/modules/emscripten/system/include/libc/sys/types.h +87 -481
- data/modules/emscripten/system/include/libc/sys/ucontext.h +1 -0
- data/modules/emscripten/system/include/libc/sys/uio.h +48 -0
- data/modules/emscripten/system/include/libc/sys/un.h +32 -0
- data/modules/emscripten/system/include/libc/sys/user.h +16 -0
- data/modules/emscripten/system/include/libc/sys/utsname.h +30 -0
- data/modules/emscripten/system/include/libc/sys/vfs.h +1 -0
- data/modules/emscripten/system/include/libc/sys/wait.h +41 -26
- data/modules/emscripten/system/include/libc/sys/xattr.h +30 -0
- data/modules/emscripten/system/include/libc/syscall.h +1 -0
- data/modules/emscripten/system/include/libc/sysexits.h +21 -0
- data/modules/emscripten/system/include/libc/syslog.h +104 -0
- data/modules/emscripten/system/include/libc/tar.h +27 -33
- data/modules/emscripten/system/include/libc/termios.h +40 -1
- data/modules/emscripten/system/include/libc/tgmath.h +270 -0
- data/modules/emscripten/system/include/libc/time.h +96 -237
- data/modules/emscripten/system/include/libc/ucontext.h +25 -0
- data/modules/emscripten/system/include/libc/ulimit.h +17 -0
- data/modules/emscripten/system/include/libc/unistd.h +517 -4
- data/modules/emscripten/system/include/libc/utime.h +15 -3
- data/modules/emscripten/system/include/libc/utmp.h +40 -1
- data/modules/emscripten/system/include/libc/utmpx.h +58 -0
- data/modules/emscripten/system/include/libc/values.h +39 -0
- data/modules/emscripten/system/include/libc/wchar.h +164 -175
- data/modules/emscripten/system/include/libc/wctype.h +67 -37
- data/modules/emscripten/system/include/libc/wordexp.h +31 -42
- data/modules/emscripten/system/include/libcxx/__locale +6 -6
- data/modules/emscripten/system/include/libcxx/locale +1 -1
- data/modules/emscripten/system/lib/libc/musl/readme.txt +9 -1
- data/modules/emscripten/system/lib/libc/musl/src/internal/locale_impl.h +5 -0
- data/modules/emscripten/system/lib/libc/musl/src/internal/stdio_impl.h +92 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/big5.h +1085 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/codepages.h +238 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/gb18030.h +1836 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/hkscs.h +390 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iconv.c +454 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswalnum_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswalpha_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswblank_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswcntrl_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswctype_l.c +9 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswdigit_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswgraph_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswlower_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswprint_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswpunct_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswspace_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswupper_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/iswxdigit_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/jis0208.h +550 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/ksc.h +640 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/legacychars.h +39 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/strfmon.c +101 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/strxfrm.c +18 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/towctrans_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/towlower_l.c +9 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/towupper_l.c +9 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/wcscoll.c +16 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/wcscoll_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/wcsxfrm.c +21 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/wcsxfrm_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/wctrans_l.c +6 -0
- data/modules/emscripten/system/lib/libc/musl/src/locale/wctype_l.c +9 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdio/fwprintf.c +13 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdio/swprintf.c +14 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdio/vfwprintf.c +361 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdio/vswprintf.c +53 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdio/vwprintf.c +7 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdio/wprintf.c +13 -0
- data/modules/emscripten/system/lib/libcextra.symbols +44 -0
- data/modules/emscripten/system/lib/libcxx/exception.cpp +3 -3
- data/modules/emscripten/system/lib/libcxx/locale.cpp +12 -12
- data/modules/emscripten/system/lib/libcxxabi/src/cxa_new_delete.cpp +1 -1
- data/modules/emscripten/tools/asm_module.py +2 -0
- data/modules/emscripten/tools/autodebugger.py +3 -1
- data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +0 -4835
- data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +0 -6495
- data/modules/emscripten/tools/file_packager.py +53 -56
- data/modules/emscripten/tools/find_bigfuncs.py +2 -2
- data/modules/emscripten/tools/find_bigvars.py +24 -0
- data/modules/emscripten/tools/gen_struct_info.py +509 -0
- data/modules/emscripten/tools/gen_struct_info.pyc +0 -0
- data/modules/emscripten/tools/js-optimizer.js +177 -86
- data/modules/emscripten/tools/js_optimizer.py +54 -19
- data/modules/emscripten/tools/js_optimizer.pyc +0 -0
- data/modules/emscripten/tools/jsrun.py +17 -7
- data/modules/emscripten/tools/jsrun.pyc +0 -0
- data/modules/emscripten/tools/response_file.py +2 -2
- data/modules/emscripten/tools/response_file.pyc +0 -0
- data/modules/emscripten/tools/shared.py +257 -123
- data/modules/emscripten/tools/shared.pyc +0 -0
- data/modules/emscripten/tools/source-maps/sourcemapper.js +37 -6
- data/modules/emscripten/tools/tempfiles.py +1 -0
- data/modules/emscripten/tools/tempfiles.pyc +0 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-minlast-output.js +2 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-minlast.js +8 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +412 -169
- data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +88 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +311 -265
- data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +0 -20
- data/modules/emscripten/tools/test-js-optimizer-asm-pre.js +0 -21
- data/modules/emscripten/tools/test-js-optimizer-asm-regs.js +2 -2
- data/modules/emscripten/tools/test-js-optimizer-regs-output.js +8 -8
- data/modules/emscripten/tools/test-js-optimizer-regs.js +1 -1
- data/modules/emscripten/tools/validate_asmjs.py +82 -0
- data/modules/mruby/Rakefile +2 -2
- data/modules/mruby/include/mruby/class.h +2 -2
- data/modules/mruby/include/mruby/compile.h +12 -4
- data/modules/mruby/include/mruby/data.h +8 -3
- data/modules/mruby/include/mruby/debug.h +65 -0
- data/modules/mruby/include/mruby/dump.h +10 -2
- data/modules/mruby/include/mruby/irep.h +1 -0
- data/modules/mruby/include/mruby/string.h +2 -1
- data/modules/mruby/include/mruby/value.h +20 -13
- data/modules/mruby/include/mruby/variable.h +1 -0
- data/modules/mruby/include/mruby.h +5 -6
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +6 -4
- data/modules/mruby/mrbgems/mruby-math/src/math.c +4 -0
- data/modules/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +1 -1
- data/modules/mruby/mrbgems/mruby-proc-ext/src/proc.c +1 -1
- data/modules/mruby/mrbgems/mruby-random/src/random.c +1 -4
- data/modules/mruby/mrbgems/mruby-string-ext/src/string.c +25 -16
- data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +4 -0
- data/modules/mruby/mrbgems/mruby-struct/src/struct.c +1 -1
- data/modules/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +51 -0
- data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +22 -0
- data/modules/mruby/mrbgems/mruby-time/src/time.c +38 -60
- data/modules/mruby/mrblib/class.rb +2 -2
- data/modules/mruby/src/backtrace.c +96 -23
- data/modules/mruby/src/class.c +43 -41
- data/modules/mruby/src/codegen.c +52 -46
- data/modules/mruby/src/debug.c +214 -0
- data/modules/mruby/src/dump.c +245 -17
- data/modules/mruby/src/error.c +14 -6
- data/modules/mruby/src/etc.c +17 -10
- data/modules/mruby/src/gc.c +9 -9
- data/modules/mruby/src/kernel.c +1 -1
- data/modules/mruby/src/load.c +137 -1
- data/modules/mruby/src/object.c +1 -1
- data/modules/mruby/src/parse.y +162 -37
- data/modules/mruby/src/state.c +2 -0
- data/modules/mruby/src/string.c +28 -19
- data/modules/mruby/src/symbol.c +0 -1
- data/modules/mruby/src/variable.c +12 -15
- data/modules/mruby/src/vm.c +38 -22
- data/modules/mruby/tasks/mrbgem_spec.rake +6 -4
- data/modules/mruby/tasks/mrbgems_test.rake +9 -9
- data/modules/mruby/tasks/mruby_build_gem.rake +9 -0
- data/modules/mruby/tasks/toolchains/androideabi.rake +2 -0
- data/modules/mruby/test/driver.c +3 -3
- data/modules/mruby/test/t/array.rb +13 -0
- data/modules/mruby/test/t/class.rb +28 -0
- data/modules/mruby/test/t/exception.rb +10 -0
- data/modules/mruby/test/t/literals.rb +50 -0
- data/modules/mruby/test/t/module.rb +22 -0
- data/modules/mruby/test/t/proc.rb +37 -0
- data/modules/mruby/test/t/string.rb +20 -21
- data/modules/mruby/tools/mrbc/mrbc.c +2 -4
- data/scripts/gen_post.rb +1 -0
- data/scripts/gen_require.rb +107 -0
- data/templates/minimal/Rakefile +20 -0
- metadata +210 -88
- data/driver/main.c +0 -40
- data/modules/emscripten/cmake/Platform/Emscripten_unix.cmake +0 -24
- data/modules/emscripten/emlibtool +0 -11
- data/modules/emscripten/emlibtool.bat +0 -2
- data/modules/emscripten/src/framework.js +0 -257
- data/modules/emscripten/system/include/bsd/float.h +0 -91
- data/modules/emscripten/system/include/bsd/readme.txt +0 -2
- data/modules/emscripten/system/include/bsd/sys/mman.h +0 -180
- data/modules/emscripten/system/include/bsd/sys/utsname.h +0 -70
- data/modules/emscripten/system/include/dlfcn.h +0 -31
- data/modules/emscripten/system/include/err.h +0 -95
- data/modules/emscripten/system/include/features.h +0 -3
- data/modules/emscripten/system/include/libc/_ansi.h +0 -135
- data/modules/emscripten/system/include/libc/_syslist.h +0 -40
- data/modules/emscripten/system/include/libc/argz.h +0 -33
- data/modules/emscripten/system/include/libc/envlock.h +0 -15
- data/modules/emscripten/system/include/libc/envz.h +0 -16
- data/modules/emscripten/system/include/libc/fastmath.h +0 -13
- data/modules/emscripten/system/include/libc/ieeefp.h +0 -256
- data/modules/emscripten/system/include/libc/machine/_default_types.h +0 -121
- data/modules/emscripten/system/include/libc/machine/_types.h +0 -8
- data/modules/emscripten/system/include/libc/machine/ansi.h +0 -1
- data/modules/emscripten/system/include/libc/machine/endian.h +0 -31
- data/modules/emscripten/system/include/libc/machine/fastmath.h +0 -100
- data/modules/emscripten/system/include/libc/machine/ieeefp.h +0 -376
- data/modules/emscripten/system/include/libc/machine/malloc.h +0 -8
- data/modules/emscripten/system/include/libc/machine/param.h +0 -1
- data/modules/emscripten/system/include/libc/machine/setjmp-dj.h +0 -43
- data/modules/emscripten/system/include/libc/machine/setjmp.h +0 -361
- data/modules/emscripten/system/include/libc/machine/stdlib.h +0 -8
- data/modules/emscripten/system/include/libc/machine/termios.h +0 -1
- data/modules/emscripten/system/include/libc/machine/time.h +0 -19
- data/modules/emscripten/system/include/libc/machine/types.h +0 -30
- data/modules/emscripten/system/include/libc/newlib.h +0 -2
- data/modules/emscripten/system/include/libc/process.h +0 -44
- data/modules/emscripten/system/include/libc/reent.h +0 -183
- data/modules/emscripten/system/include/libc/regdef.h +0 -7
- data/modules/emscripten/system/include/libc/sys/_default_fcntl.h +0 -223
- data/modules/emscripten/system/include/libc/sys/_types.h +0 -93
- data/modules/emscripten/system/include/libc/sys/cdefs.h +0 -123
- data/modules/emscripten/system/include/libc/sys/config.h +0 -255
- data/modules/emscripten/system/include/libc/sys/custom_file.h +0 -2
- data/modules/emscripten/system/include/libc/sys/dirent.h +0 -58
- data/modules/emscripten/system/include/libc/sys/features.h +0 -212
- data/modules/emscripten/system/include/libc/sys/iconvnls.h +0 -77
- data/modules/emscripten/system/include/libc/sys/lock.h +0 -24
- data/modules/emscripten/system/include/libc/sys/queue.h +0 -471
- data/modules/emscripten/system/include/libc/sys/reent.h +0 -843
- data/modules/emscripten/system/include/libc/sys/sched.h +0 -67
- data/modules/emscripten/system/include/libc/sys/stdio.h +0 -27
- data/modules/emscripten/system/include/libc/sys/string.h +0 -2
- data/modules/emscripten/system/include/libc/sys/syslimits.h +0 -65
- data/modules/emscripten/system/include/libc/sys/unistd.h +0 -514
- data/modules/emscripten/system/include/libc/sys/utime.h +0 -26
- data/modules/emscripten/system/include/libc/unctrl.h +0 -46
- data/modules/emscripten/system/include/memory.h +0 -10
- data/modules/emscripten/system/include/mntent.h +0 -23
- data/modules/emscripten/system/include/net/arpa/inet.h +0 -32
- data/modules/emscripten/system/include/net/arpa/nameser.h +0 -535
- data/modules/emscripten/system/include/net/arpa/nameser_compat.h +0 -187
- data/modules/emscripten/system/include/net/if.h +0 -106
- data/modules/emscripten/system/include/net/netinet/in.h +0 -230
- data/modules/emscripten/system/include/net/netinet/tcp.h +0 -246
- data/modules/emscripten/system/include/net/resolv.h +0 -389
- data/modules/emscripten/system/include/netdb.h +0 -130
- data/modules/emscripten/system/include/nl_types.h +0 -19
- data/modules/emscripten/system/include/poll.h +0 -3
- data/modules/emscripten/system/include/pty.h +0 -6
- data/modules/emscripten/system/include/semaphore.h +0 -31
- data/modules/emscripten/system/include/spawn.h +0 -105
- data/modules/emscripten/system/include/stdbool.h +0 -16
- data/modules/emscripten/system/include/sys/bitypes.h +0 -3
- data/modules/emscripten/system/include/sys/io.h +0 -14
- data/modules/emscripten/system/include/sys/ioctl.h +0 -78
- data/modules/emscripten/system/include/sys/poll.h +0 -31
- data/modules/emscripten/system/include/sys/select.h +0 -16
- data/modules/emscripten/system/include/sys/sendfile.h +0 -16
- data/modules/emscripten/system/include/sys/socket.h +0 -247
- data/modules/emscripten/system/include/sys/socketvar.h +0 -3
- data/modules/emscripten/system/include/sys/statvfs.h +0 -32
- data/modules/emscripten/system/include/sys/uio.h +0 -22
- data/modules/emscripten/system/include/sys/un.h +0 -66
- data/modules/emscripten/system/include/sysexits.h +0 -108
- data/modules/emscripten/system/include/xlocale.h +0 -47
@@ -354,7 +354,10 @@ var LibraryGLFW = {
|
|
354
354
|
throw "Invalid glfwOpenWindow mode.";
|
355
355
|
}
|
356
356
|
|
357
|
-
|
357
|
+
var contextAttributes = {
|
358
|
+
antialias: (GLFW.params[0x00020013] > 1) //GLFW_FSAA_SAMPLES
|
359
|
+
}
|
360
|
+
Module.ctx = Browser.createContext(Module['canvas'], true, true, contextAttributes);
|
358
361
|
return 1; //GL_TRUE
|
359
362
|
},
|
360
363
|
|
@@ -16,6 +16,7 @@ var LibraryGLUT = {
|
|
16
16
|
modifiers: 0,
|
17
17
|
initWindowWidth: 256,
|
18
18
|
initWindowHeight: 256,
|
19
|
+
initDisplayMode: 0x0000 /*GLUT_RGBA*/ | 0x0002 /*GLUT_DOUBLE*/ | 0x0010 /*GLUT_DEPTH*/,
|
19
20
|
// Set when going fullscreen
|
20
21
|
windowX: 0,
|
21
22
|
windowY: 0,
|
@@ -189,12 +190,12 @@ var LibraryGLUT = {
|
|
189
190
|
}
|
190
191
|
},
|
191
192
|
|
192
|
-
onMouseButtonDown: function(event){
|
193
|
+
onMouseButtonDown: function(event) {
|
193
194
|
Browser.calculateMouseEvent(event);
|
194
195
|
|
195
196
|
GLUT.buttons |= (1 << event['button']);
|
196
197
|
|
197
|
-
if(event.target == Module["canvas"] && GLUT.mouseFunc){
|
198
|
+
if (event.target == Module["canvas"] && GLUT.mouseFunc) {
|
198
199
|
try {
|
199
200
|
event.target.setCapture();
|
200
201
|
} catch (e) {}
|
@@ -204,21 +205,40 @@ var LibraryGLUT = {
|
|
204
205
|
}
|
205
206
|
},
|
206
207
|
|
207
|
-
onMouseButtonUp: function(event){
|
208
|
+
onMouseButtonUp: function(event) {
|
208
209
|
Browser.calculateMouseEvent(event);
|
209
210
|
|
210
211
|
GLUT.buttons &= ~(1 << event['button']);
|
211
212
|
|
212
|
-
if(GLUT.mouseFunc) {
|
213
|
+
if (GLUT.mouseFunc) {
|
213
214
|
event.preventDefault();
|
214
215
|
GLUT.saveModifiers(event);
|
215
216
|
Runtime.dynCall('viiii', GLUT.mouseFunc, [event['button'], 1/*GLUT_UP*/, Browser.mouseX, Browser.mouseY]);
|
216
217
|
}
|
217
218
|
},
|
218
219
|
|
220
|
+
onMouseWheel: function(event) {
|
221
|
+
Browser.calculateMouseEvent(event);
|
222
|
+
|
223
|
+
// cross-browser wheel delta
|
224
|
+
var e = window.event || event; // old IE support
|
225
|
+
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
|
226
|
+
|
227
|
+
var button = 3; // wheel up
|
228
|
+
if (delta < 0) {
|
229
|
+
button = 4; // wheel down
|
230
|
+
}
|
231
|
+
|
232
|
+
if (GLUT.mouseFunc) {
|
233
|
+
event.preventDefault();
|
234
|
+
GLUT.saveModifiers(event);
|
235
|
+
Runtime.dynCall('viiii', GLUT.mouseFunc, [button, 0/*GLUT_DOWN*/, Browser.mouseX, Browser.mouseY]);
|
236
|
+
}
|
237
|
+
},
|
238
|
+
|
219
239
|
// TODO add fullscreen API ala:
|
220
240
|
// http://johndyer.name/native-fullscreen-javascript-api-plus-jquery-plugin/
|
221
|
-
onFullScreenEventChange: function(event){
|
241
|
+
onFullScreenEventChange: function(event) {
|
222
242
|
var width;
|
223
243
|
var height;
|
224
244
|
if (document["fullScreen"] || document["mozFullScreen"] || document["webkitIsFullScreen"]) {
|
@@ -267,11 +287,23 @@ var LibraryGLUT = {
|
|
267
287
|
// Ignore arguments
|
268
288
|
GLUT.initTime = Date.now();
|
269
289
|
|
290
|
+
var isTouchDevice = 'ontouchstart' in document.documentElement;
|
291
|
+
|
270
292
|
window.addEventListener("keydown", GLUT.onKeydown, true);
|
271
293
|
window.addEventListener("keyup", GLUT.onKeyup, true);
|
272
|
-
|
273
|
-
|
274
|
-
|
294
|
+
if (isTouchDevice) {
|
295
|
+
window.addEventListener("touchmove", GLUT.onMousemove, true);
|
296
|
+
window.addEventListener("touchstart", GLUT.onMouseButtonDown, true);
|
297
|
+
window.addEventListener("touchend", GLUT.onMouseButtonUp, true);
|
298
|
+
} else {
|
299
|
+
window.addEventListener("mousemove", GLUT.onMousemove, true);
|
300
|
+
window.addEventListener("mousedown", GLUT.onMouseButtonDown, true);
|
301
|
+
window.addEventListener("mouseup", GLUT.onMouseButtonUp, true);
|
302
|
+
// IE9, Chrome, Safari, Opera
|
303
|
+
window.addEventListener("mousewheel", GLUT.onMouseWheel, true);
|
304
|
+
// Firefox
|
305
|
+
window.addEventListener("DOMMouseScroll", GLUT.onMouseWheel, true);
|
306
|
+
}
|
275
307
|
|
276
308
|
Browser.resizeListeners.push(function(width, height) {
|
277
309
|
if (GLUT.reshapeFunc) {
|
@@ -282,9 +314,19 @@ var LibraryGLUT = {
|
|
282
314
|
__ATEXIT__.push({ func: function() {
|
283
315
|
window.removeEventListener("keydown", GLUT.onKeydown, true);
|
284
316
|
window.removeEventListener("keyup", GLUT.onKeyup, true);
|
285
|
-
|
286
|
-
|
287
|
-
|
317
|
+
if (isTouchDevice) {
|
318
|
+
window.removeEventListener("touchmove", GLUT.onMousemove, true);
|
319
|
+
window.removeEventListener("touchstart", GLUT.onMouseButtonDown, true);
|
320
|
+
window.removeEventListener("touchend", GLUT.onMouseButtonUp, true);
|
321
|
+
} else {
|
322
|
+
window.removeEventListener("mousemove", GLUT.onMousemove, true);
|
323
|
+
window.removeEventListener("mousedown", GLUT.onMouseButtonDown, true);
|
324
|
+
window.removeEventListener("mouseup", GLUT.onMouseButtonUp, true);
|
325
|
+
// IE9, Chrome, Safari, Opera
|
326
|
+
window.removeEventListener("mousewheel", GLUT.onMouseWheel, true);
|
327
|
+
// Firefox
|
328
|
+
window.removeEventListener("DOMMouseScroll", GLUT.onMouseWheel, true);
|
329
|
+
}
|
288
330
|
Module["canvas"].width = Module["canvas"].height = 1;
|
289
331
|
} });
|
290
332
|
},
|
@@ -384,7 +426,10 @@ var LibraryGLUT = {
|
|
384
426
|
|
385
427
|
glutCreateWindow__deps: ['$Browser'],
|
386
428
|
glutCreateWindow: function(name) {
|
387
|
-
|
429
|
+
var contextAttributes = {
|
430
|
+
antialias: ((GLUT.initDisplayMode & 0x0080 /*GLUT_MULTISAMPLE*/) != 0)
|
431
|
+
};
|
432
|
+
Module.ctx = Browser.createContext(Module['canvas'], true, true, contextAttributes);
|
388
433
|
return Module.ctx ? 1 /* a new GLUT window ID for the created context */ : 0 /* failure */;
|
389
434
|
},
|
390
435
|
|
@@ -423,7 +468,10 @@ var LibraryGLUT = {
|
|
423
468
|
GLUT.requestFullScreen();
|
424
469
|
},
|
425
470
|
|
426
|
-
glutInitDisplayMode: function(mode) {
|
471
|
+
glutInitDisplayMode: function(mode) {
|
472
|
+
GLUT.initDisplayMode = mode;
|
473
|
+
},
|
474
|
+
|
427
475
|
glutSwapBuffers: function() {},
|
428
476
|
|
429
477
|
glutPostRedisplay: function() {
|
@@ -0,0 +1,216 @@
|
|
1
|
+
mergeInto(LibraryManager.library, {
|
2
|
+
$IDBFS__deps: ['$FS', '$MEMFS', '$PATH'],
|
3
|
+
$IDBFS: {
|
4
|
+
dbs: {},
|
5
|
+
indexedDB: function() {
|
6
|
+
return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
|
7
|
+
},
|
8
|
+
DB_VERSION: 20,
|
9
|
+
DB_STORE_NAME: 'FILE_DATA',
|
10
|
+
// reuse all of the core MEMFS functionality
|
11
|
+
mount: function(mount) {
|
12
|
+
return MEMFS.mount.apply(null, arguments);
|
13
|
+
},
|
14
|
+
// the only custom function IDBFS implements is to handle
|
15
|
+
// synchronizing the wrapped MEMFS with a backing IDB instance
|
16
|
+
syncfs: function(mount, populate, callback) {
|
17
|
+
IDBFS.getLocalSet(mount, function(err, local) {
|
18
|
+
if (err) return callback(err);
|
19
|
+
|
20
|
+
IDBFS.getRemoteSet(mount, function(err, remote) {
|
21
|
+
if (err) return callback(err);
|
22
|
+
|
23
|
+
var src = populate ? remote : local;
|
24
|
+
var dst = populate ? local : remote;
|
25
|
+
|
26
|
+
IDBFS.reconcile(src, dst, callback);
|
27
|
+
});
|
28
|
+
});
|
29
|
+
},
|
30
|
+
reconcile: function(src, dst, callback) {
|
31
|
+
var total = 0;
|
32
|
+
|
33
|
+
var create = {};
|
34
|
+
for (var key in src.files) {
|
35
|
+
if (!src.files.hasOwnProperty(key)) continue;
|
36
|
+
var e = src.files[key];
|
37
|
+
var e2 = dst.files[key];
|
38
|
+
if (!e2 || e.timestamp > e2.timestamp) {
|
39
|
+
create[key] = e;
|
40
|
+
total++;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
var remove = {};
|
45
|
+
for (var key in dst.files) {
|
46
|
+
if (!dst.files.hasOwnProperty(key)) continue;
|
47
|
+
var e = dst.files[key];
|
48
|
+
var e2 = src.files[key];
|
49
|
+
if (!e2) {
|
50
|
+
remove[key] = e;
|
51
|
+
total++;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
if (!total) {
|
56
|
+
// early out
|
57
|
+
return callback(null);
|
58
|
+
}
|
59
|
+
|
60
|
+
var completed = 0;
|
61
|
+
var done = function(err) {
|
62
|
+
if (err) return callback(err);
|
63
|
+
if (++completed >= total) {
|
64
|
+
return callback(null);
|
65
|
+
}
|
66
|
+
};
|
67
|
+
|
68
|
+
// create a single transaction to handle and IDB reads / writes we'll need to do
|
69
|
+
var db = src.type === 'remote' ? src.db : dst.db;
|
70
|
+
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
|
71
|
+
transaction.onerror = function() { callback(this.error); };
|
72
|
+
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
|
73
|
+
|
74
|
+
for (var path in create) {
|
75
|
+
if (!create.hasOwnProperty(path)) continue;
|
76
|
+
var entry = create[path];
|
77
|
+
|
78
|
+
if (dst.type === 'local') {
|
79
|
+
// save file to local
|
80
|
+
try {
|
81
|
+
if (FS.isDir(entry.mode)) {
|
82
|
+
FS.mkdir(path, entry.mode);
|
83
|
+
} else if (FS.isFile(entry.mode)) {
|
84
|
+
var stream = FS.open(path, 'w+', 0666);
|
85
|
+
FS.write(stream, entry.contents, 0, entry.contents.length, 0, true /* canOwn */);
|
86
|
+
FS.close(stream);
|
87
|
+
}
|
88
|
+
done(null);
|
89
|
+
} catch (e) {
|
90
|
+
return done(e);
|
91
|
+
}
|
92
|
+
} else {
|
93
|
+
// save file to IDB
|
94
|
+
var req = store.put(entry, path);
|
95
|
+
req.onsuccess = function() { done(null); };
|
96
|
+
req.onerror = function() { done(this.error); };
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
for (var path in remove) {
|
101
|
+
if (!remove.hasOwnProperty(path)) continue;
|
102
|
+
var entry = remove[path];
|
103
|
+
|
104
|
+
if (dst.type === 'local') {
|
105
|
+
// delete file from local
|
106
|
+
try {
|
107
|
+
if (FS.isDir(entry.mode)) {
|
108
|
+
// TODO recursive delete?
|
109
|
+
FS.rmdir(path);
|
110
|
+
} else if (FS.isFile(entry.mode)) {
|
111
|
+
FS.unlink(path);
|
112
|
+
}
|
113
|
+
done(null);
|
114
|
+
} catch (e) {
|
115
|
+
return done(e);
|
116
|
+
}
|
117
|
+
} else {
|
118
|
+
// delete file from IDB
|
119
|
+
var req = store.delete(path);
|
120
|
+
req.onsuccess = function() { done(null); };
|
121
|
+
req.onerror = function() { done(this.error); };
|
122
|
+
}
|
123
|
+
}
|
124
|
+
},
|
125
|
+
getLocalSet: function(mount, callback) {
|
126
|
+
var files = {};
|
127
|
+
|
128
|
+
var isRealDir = function(p) {
|
129
|
+
return p !== '.' && p !== '..';
|
130
|
+
};
|
131
|
+
var toAbsolute = function(root) {
|
132
|
+
return function(p) {
|
133
|
+
return PATH.join(root, p);
|
134
|
+
}
|
135
|
+
};
|
136
|
+
|
137
|
+
var check = FS.readdir(mount.mountpoint)
|
138
|
+
.filter(isRealDir)
|
139
|
+
.map(toAbsolute(mount.mountpoint));
|
140
|
+
|
141
|
+
while (check.length) {
|
142
|
+
var path = check.pop();
|
143
|
+
var stat, node;
|
144
|
+
|
145
|
+
try {
|
146
|
+
var lookup = FS.lookupPath(path);
|
147
|
+
node = lookup.node;
|
148
|
+
stat = FS.stat(path);
|
149
|
+
} catch (e) {
|
150
|
+
return callback(e);
|
151
|
+
}
|
152
|
+
|
153
|
+
if (FS.isDir(stat.mode)) {
|
154
|
+
check.push.apply(check, FS.readdir(path)
|
155
|
+
.filter(isRealDir)
|
156
|
+
.map(toAbsolute(path)));
|
157
|
+
|
158
|
+
files[path] = { mode: stat.mode, timestamp: stat.mtime };
|
159
|
+
} else if (FS.isFile(stat.mode)) {
|
160
|
+
files[path] = { contents: node.contents, mode: stat.mode, timestamp: stat.mtime };
|
161
|
+
} else {
|
162
|
+
return callback(new Error('node type not supported'));
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
166
|
+
return callback(null, { type: 'local', files: files });
|
167
|
+
},
|
168
|
+
getDB: function(name, callback) {
|
169
|
+
// look it up in the cache
|
170
|
+
var db = IDBFS.dbs[name];
|
171
|
+
if (db) {
|
172
|
+
return callback(null, db);
|
173
|
+
}
|
174
|
+
var req;
|
175
|
+
try {
|
176
|
+
req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
|
177
|
+
} catch (e) {
|
178
|
+
return onerror(e);
|
179
|
+
}
|
180
|
+
req.onupgradeneeded = function() {
|
181
|
+
db = req.result;
|
182
|
+
db.createObjectStore(IDBFS.DB_STORE_NAME);
|
183
|
+
};
|
184
|
+
req.onsuccess = function() {
|
185
|
+
db = req.result;
|
186
|
+
// add to the cache
|
187
|
+
IDBFS.dbs[name] = db;
|
188
|
+
callback(null, db);
|
189
|
+
};
|
190
|
+
req.onerror = function() {
|
191
|
+
callback(this.error);
|
192
|
+
};
|
193
|
+
},
|
194
|
+
getRemoteSet: function(mount, callback) {
|
195
|
+
var files = {};
|
196
|
+
|
197
|
+
IDBFS.getDB(mount.mountpoint, function(err, db) {
|
198
|
+
if (err) return callback(err);
|
199
|
+
|
200
|
+
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
|
201
|
+
transaction.onerror = function() { callback(this.error); };
|
202
|
+
|
203
|
+
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
|
204
|
+
store.openCursor().onsuccess = function(event) {
|
205
|
+
var cursor = event.target.result;
|
206
|
+
if (!cursor) {
|
207
|
+
return callback(null, { type: 'remote', db: db, files: files });
|
208
|
+
}
|
209
|
+
|
210
|
+
files[cursor.key] = cursor.value;
|
211
|
+
cursor.continue();
|
212
|
+
};
|
213
|
+
});
|
214
|
+
}
|
215
|
+
}
|
216
|
+
});
|
@@ -0,0 +1,279 @@
|
|
1
|
+
mergeInto(LibraryManager.library, {
|
2
|
+
$MEMFS__deps: ['$FS'],
|
3
|
+
$MEMFS: {
|
4
|
+
// content modes
|
5
|
+
CONTENT_OWNING: 1, // contains a subarray into the heap, and we own it, without copying (note: someone else needs to free() it, if that is necessary)
|
6
|
+
CONTENT_FLEXIBLE: 2, // has been modified or never set to anything, and is a flexible js array that can grow/shrink
|
7
|
+
CONTENT_FIXED: 3, // contains some fixed-size content written into it, in a typed array
|
8
|
+
mount: function(mount) {
|
9
|
+
return MEMFS.createNode(null, '/', {{{ cDefine('S_IFDIR') }}} | 0777, 0);
|
10
|
+
},
|
11
|
+
createNode: function(parent, name, mode, dev) {
|
12
|
+
if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
|
13
|
+
// no supported
|
14
|
+
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
|
15
|
+
}
|
16
|
+
var node = FS.createNode(parent, name, mode, dev);
|
17
|
+
if (FS.isDir(node.mode)) {
|
18
|
+
node.node_ops = {
|
19
|
+
getattr: MEMFS.node_ops.getattr,
|
20
|
+
setattr: MEMFS.node_ops.setattr,
|
21
|
+
lookup: MEMFS.node_ops.lookup,
|
22
|
+
mknod: MEMFS.node_ops.mknod,
|
23
|
+
mknod: MEMFS.node_ops.mknod,
|
24
|
+
rename: MEMFS.node_ops.rename,
|
25
|
+
unlink: MEMFS.node_ops.unlink,
|
26
|
+
rmdir: MEMFS.node_ops.rmdir,
|
27
|
+
readdir: MEMFS.node_ops.readdir,
|
28
|
+
symlink: MEMFS.node_ops.symlink
|
29
|
+
};
|
30
|
+
node.stream_ops = {
|
31
|
+
llseek: MEMFS.stream_ops.llseek
|
32
|
+
};
|
33
|
+
node.contents = {};
|
34
|
+
} else if (FS.isFile(node.mode)) {
|
35
|
+
node.node_ops = {
|
36
|
+
getattr: MEMFS.node_ops.getattr,
|
37
|
+
setattr: MEMFS.node_ops.setattr
|
38
|
+
};
|
39
|
+
node.stream_ops = {
|
40
|
+
llseek: MEMFS.stream_ops.llseek,
|
41
|
+
read: MEMFS.stream_ops.read,
|
42
|
+
write: MEMFS.stream_ops.write,
|
43
|
+
allocate: MEMFS.stream_ops.allocate,
|
44
|
+
mmap: MEMFS.stream_ops.mmap
|
45
|
+
};
|
46
|
+
node.contents = [];
|
47
|
+
node.contentMode = MEMFS.CONTENT_FLEXIBLE;
|
48
|
+
} else if (FS.isLink(node.mode)) {
|
49
|
+
node.node_ops = {
|
50
|
+
getattr: MEMFS.node_ops.getattr,
|
51
|
+
setattr: MEMFS.node_ops.setattr,
|
52
|
+
readlink: MEMFS.node_ops.readlink
|
53
|
+
};
|
54
|
+
node.stream_ops = {};
|
55
|
+
} else if (FS.isChrdev(node.mode)) {
|
56
|
+
node.node_ops = {
|
57
|
+
getattr: MEMFS.node_ops.getattr,
|
58
|
+
setattr: MEMFS.node_ops.setattr
|
59
|
+
};
|
60
|
+
node.stream_ops = FS.chrdev_stream_ops;
|
61
|
+
}
|
62
|
+
node.timestamp = Date.now();
|
63
|
+
// add the new node to the parent
|
64
|
+
if (parent) {
|
65
|
+
parent.contents[name] = node;
|
66
|
+
}
|
67
|
+
return node;
|
68
|
+
},
|
69
|
+
ensureFlexible: function(node) {
|
70
|
+
if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) {
|
71
|
+
var contents = node.contents;
|
72
|
+
node.contents = Array.prototype.slice.call(contents);
|
73
|
+
node.contentMode = MEMFS.CONTENT_FLEXIBLE;
|
74
|
+
}
|
75
|
+
},
|
76
|
+
node_ops: {
|
77
|
+
getattr: function(node) {
|
78
|
+
var attr = {};
|
79
|
+
// device numbers reuse inode numbers.
|
80
|
+
attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
|
81
|
+
attr.ino = node.id;
|
82
|
+
attr.mode = node.mode;
|
83
|
+
attr.nlink = 1;
|
84
|
+
attr.uid = 0;
|
85
|
+
attr.gid = 0;
|
86
|
+
attr.rdev = node.rdev;
|
87
|
+
if (FS.isDir(node.mode)) {
|
88
|
+
attr.size = 4096;
|
89
|
+
} else if (FS.isFile(node.mode)) {
|
90
|
+
attr.size = node.contents.length;
|
91
|
+
} else if (FS.isLink(node.mode)) {
|
92
|
+
attr.size = node.link.length;
|
93
|
+
} else {
|
94
|
+
attr.size = 0;
|
95
|
+
}
|
96
|
+
attr.atime = new Date(node.timestamp);
|
97
|
+
attr.mtime = new Date(node.timestamp);
|
98
|
+
attr.ctime = new Date(node.timestamp);
|
99
|
+
// NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
|
100
|
+
// but this is not required by the standard.
|
101
|
+
attr.blksize = 4096;
|
102
|
+
attr.blocks = Math.ceil(attr.size / attr.blksize);
|
103
|
+
return attr;
|
104
|
+
},
|
105
|
+
setattr: function(node, attr) {
|
106
|
+
if (attr.mode !== undefined) {
|
107
|
+
node.mode = attr.mode;
|
108
|
+
}
|
109
|
+
if (attr.timestamp !== undefined) {
|
110
|
+
node.timestamp = attr.timestamp;
|
111
|
+
}
|
112
|
+
if (attr.size !== undefined) {
|
113
|
+
MEMFS.ensureFlexible(node);
|
114
|
+
var contents = node.contents;
|
115
|
+
if (attr.size < contents.length) contents.length = attr.size;
|
116
|
+
else while (attr.size > contents.length) contents.push(0);
|
117
|
+
}
|
118
|
+
},
|
119
|
+
lookup: function(parent, name) {
|
120
|
+
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
|
121
|
+
},
|
122
|
+
mknod: function(parent, name, mode, dev) {
|
123
|
+
return MEMFS.createNode(parent, name, mode, dev);
|
124
|
+
},
|
125
|
+
rename: function(old_node, new_dir, new_name) {
|
126
|
+
// if we're overwriting a directory at new_name, make sure it's empty.
|
127
|
+
if (FS.isDir(old_node.mode)) {
|
128
|
+
var new_node;
|
129
|
+
try {
|
130
|
+
new_node = FS.lookupNode(new_dir, new_name);
|
131
|
+
} catch (e) {
|
132
|
+
}
|
133
|
+
if (new_node) {
|
134
|
+
for (var i in new_node.contents) {
|
135
|
+
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
|
136
|
+
}
|
137
|
+
}
|
138
|
+
}
|
139
|
+
// do the internal rewiring
|
140
|
+
delete old_node.parent.contents[old_node.name];
|
141
|
+
old_node.name = new_name;
|
142
|
+
new_dir.contents[new_name] = old_node;
|
143
|
+
old_node.parent = new_dir;
|
144
|
+
},
|
145
|
+
unlink: function(parent, name) {
|
146
|
+
delete parent.contents[name];
|
147
|
+
},
|
148
|
+
rmdir: function(parent, name) {
|
149
|
+
var node = FS.lookupNode(parent, name);
|
150
|
+
for (var i in node.contents) {
|
151
|
+
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
|
152
|
+
}
|
153
|
+
delete parent.contents[name];
|
154
|
+
},
|
155
|
+
readdir: function(node) {
|
156
|
+
var entries = ['.', '..']
|
157
|
+
for (var key in node.contents) {
|
158
|
+
if (!node.contents.hasOwnProperty(key)) {
|
159
|
+
continue;
|
160
|
+
}
|
161
|
+
entries.push(key);
|
162
|
+
}
|
163
|
+
return entries;
|
164
|
+
},
|
165
|
+
symlink: function(parent, newname, oldpath) {
|
166
|
+
var node = MEMFS.createNode(parent, newname, 0777 | {{{ cDefine('S_IFLNK') }}}, 0);
|
167
|
+
node.link = oldpath;
|
168
|
+
return node;
|
169
|
+
},
|
170
|
+
readlink: function(node) {
|
171
|
+
if (!FS.isLink(node.mode)) {
|
172
|
+
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
|
173
|
+
}
|
174
|
+
return node.link;
|
175
|
+
},
|
176
|
+
},
|
177
|
+
stream_ops: {
|
178
|
+
read: function(stream, buffer, offset, length, position) {
|
179
|
+
var contents = stream.node.contents;
|
180
|
+
if (position >= contents.length)
|
181
|
+
return 0;
|
182
|
+
var size = Math.min(contents.length - position, length);
|
183
|
+
assert(size >= 0);
|
184
|
+
#if USE_TYPED_ARRAYS == 2
|
185
|
+
if (size > 8 && contents.subarray) { // non-trivial, and typed array
|
186
|
+
buffer.set(contents.subarray(position, position + size), offset);
|
187
|
+
} else
|
188
|
+
#endif
|
189
|
+
{
|
190
|
+
for (var i = 0; i < size; i++) {
|
191
|
+
buffer[offset + i] = contents[position + i];
|
192
|
+
}
|
193
|
+
}
|
194
|
+
return size;
|
195
|
+
},
|
196
|
+
write: function(stream, buffer, offset, length, position, canOwn) {
|
197
|
+
var node = stream.node;
|
198
|
+
node.timestamp = Date.now();
|
199
|
+
var contents = node.contents;
|
200
|
+
#if USE_TYPED_ARRAYS == 2
|
201
|
+
if (length && contents.length === 0 && position === 0 && buffer.subarray) {
|
202
|
+
// just replace it with the new data
|
203
|
+
assert(buffer.length);
|
204
|
+
if (canOwn && buffer.buffer === HEAP8.buffer && offset === 0) {
|
205
|
+
node.contents = buffer; // this is a subarray of the heap, and we can own it
|
206
|
+
node.contentMode = MEMFS.CONTENT_OWNING;
|
207
|
+
} else {
|
208
|
+
node.contents = new Uint8Array(buffer.subarray(offset, offset+length));
|
209
|
+
node.contentMode = MEMFS.CONTENT_FIXED;
|
210
|
+
}
|
211
|
+
return length;
|
212
|
+
}
|
213
|
+
#endif
|
214
|
+
MEMFS.ensureFlexible(node);
|
215
|
+
var contents = node.contents;
|
216
|
+
while (contents.length < position) contents.push(0);
|
217
|
+
for (var i = 0; i < length; i++) {
|
218
|
+
contents[position + i] = buffer[offset + i];
|
219
|
+
}
|
220
|
+
return length;
|
221
|
+
},
|
222
|
+
llseek: function(stream, offset, whence) {
|
223
|
+
var position = offset;
|
224
|
+
if (whence === 1) { // SEEK_CUR.
|
225
|
+
position += stream.position;
|
226
|
+
} else if (whence === 2) { // SEEK_END.
|
227
|
+
if (FS.isFile(stream.node.mode)) {
|
228
|
+
position += stream.node.contents.length;
|
229
|
+
}
|
230
|
+
}
|
231
|
+
if (position < 0) {
|
232
|
+
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
|
233
|
+
}
|
234
|
+
stream.ungotten = [];
|
235
|
+
stream.position = position;
|
236
|
+
return position;
|
237
|
+
},
|
238
|
+
allocate: function(stream, offset, length) {
|
239
|
+
MEMFS.ensureFlexible(stream.node);
|
240
|
+
var contents = stream.node.contents;
|
241
|
+
var limit = offset + length;
|
242
|
+
while (limit > contents.length) contents.push(0);
|
243
|
+
},
|
244
|
+
mmap: function(stream, buffer, offset, length, position, prot, flags) {
|
245
|
+
if (!FS.isFile(stream.node.mode)) {
|
246
|
+
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
|
247
|
+
}
|
248
|
+
var ptr;
|
249
|
+
var allocated;
|
250
|
+
var contents = stream.node.contents;
|
251
|
+
// Only make a new copy when MAP_PRIVATE is specified.
|
252
|
+
if ( !(flags & {{{ cDefine('MAP_PRIVATE') }}}) &&
|
253
|
+
(contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
|
254
|
+
// We can't emulate MAP_SHARED when the file is not backed by the buffer
|
255
|
+
// we're mapping to (e.g. the HEAP buffer).
|
256
|
+
allocated = false;
|
257
|
+
ptr = contents.byteOffset;
|
258
|
+
} else {
|
259
|
+
// Try to avoid unnecessary slices.
|
260
|
+
if (position > 0 || position + length < contents.length) {
|
261
|
+
if (contents.subarray) {
|
262
|
+
contents = contents.subarray(position, position + length);
|
263
|
+
} else {
|
264
|
+
contents = Array.prototype.slice.call(contents, position, position + length);
|
265
|
+
}
|
266
|
+
}
|
267
|
+
allocated = true;
|
268
|
+
ptr = _malloc(length);
|
269
|
+
if (!ptr) {
|
270
|
+
throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
|
271
|
+
}
|
272
|
+
buffer.set(contents, ptr);
|
273
|
+
}
|
274
|
+
return { ptr: ptr, allocated: allocated };
|
275
|
+
},
|
276
|
+
}
|
277
|
+
}
|
278
|
+
});
|
279
|
+
|