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
@@ -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,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,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,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
|
+
}
|