webruby 0.2.2 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
});
|