webruby 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/webruby/config.rb +4 -9
- data/lib/webruby/rake/files.rake +2 -2
- data/modules/emscripten/AUTHORS +9 -1
- data/modules/emscripten/CONTRIBUTING.markdown +5 -0
- data/modules/emscripten/ChangeLog +435 -0
- data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
- data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
- data/modules/emscripten/em++ +0 -2
- data/modules/emscripten/emcc +92 -32
- data/modules/emscripten/emlink.py +16 -13
- data/modules/emscripten/emmake +1 -1
- data/modules/emscripten/emrun +918 -0
- data/modules/emscripten/emrun.bat +2 -0
- data/modules/emscripten/emscripten.py +545 -20
- data/modules/emscripten/src/analyzer.js +6 -1
- data/modules/emscripten/src/compiler.js +25 -16
- data/modules/emscripten/src/emrun_postjs.js +20 -0
- data/modules/emscripten/{tests → src}/hello_world.js +0 -0
- data/modules/emscripten/src/intertyper.js +45 -16
- data/modules/emscripten/src/jsifier.js +78 -48
- data/modules/emscripten/src/library.js +381 -96
- data/modules/emscripten/src/library_browser.js +50 -53
- data/modules/emscripten/src/library_egl.js +66 -24
- data/modules/emscripten/src/library_fs.js +122 -90
- data/modules/emscripten/src/library_gl.js +739 -353
- data/modules/emscripten/src/library_glfw.js +9 -3
- data/modules/emscripten/src/library_glut.js +10 -5
- data/modules/emscripten/src/library_idbfs.js +14 -14
- data/modules/emscripten/src/library_memfs.js +65 -41
- data/modules/emscripten/src/library_nodefs.js +61 -9
- data/modules/emscripten/src/library_openal.js +4 -4
- data/modules/emscripten/src/library_path.js +9 -13
- data/modules/emscripten/src/library_sdl.js +301 -64
- data/modules/emscripten/src/library_sockfs.js +7 -5
- data/modules/emscripten/src/modules.js +62 -22
- data/modules/emscripten/src/parseTools.js +135 -102
- data/modules/emscripten/src/postamble.js +3 -4
- data/modules/emscripten/src/preamble.js +49 -29
- data/modules/emscripten/src/proxyClient.js +1 -1
- data/modules/emscripten/src/proxyWorker.js +10 -10
- data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
- data/modules/emscripten/src/runtime.js +32 -8
- data/modules/emscripten/src/settings.js +25 -8
- data/modules/emscripten/src/shell.html +6 -3
- data/modules/emscripten/src/shell.js +13 -11
- data/modules/emscripten/src/simd.js +602 -432
- data/modules/emscripten/src/struct_info.json +22 -2
- data/modules/emscripten/src/utility.js +32 -17
- data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
- data/modules/emscripten/system/include/compat/ctype.h +17 -0
- data/modules/emscripten/system/include/compat/wchar.h +23 -0
- data/modules/emscripten/system/include/compat/wctype.h +23 -0
- data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
- data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
- data/modules/emscripten/system/include/emscripten/vector.h +29 -1
- data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
- data/modules/emscripten/system/include/libcxx/__config +95 -17
- data/modules/emscripten/system/include/libcxx/__debug +25 -4
- data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
- data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
- data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
- data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
- data/modules/emscripten/system/include/libcxx/__locale +21 -19
- data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
- data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
- data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
- data/modules/emscripten/system/include/libcxx/__tree +35 -26
- data/modules/emscripten/system/include/libcxx/__tuple +15 -15
- data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
- data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
- data/modules/emscripten/system/include/libcxx/algorithm +121 -110
- data/modules/emscripten/system/include/libcxx/array +15 -15
- data/modules/emscripten/system/include/libcxx/bitset +4 -4
- data/modules/emscripten/system/include/libcxx/chrono +51 -17
- data/modules/emscripten/system/include/libcxx/cmath +25 -23
- data/modules/emscripten/system/include/libcxx/codecvt +21 -18
- data/modules/emscripten/system/include/libcxx/complex +48 -7
- data/modules/emscripten/system/include/libcxx/cstddef +1 -1
- data/modules/emscripten/system/include/libcxx/cstdio +8 -1
- data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
- data/modules/emscripten/system/include/libcxx/cwchar +1 -1
- data/modules/emscripten/system/include/libcxx/deque +26 -12
- data/modules/emscripten/system/include/libcxx/dynarray +311 -0
- data/modules/emscripten/system/include/libcxx/exception +4 -4
- data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
- data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
- data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
- data/modules/emscripten/system/include/libcxx/forward_list +33 -7
- data/modules/emscripten/system/include/libcxx/fstream +4 -4
- data/modules/emscripten/system/include/libcxx/functional +200 -170
- data/modules/emscripten/system/include/libcxx/future +83 -39
- data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
- data/modules/emscripten/system/include/libcxx/iomanip +147 -0
- data/modules/emscripten/system/include/libcxx/ios +24 -16
- data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
- data/modules/emscripten/system/include/libcxx/istream +13 -8
- data/modules/emscripten/system/include/libcxx/iterator +108 -417
- data/modules/emscripten/system/include/libcxx/limits +8 -4
- data/modules/emscripten/system/include/libcxx/list +28 -8
- data/modules/emscripten/system/include/libcxx/locale +153 -390
- data/modules/emscripten/system/include/libcxx/map +280 -100
- data/modules/emscripten/system/include/libcxx/memory +49 -97
- data/modules/emscripten/system/include/libcxx/mutex +2 -2
- data/modules/emscripten/system/include/libcxx/new +43 -14
- data/modules/emscripten/system/include/libcxx/numeric +2 -2
- data/modules/emscripten/system/include/libcxx/optional +697 -0
- data/modules/emscripten/system/include/libcxx/ostream +17 -8
- data/modules/emscripten/system/include/libcxx/queue +5 -5
- data/modules/emscripten/system/include/libcxx/random +53 -51
- data/modules/emscripten/system/include/libcxx/ratio +11 -11
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +23 -20
- data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
- data/modules/emscripten/system/include/libcxx/set +166 -2
- data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
- data/modules/emscripten/system/include/libcxx/sstream +4 -4
- data/modules/emscripten/system/include/libcxx/stack +3 -3
- data/modules/emscripten/system/include/libcxx/streambuf +5 -5
- data/modules/emscripten/system/include/libcxx/string +372 -324
- data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
- data/modules/emscripten/system/include/libcxx/system_error +14 -8
- data/modules/emscripten/system/include/libcxx/thread +7 -8
- data/modules/emscripten/system/include/libcxx/tuple +29 -88
- data/modules/emscripten/system/include/libcxx/type_traits +253 -209
- data/modules/emscripten/system/include/libcxx/typeindex +3 -3
- data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
- data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
- data/modules/emscripten/system/include/libcxx/utility +20 -20
- data/modules/emscripten/system/include/libcxx/valarray +23 -23
- data/modules/emscripten/system/include/libcxx/vector +114 -91
- data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
- data/modules/emscripten/system/lib/libcextra.symbols +7 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
- data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
- data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
- data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
- data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
- data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
- data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
- data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
- data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
- data/modules/emscripten/system/lib/libcxx/symbols +187 -168
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
- data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
- data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
- data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
- data/modules/emscripten/tools/cache.py +5 -7
- data/modules/emscripten/tools/cache.pyc +0 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
- data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
- data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
- data/modules/emscripten/tools/file_packager.py +93 -50
- data/modules/emscripten/tools/js-optimizer.js +98 -48
- data/modules/emscripten/tools/js_optimizer.py +4 -4
- data/modules/emscripten/tools/js_optimizer.pyc +0 -0
- data/modules/emscripten/tools/jsrun.py +1 -1
- data/modules/emscripten/tools/jsrun.pyc +0 -0
- data/modules/emscripten/tools/response_file.py +6 -0
- data/modules/emscripten/tools/response_file.pyc +0 -0
- data/modules/emscripten/tools/settings_template_readonly.py +2 -0
- data/modules/emscripten/tools/shared.py +88 -34
- data/modules/emscripten/tools/shared.pyc +0 -0
- data/modules/emscripten/tools/split.py +21 -13
- data/modules/mruby/build_config.rb +7 -1
- data/modules/mruby/doc/compile/README.md +5 -9
- data/modules/mruby/include/mrbconf.h +5 -2
- data/modules/mruby/include/mruby/array.h +1 -0
- data/modules/mruby/include/mruby/compile.h +2 -4
- data/modules/mruby/include/mruby/dump.h +7 -16
- data/modules/mruby/include/mruby/hash.h +1 -1
- data/modules/mruby/include/mruby/irep.h +14 -2
- data/modules/mruby/include/mruby/khash.h +8 -7
- data/modules/mruby/include/mruby/string.h +1 -0
- data/modules/mruby/include/mruby/value.h +5 -2
- data/modules/mruby/include/mruby.h +12 -13
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
- data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
- data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
- data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
- data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
- data/modules/mruby/mrblib/numeric.rb +99 -33
- data/modules/mruby/src/array.c +11 -4
- data/modules/mruby/src/backtrace.c +2 -2
- data/modules/mruby/src/class.c +49 -30
- data/modules/mruby/src/codegen.c +131 -79
- data/modules/mruby/src/debug.c +1 -1
- data/modules/mruby/src/dump.c +213 -163
- data/modules/mruby/src/error.c +17 -17
- data/modules/mruby/src/error.h +1 -1
- data/modules/mruby/src/etc.c +10 -0
- data/modules/mruby/src/gc.c +35 -17
- data/modules/mruby/src/hash.c +5 -5
- data/modules/mruby/src/kernel.c +36 -14
- data/modules/mruby/src/load.c +238 -296
- data/modules/mruby/src/numeric.c +18 -98
- data/modules/mruby/src/object.c +3 -5
- data/modules/mruby/src/parse.y +63 -56
- data/modules/mruby/src/proc.c +8 -5
- data/modules/mruby/src/re.h +0 -1
- data/modules/mruby/src/state.c +65 -27
- data/modules/mruby/src/string.c +3 -31
- data/modules/mruby/src/symbol.c +3 -3
- data/modules/mruby/src/variable.c +12 -5
- data/modules/mruby/src/vm.c +90 -72
- data/modules/mruby/tasks/mruby_build.rake +10 -1
- data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
- data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
- data/modules/mruby/test/driver.c +3 -3
- data/modules/mruby/test/t/array.rb +5 -5
- data/modules/mruby/test/t/class.rb +14 -1
- data/modules/mruby/test/t/kernel.rb +4 -0
- data/modules/mruby/test/t/module.rb +4 -4
- data/modules/mruby/test/t/nameerror.rb +1 -1
- data/modules/mruby/tools/mrbc/mrbc.c +23 -17
- data/modules/mruby/travis_config.rb +10 -1
- metadata +28 -5
- data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
@@ -120,7 +120,6 @@ var LibraryGLFW = {
|
|
120
120
|
if (event.charCode) {
|
121
121
|
var char = GLFW.getUnicodeChar(event.charCode);
|
122
122
|
if (char !== null && GLFW.charFunc) {
|
123
|
-
event.preventDefault();
|
124
123
|
Runtime.dynCall('vii', GLFW.charFunc, [event.charCode, 1]);
|
125
124
|
}
|
126
125
|
}
|
@@ -130,13 +129,18 @@ var LibraryGLFW = {
|
|
130
129
|
var key = GLFW.DOMToGLFWKeyCode(event.keyCode);
|
131
130
|
if (key && GLFW.keyFunc) {
|
132
131
|
GLFW.keys[key] = status;
|
133
|
-
event.preventDefault();
|
134
132
|
Runtime.dynCall('vii', GLFW.keyFunc, [key, status]);
|
135
133
|
}
|
136
134
|
},
|
137
135
|
|
138
136
|
onKeydown: function(event) {
|
139
137
|
GLFW.onKeyChanged(event, 1);//GLFW_PRESS
|
138
|
+
// This logic comes directly from the sdl implementation. We cannot
|
139
|
+
// call preventDefault on all keydown events otherwise onKeyPress will
|
140
|
+
// not get called
|
141
|
+
if (event.keyCode === 8 /* backspace */ || event.keyCode === 9 /* tab */) {
|
142
|
+
event.preventDefault();
|
143
|
+
}
|
140
144
|
},
|
141
145
|
|
142
146
|
onKeyup: function(event) {
|
@@ -355,7 +359,9 @@ var LibraryGLFW = {
|
|
355
359
|
}
|
356
360
|
|
357
361
|
var contextAttributes = {
|
358
|
-
antialias: (GLFW.params[0x00020013] > 1) //GLFW_FSAA_SAMPLES
|
362
|
+
antialias: (GLFW.params[0x00020013] > 1), //GLFW_FSAA_SAMPLES
|
363
|
+
depth: (GLFW.params[0x00020009] > 0), //GLFW_DEPTH_BITS
|
364
|
+
stencil: (GLFW.params[0x0002000A] > 0) //GLFW_STENCIL_BITS
|
359
365
|
}
|
360
366
|
Module.ctx = Browser.createContext(Module['canvas'], true, true, contextAttributes);
|
361
367
|
return 1; //GL_TRUE
|
@@ -59,6 +59,9 @@ var LibraryGLUT = {
|
|
59
59
|
getSpecialKey: function(keycode) {
|
60
60
|
var key = null;
|
61
61
|
switch (keycode) {
|
62
|
+
case 8: key = 120 /* backspace */; break;
|
63
|
+
case 46: key = 111 /* delete */; break;
|
64
|
+
|
62
65
|
case 0x70 /*DOM_VK_F1*/: key = 1 /* GLUT_KEY_F1 */; break;
|
63
66
|
case 0x71 /*DOM_VK_F2*/: key = 2 /* GLUT_KEY_F2 */; break;
|
64
67
|
case 0x72 /*DOM_VK_F3*/: key = 3 /* GLUT_KEY_F3 */; break;
|
@@ -228,14 +231,14 @@ var LibraryGLUT = {
|
|
228
231
|
if (delta < 0) {
|
229
232
|
button = 4; // wheel down
|
230
233
|
}
|
231
|
-
|
234
|
+
|
232
235
|
if (GLUT.mouseFunc) {
|
233
236
|
event.preventDefault();
|
234
237
|
GLUT.saveModifiers(event);
|
235
238
|
Runtime.dynCall('viiii', GLUT.mouseFunc, [button, 0/*GLUT_DOWN*/, Browser.mouseX, Browser.mouseY]);
|
236
239
|
}
|
237
240
|
},
|
238
|
-
|
241
|
+
|
239
242
|
// TODO add fullscreen API ala:
|
240
243
|
// http://johndyer.name/native-fullscreen-javascript-api-plus-jquery-plugin/
|
241
244
|
onFullScreenEventChange: function(event) {
|
@@ -304,7 +307,7 @@ var LibraryGLUT = {
|
|
304
307
|
// Firefox
|
305
308
|
window.addEventListener("DOMMouseScroll", GLUT.onMouseWheel, true);
|
306
309
|
}
|
307
|
-
|
310
|
+
|
308
311
|
Browser.resizeListeners.push(function(width, height) {
|
309
312
|
if (GLUT.reshapeFunc) {
|
310
313
|
Runtime.dynCall('vii', GLUT.reshapeFunc, [width, height]);
|
@@ -372,7 +375,7 @@ var LibraryGLUT = {
|
|
372
375
|
},
|
373
376
|
|
374
377
|
glutIdleFunc: function(func) {
|
375
|
-
|
378
|
+
function callback() {
|
376
379
|
if (GLUT.idleFunc) {
|
377
380
|
Runtime.dynCall('v', GLUT.idleFunc);
|
378
381
|
Browser.safeSetTimeout(callback, 0);
|
@@ -427,7 +430,9 @@ var LibraryGLUT = {
|
|
427
430
|
glutCreateWindow__deps: ['$Browser'],
|
428
431
|
glutCreateWindow: function(name) {
|
429
432
|
var contextAttributes = {
|
430
|
-
antialias: ((GLUT.initDisplayMode & 0x0080 /*GLUT_MULTISAMPLE*/) != 0)
|
433
|
+
antialias: ((GLUT.initDisplayMode & 0x0080 /*GLUT_MULTISAMPLE*/) != 0),
|
434
|
+
depth: ((GLUT.initDisplayMode & 0x0010 /*GLUT_DEPTH*/) != 0),
|
435
|
+
stencil: ((GLUT.initDisplayMode & 0x0020 /*GLUT_STENCIL*/) != 0)
|
431
436
|
};
|
432
437
|
Module.ctx = Browser.createContext(Module['canvas'], true, true, contextAttributes);
|
433
438
|
return Module.ctx ? 1 /* a new GLUT window ID for the created context */ : 0 /* failure */;
|
@@ -58,7 +58,7 @@ mergeInto(LibraryManager.library, {
|
|
58
58
|
}
|
59
59
|
|
60
60
|
var completed = 0;
|
61
|
-
|
61
|
+
function done(err) {
|
62
62
|
if (err) return callback(err);
|
63
63
|
if (++completed >= total) {
|
64
64
|
return callback(null);
|
@@ -68,7 +68,7 @@ mergeInto(LibraryManager.library, {
|
|
68
68
|
// create a single transaction to handle and IDB reads / writes we'll need to do
|
69
69
|
var db = src.type === 'remote' ? src.db : dst.db;
|
70
70
|
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
|
71
|
-
transaction.onerror = function() { callback(this.error); };
|
71
|
+
transaction.onerror = function transaction_onerror() { callback(this.error); };
|
72
72
|
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
|
73
73
|
|
74
74
|
for (var path in create) {
|
@@ -92,8 +92,8 @@ mergeInto(LibraryManager.library, {
|
|
92
92
|
} else {
|
93
93
|
// save file to IDB
|
94
94
|
var req = store.put(entry, path);
|
95
|
-
req.onsuccess = function() { done(null); };
|
96
|
-
req.onerror = function() { done(this.error); };
|
95
|
+
req.onsuccess = function req_onsuccess() { done(null); };
|
96
|
+
req.onerror = function req_onerror() { done(this.error); };
|
97
97
|
}
|
98
98
|
}
|
99
99
|
|
@@ -117,20 +117,20 @@ mergeInto(LibraryManager.library, {
|
|
117
117
|
} else {
|
118
118
|
// delete file from IDB
|
119
119
|
var req = store.delete(path);
|
120
|
-
req.onsuccess = function() { done(null); };
|
121
|
-
req.onerror = function() { done(this.error); };
|
120
|
+
req.onsuccess = function req_onsuccess() { done(null); };
|
121
|
+
req.onerror = function req_onerror() { done(this.error); };
|
122
122
|
}
|
123
123
|
}
|
124
124
|
},
|
125
125
|
getLocalSet: function(mount, callback) {
|
126
126
|
var files = {};
|
127
127
|
|
128
|
-
|
128
|
+
function isRealDir(p) {
|
129
129
|
return p !== '.' && p !== '..';
|
130
130
|
};
|
131
|
-
|
131
|
+
function toAbsolute(root) {
|
132
132
|
return function(p) {
|
133
|
-
return PATH.
|
133
|
+
return PATH.join2(root, p);
|
134
134
|
}
|
135
135
|
};
|
136
136
|
|
@@ -177,17 +177,17 @@ mergeInto(LibraryManager.library, {
|
|
177
177
|
} catch (e) {
|
178
178
|
return onerror(e);
|
179
179
|
}
|
180
|
-
req.onupgradeneeded = function() {
|
180
|
+
req.onupgradeneeded = function req_onupgradeneeded() {
|
181
181
|
db = req.result;
|
182
182
|
db.createObjectStore(IDBFS.DB_STORE_NAME);
|
183
183
|
};
|
184
|
-
req.onsuccess = function() {
|
184
|
+
req.onsuccess = function req_onsuccess() {
|
185
185
|
db = req.result;
|
186
186
|
// add to the cache
|
187
187
|
IDBFS.dbs[name] = db;
|
188
188
|
callback(null, db);
|
189
189
|
};
|
190
|
-
req.onerror = function() {
|
190
|
+
req.onerror = function req_onerror() {
|
191
191
|
callback(this.error);
|
192
192
|
};
|
193
193
|
},
|
@@ -198,10 +198,10 @@ mergeInto(LibraryManager.library, {
|
|
198
198
|
if (err) return callback(err);
|
199
199
|
|
200
200
|
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
|
201
|
-
transaction.onerror = function() { callback(this.error); };
|
201
|
+
transaction.onerror = function transaction_onerror() { callback(this.error); };
|
202
202
|
|
203
203
|
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
|
204
|
-
store.openCursor().onsuccess = function(event) {
|
204
|
+
store.openCursor().onsuccess = function store_openCursor_onsuccess(event) {
|
205
205
|
var cursor = event.target.result;
|
206
206
|
if (!cursor) {
|
207
207
|
return callback(null, { type: 'remote', db: db, files: files });
|
@@ -1,6 +1,8 @@
|
|
1
1
|
mergeInto(LibraryManager.library, {
|
2
2
|
$MEMFS__deps: ['$FS'],
|
3
3
|
$MEMFS: {
|
4
|
+
ops_table: null,
|
5
|
+
|
4
6
|
// content modes
|
5
7
|
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
8
|
CONTENT_FLEXIBLE: 2, // has been modified or never set to anything, and is a flexible js array that can grow/shrink
|
@@ -13,51 +15,71 @@ mergeInto(LibraryManager.library, {
|
|
13
15
|
// no supported
|
14
16
|
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
|
15
17
|
}
|
18
|
+
if (!MEMFS.ops_table) {
|
19
|
+
MEMFS.ops_table = {
|
20
|
+
dir: {
|
21
|
+
node: {
|
22
|
+
getattr: MEMFS.node_ops.getattr,
|
23
|
+
setattr: MEMFS.node_ops.setattr,
|
24
|
+
lookup: MEMFS.node_ops.lookup,
|
25
|
+
mknod: MEMFS.node_ops.mknod,
|
26
|
+
mknod: MEMFS.node_ops.mknod,
|
27
|
+
rename: MEMFS.node_ops.rename,
|
28
|
+
unlink: MEMFS.node_ops.unlink,
|
29
|
+
rmdir: MEMFS.node_ops.rmdir,
|
30
|
+
readdir: MEMFS.node_ops.readdir,
|
31
|
+
symlink: MEMFS.node_ops.symlink
|
32
|
+
},
|
33
|
+
stream: {
|
34
|
+
llseek: MEMFS.stream_ops.llseek
|
35
|
+
}
|
36
|
+
},
|
37
|
+
file: {
|
38
|
+
node: {
|
39
|
+
getattr: MEMFS.node_ops.getattr,
|
40
|
+
setattr: MEMFS.node_ops.setattr
|
41
|
+
},
|
42
|
+
stream: {
|
43
|
+
llseek: MEMFS.stream_ops.llseek,
|
44
|
+
read: MEMFS.stream_ops.read,
|
45
|
+
write: MEMFS.stream_ops.write,
|
46
|
+
allocate: MEMFS.stream_ops.allocate,
|
47
|
+
mmap: MEMFS.stream_ops.mmap
|
48
|
+
}
|
49
|
+
},
|
50
|
+
link: {
|
51
|
+
node: {
|
52
|
+
getattr: MEMFS.node_ops.getattr,
|
53
|
+
setattr: MEMFS.node_ops.setattr,
|
54
|
+
readlink: MEMFS.node_ops.readlink
|
55
|
+
},
|
56
|
+
stream: {}
|
57
|
+
},
|
58
|
+
chrdev: {
|
59
|
+
node: {
|
60
|
+
getattr: MEMFS.node_ops.getattr,
|
61
|
+
setattr: MEMFS.node_ops.setattr
|
62
|
+
},
|
63
|
+
stream: FS.chrdev_stream_ops
|
64
|
+
},
|
65
|
+
};
|
66
|
+
}
|
16
67
|
var node = FS.createNode(parent, name, mode, dev);
|
17
68
|
if (FS.isDir(node.mode)) {
|
18
|
-
node.node_ops =
|
19
|
-
|
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
|
-
};
|
69
|
+
node.node_ops = MEMFS.ops_table.dir.node;
|
70
|
+
node.stream_ops = MEMFS.ops_table.dir.stream;
|
33
71
|
node.contents = {};
|
34
72
|
} else if (FS.isFile(node.mode)) {
|
35
|
-
node.node_ops =
|
36
|
-
|
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
|
-
};
|
73
|
+
node.node_ops = MEMFS.ops_table.file.node;
|
74
|
+
node.stream_ops = MEMFS.ops_table.file.stream;
|
46
75
|
node.contents = [];
|
47
76
|
node.contentMode = MEMFS.CONTENT_FLEXIBLE;
|
48
77
|
} else if (FS.isLink(node.mode)) {
|
49
|
-
node.node_ops =
|
50
|
-
|
51
|
-
setattr: MEMFS.node_ops.setattr,
|
52
|
-
readlink: MEMFS.node_ops.readlink
|
53
|
-
};
|
54
|
-
node.stream_ops = {};
|
78
|
+
node.node_ops = MEMFS.ops_table.link.node;
|
79
|
+
node.stream_ops = MEMFS.ops_table.link.stream;
|
55
80
|
} else if (FS.isChrdev(node.mode)) {
|
56
|
-
node.node_ops =
|
57
|
-
|
58
|
-
setattr: MEMFS.node_ops.setattr
|
59
|
-
};
|
60
|
-
node.stream_ops = FS.chrdev_stream_ops;
|
81
|
+
node.node_ops = MEMFS.ops_table.chrdev.node;
|
82
|
+
node.stream_ops = MEMFS.ops_table.chrdev.stream;
|
61
83
|
}
|
62
84
|
node.timestamp = Date.now();
|
63
85
|
// add the new node to the parent
|
@@ -117,7 +139,7 @@ mergeInto(LibraryManager.library, {
|
|
117
139
|
}
|
118
140
|
},
|
119
141
|
lookup: function(parent, name) {
|
120
|
-
throw
|
142
|
+
throw FS.genericErrors[ERRNO_CODES.ENOENT];
|
121
143
|
},
|
122
144
|
mknod: function(parent, name, mode, dev) {
|
123
145
|
return MEMFS.createNode(parent, name, mode, dev);
|
@@ -200,10 +222,12 @@ mergeInto(LibraryManager.library, {
|
|
200
222
|
#if USE_TYPED_ARRAYS == 2
|
201
223
|
if (length && contents.length === 0 && position === 0 && buffer.subarray) {
|
202
224
|
// just replace it with the new data
|
225
|
+
#if ASSERTIONS
|
203
226
|
assert(buffer.length);
|
204
|
-
|
205
|
-
|
206
|
-
node.
|
227
|
+
#endif
|
228
|
+
if (canOwn && offset === 0) {
|
229
|
+
node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source.
|
230
|
+
node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED;
|
207
231
|
} else {
|
208
232
|
node.contents = new Uint8Array(buffer.subarray(offset, offset+length));
|
209
233
|
node.contentMode = MEMFS.CONTENT_FIXED;
|
@@ -1,7 +1,11 @@
|
|
1
1
|
mergeInto(LibraryManager.library, {
|
2
2
|
$NODEFS__deps: ['$FS', '$PATH'],
|
3
|
-
$NODEFS__postset: 'if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); }',
|
3
|
+
$NODEFS__postset: 'if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); }',
|
4
4
|
$NODEFS: {
|
5
|
+
isWindows: false,
|
6
|
+
staticInit: function() {
|
7
|
+
NODEFS.isWindows = !!process.platform.match(/^win/);
|
8
|
+
},
|
5
9
|
mount: function (mount) {
|
6
10
|
assert(ENVIRONMENT_IS_NODE);
|
7
11
|
return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
|
@@ -19,6 +23,11 @@ mergeInto(LibraryManager.library, {
|
|
19
23
|
var stat;
|
20
24
|
try {
|
21
25
|
stat = fs.lstatSync(path);
|
26
|
+
if (NODEFS.isWindows) {
|
27
|
+
// On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
|
28
|
+
// propagate write bits to execute bits.
|
29
|
+
stat.mode = stat.mode | ((stat.mode & 146) >> 1);
|
30
|
+
}
|
22
31
|
} catch (e) {
|
23
32
|
if (!e.code) throw e;
|
24
33
|
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
|
@@ -35,6 +44,41 @@ mergeInto(LibraryManager.library, {
|
|
35
44
|
parts.reverse();
|
36
45
|
return PATH.join.apply(null, parts);
|
37
46
|
},
|
47
|
+
// This maps the integer permission modes from http://linux.die.net/man/3/open
|
48
|
+
// to node.js-specific file open permission strings at http://nodejs.org/api/fs.html#fs_fs_open_path_flags_mode_callback
|
49
|
+
flagsToPermissionStringMap: {
|
50
|
+
0/*O_RDONLY*/: 'r',
|
51
|
+
1/*O_WRONLY*/: 'r+',
|
52
|
+
2/*O_RDWR*/: 'r+',
|
53
|
+
64/*O_CREAT*/: 'r',
|
54
|
+
65/*O_WRONLY|O_CREAT*/: 'r+',
|
55
|
+
66/*O_RDWR|O_CREAT*/: 'r+',
|
56
|
+
129/*O_WRONLY|O_EXCL*/: 'rx+',
|
57
|
+
193/*O_WRONLY|O_CREAT|O_EXCL*/: 'rx+',
|
58
|
+
514/*O_RDWR|O_TRUNC*/: 'w+',
|
59
|
+
577/*O_WRONLY|O_CREAT|O_TRUNC*/: 'w',
|
60
|
+
578/*O_CREAT|O_RDWR|O_TRUNC*/: 'w+',
|
61
|
+
705/*O_WRONLY|O_CREAT|O_EXCL|O_TRUNC*/: 'wx',
|
62
|
+
706/*O_RDWR|O_CREAT|O_EXCL|O_TRUNC*/: 'wx+',
|
63
|
+
1024/*O_APPEND*/: 'a',
|
64
|
+
1025/*O_WRONLY|O_APPEND*/: 'a',
|
65
|
+
1026/*O_RDWR|O_APPEND*/: 'a+',
|
66
|
+
1089/*O_WRONLY|O_CREAT|O_APPEND*/: 'a',
|
67
|
+
1090/*O_RDWR|O_CREAT|O_APPEND*/: 'a+',
|
68
|
+
1153/*O_WRONLY|O_EXCL|O_APPEND*/: 'ax',
|
69
|
+
1154/*O_RDWR|O_EXCL|O_APPEND*/: 'ax+',
|
70
|
+
1217/*O_WRONLY|O_CREAT|O_EXCL|O_APPEND*/: 'ax',
|
71
|
+
1218/*O_RDWR|O_CREAT|O_EXCL|O_APPEND*/: 'ax+',
|
72
|
+
4096/*O_RDONLY|O_DSYNC*/: 'rs',
|
73
|
+
4098/*O_RDWR|O_DSYNC*/: 'rs+'
|
74
|
+
},
|
75
|
+
flagsToPermissionString: function(flags) {
|
76
|
+
if (flags in NODEFS.flagsToPermissionStringMap) {
|
77
|
+
return NODEFS.flagsToPermissionStringMap[flags];
|
78
|
+
} else {
|
79
|
+
return flags;
|
80
|
+
}
|
81
|
+
},
|
38
82
|
node_ops: {
|
39
83
|
getattr: function(node) {
|
40
84
|
var path = NODEFS.realPath(node);
|
@@ -45,6 +89,14 @@ mergeInto(LibraryManager.library, {
|
|
45
89
|
if (!e.code) throw e;
|
46
90
|
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
|
47
91
|
}
|
92
|
+
// node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
|
93
|
+
// See http://support.microsoft.com/kb/140365
|
94
|
+
if (NODEFS.isWindows && !stat.blksize) {
|
95
|
+
stat.blksize = 4096;
|
96
|
+
}
|
97
|
+
if (NODEFS.isWindows && !stat.blocks) {
|
98
|
+
stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
|
99
|
+
}
|
48
100
|
return {
|
49
101
|
dev: stat.dev,
|
50
102
|
ino: stat.ino,
|
@@ -82,7 +134,7 @@ mergeInto(LibraryManager.library, {
|
|
82
134
|
}
|
83
135
|
},
|
84
136
|
lookup: function (parent, name) {
|
85
|
-
var path = PATH.
|
137
|
+
var path = PATH.join2(NODEFS.realPath(parent), name);
|
86
138
|
var mode = NODEFS.getMode(path);
|
87
139
|
return NODEFS.createNode(parent, name, mode);
|
88
140
|
},
|
@@ -104,7 +156,7 @@ mergeInto(LibraryManager.library, {
|
|
104
156
|
},
|
105
157
|
rename: function (oldNode, newDir, newName) {
|
106
158
|
var oldPath = NODEFS.realPath(oldNode);
|
107
|
-
var newPath = PATH.
|
159
|
+
var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
|
108
160
|
try {
|
109
161
|
fs.renameSync(oldPath, newPath);
|
110
162
|
} catch (e) {
|
@@ -113,7 +165,7 @@ mergeInto(LibraryManager.library, {
|
|
113
165
|
}
|
114
166
|
},
|
115
167
|
unlink: function(parent, name) {
|
116
|
-
var path = PATH.
|
168
|
+
var path = PATH.join2(NODEFS.realPath(parent), name);
|
117
169
|
try {
|
118
170
|
fs.unlinkSync(path);
|
119
171
|
} catch (e) {
|
@@ -122,7 +174,7 @@ mergeInto(LibraryManager.library, {
|
|
122
174
|
}
|
123
175
|
},
|
124
176
|
rmdir: function(parent, name) {
|
125
|
-
var path = PATH.
|
177
|
+
var path = PATH.join2(NODEFS.realPath(parent), name);
|
126
178
|
try {
|
127
179
|
fs.rmdirSync(path);
|
128
180
|
} catch (e) {
|
@@ -140,7 +192,7 @@ mergeInto(LibraryManager.library, {
|
|
140
192
|
}
|
141
193
|
},
|
142
194
|
symlink: function(parent, newName, oldPath) {
|
143
|
-
var newPath = PATH.
|
195
|
+
var newPath = PATH.join2(NODEFS.realPath(parent), newName);
|
144
196
|
try {
|
145
197
|
fs.symlinkSync(oldPath, newPath);
|
146
198
|
} catch (e) {
|
@@ -163,7 +215,7 @@ mergeInto(LibraryManager.library, {
|
|
163
215
|
var path = NODEFS.realPath(stream.node);
|
164
216
|
try {
|
165
217
|
if (FS.isFile(stream.node.mode)) {
|
166
|
-
stream.nfd = fs.openSync(path, stream.flags);
|
218
|
+
stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
|
167
219
|
}
|
168
220
|
} catch (e) {
|
169
221
|
if (!e.code) throw e;
|
@@ -172,7 +224,7 @@ mergeInto(LibraryManager.library, {
|
|
172
224
|
},
|
173
225
|
close: function (stream) {
|
174
226
|
try {
|
175
|
-
if (FS.isFile(stream.node.mode)) {
|
227
|
+
if (FS.isFile(stream.node.mode) && stream.nfd) {
|
176
228
|
fs.closeSync(stream.nfd);
|
177
229
|
}
|
178
230
|
} catch (e) {
|
@@ -231,4 +283,4 @@ mergeInto(LibraryManager.library, {
|
|
231
283
|
}
|
232
284
|
}
|
233
285
|
}
|
234
|
-
});
|
286
|
+
});
|
@@ -8,13 +8,13 @@ var LibraryOpenAL = {
|
|
8
8
|
QUEUE_INTERVAL: 25,
|
9
9
|
QUEUE_LOOKAHEAD: 100,
|
10
10
|
|
11
|
-
updateSources: function(context) {
|
11
|
+
updateSources: function updateSources(context) {
|
12
12
|
for (var i = 0; i < context.src.length; i++) {
|
13
13
|
AL.updateSource(context.src[i]);
|
14
14
|
}
|
15
15
|
},
|
16
16
|
|
17
|
-
updateSource: function(src) {
|
17
|
+
updateSource: function updateSource(src) {
|
18
18
|
#if OPENAL_DEBUG
|
19
19
|
var idx = AL.currentContext.src.indexOf(src);
|
20
20
|
#endif
|
@@ -65,7 +65,7 @@ var LibraryOpenAL = {
|
|
65
65
|
}
|
66
66
|
},
|
67
67
|
|
68
|
-
setSourceState: function(src, state) {
|
68
|
+
setSourceState: function setSourceState(src, state) {
|
69
69
|
#if OPENAL_DEBUG
|
70
70
|
var idx = AL.currentContext.src.indexOf(src);
|
71
71
|
#endif
|
@@ -119,7 +119,7 @@ var LibraryOpenAL = {
|
|
119
119
|
}
|
120
120
|
},
|
121
121
|
|
122
|
-
stopSourceQueue: function(src) {
|
122
|
+
stopSourceQueue: function stopSourceQueue(src) {
|
123
123
|
for (var i = 0; i < src.queue.length; i++) {
|
124
124
|
var entry = src.queue[i];
|
125
125
|
if (entry.src) {
|
@@ -59,26 +59,22 @@ mergeInto(LibraryManager.library, {
|
|
59
59
|
}
|
60
60
|
return root + dir;
|
61
61
|
},
|
62
|
-
basename: function(path
|
62
|
+
basename: function(path) {
|
63
63
|
// EMSCRIPTEN return '/'' for '/', not an empty string
|
64
64
|
if (path === '/') return '/';
|
65
|
-
var
|
66
|
-
if (
|
67
|
-
|
68
|
-
}
|
69
|
-
return f;
|
65
|
+
var lastSlash = path.lastIndexOf('/');
|
66
|
+
if (lastSlash === -1) return path;
|
67
|
+
return path.substr(lastSlash+1);
|
70
68
|
},
|
71
69
|
extname: function(path) {
|
72
70
|
return PATH.splitPath(path)[3];
|
73
71
|
},
|
74
72
|
join: function() {
|
75
73
|
var paths = Array.prototype.slice.call(arguments, 0);
|
76
|
-
return PATH.normalize(paths.
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
return p;
|
81
|
-
}).join('/'));
|
74
|
+
return PATH.normalize(paths.join('/'));
|
75
|
+
},
|
76
|
+
join2: function(l, r) {
|
77
|
+
return PATH.normalize(l + '/' + r);
|
82
78
|
},
|
83
79
|
resolve: function() {
|
84
80
|
var resolvedPath = '',
|
@@ -134,4 +130,4 @@ mergeInto(LibraryManager.library, {
|
|
134
130
|
return outputParts.join('/');
|
135
131
|
}
|
136
132
|
}
|
137
|
-
});
|
133
|
+
});
|