From b08065e51fd07bf335ad3b2e4a122b9f50b7098b Mon Sep 17 00:00:00 2001 From: Claudio Daffra Date: Tue, 24 Nov 2015 18:44:26 +0100 Subject: [PATCH 01/15] Node.js getenv implemented getenv on node.js check memory leaks : printf ( "\n NODE.JS <%s> " ,getenv ( process.env.APPDATA ) ) ; --- system/include/emscripten/emscripten.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/system/include/emscripten/emscripten.h b/system/include/emscripten/emscripten.h index 56aa0e48ef044..f17beaa4b02fc 100644 --- a/system/include/emscripten/emscripten.h +++ b/system/include/emscripten/emscripten.h @@ -271,7 +271,14 @@ emscripten_coroutine emscripten_coroutine_create(em_arg_callback_func func, void int emscripten_coroutine_next(emscripten_coroutine); void emscripten_yield(void); - +#define getenv(name)\ + (char*) EM_ASM_INT ( {\ + if(typeof _getenv_ret !== 'undefined')_free( _getenv_ret);\ + var envar = JSON.stringify(name);\ + var _getenv_ret = allocate(intArrayFromString(envar), 'i8', ALLOC_NORMAL);\ + return _getenv_ret ;\ + }, NULL ) + #ifdef __cplusplus } #endif From f3a263d736eeee287c9cd7d6c2a05c03768e5da6 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:04:03 +0100 Subject: [PATCH 02/15] Update library.js --- src/library.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/library.js b/src/library.js index c18991145d499..11fd6b7ce0d35 100644 --- a/src/library.js +++ b/src/library.js @@ -448,16 +448,17 @@ LibraryManager.library = { } return ret; // Previous break location. }, - system__deps: ['__setErrNo', '$ERRNO_CODES'], - system: function(command) { - // int system(const char *command); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/system.html - // Can't call external programs. - ___setErrNo(ERRNO_CODES.EAGAIN); - return -1; + system: function(command) + { + var cmd = Pointer_stringify(command); + var sys = require('util'); + var exec = require('child_process').exec; + function out(error, stdout, stderr) {console.log(stdout)} + exec( cmd , out); + return 0; }, - + // ========================================================================== // stdlib.h // ========================================================================== From 0b7f5ff946fb86c361f79862074cfb3d51a4a983 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:06:45 +0100 Subject: [PATCH 03/15] Update library.js implemented : system command, works on node.js : usage : system ( "dir" ) ; system ( "node -v" ) ; system ( "dir c:\\windows" ); system ( "em++ node001-getenv.cpp -o main.js" ); --- src/library.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/library.js b/src/library.js index 11fd6b7ce0d35..9fe6f75a2aab2 100644 --- a/src/library.js +++ b/src/library.js @@ -458,7 +458,6 @@ LibraryManager.library = { exec( cmd , out); return 0; }, - // ========================================================================== // stdlib.h // ========================================================================== From 0ccfbb7a7153c58368b69c84bbdf59a05c16d7ee Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:17:21 +0100 Subject: [PATCH 04/15] Update emscripten.h added get env added pause added __SIGRTMIN added __SIGRTMAX --- system/include/emscripten/emscripten.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/system/include/emscripten/emscripten.h b/system/include/emscripten/emscripten.h index f17beaa4b02fc..b0724d44f34c4 100644 --- a/system/include/emscripten/emscripten.h +++ b/system/include/emscripten/emscripten.h @@ -271,6 +271,7 @@ emscripten_coroutine emscripten_coroutine_create(em_arg_callback_func func, void int emscripten_coroutine_next(emscripten_coroutine); void emscripten_yield(void); +// node.js : getenv #define getenv(name)\ (char*) EM_ASM_INT ( {\ if(typeof _getenv_ret !== 'undefined')_free( _getenv_ret);\ @@ -278,6 +279,10 @@ void emscripten_yield(void); var _getenv_ret = allocate(intArrayFromString(envar), 'i8', ALLOC_NORMAL);\ return _getenv_ret ;\ }, NULL ) +// library_signal.js : pause +#define pause( t ) raise(SIGSTOP);emscripten_sleep(t);raise(SIGCONT); +#define __SIGRTMIN 34 +#define __SIGRTMAX 64 #ifdef __cplusplus } From 8381081a0645598f4e960afb15144bb397c76ad5 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:20:40 +0100 Subject: [PATCH 05/15] Update library_signals.js : add signal , raise , pause , sigprocmask, __libc_current_sigrtmax __libc_current_sigrtmin --- src/library_signals.js | 180 +++++++++++++++++++++++------------------ 1 file changed, 102 insertions(+), 78 deletions(-) diff --git a/src/library_signals.js b/src/library_signals.js index 315459309be5a..634f99b3b2fe4 100644 --- a/src/library_signals.js +++ b/src/library_signals.js @@ -1,37 +1,40 @@ // 'use strict' -var funs = { - _sigalrm_handler: 0, +var funs = +{ + signal__deps: ['_sig_handler_'], - signal__deps: ['_sigalrm_handler'], - signal: function(sig, func) { - if (sig == 14 /*SIGALRM*/) { - __sigalrm_handler = func; - } else { -#if ASSERTIONS - Module.printErr('Calling stub instead of signal()'); -#endif - } - return 0; - }, - sigemptyset: function(set) { - {{{ makeSetValue('set', '0', '0', 'i32') }}}; - return 0; - }, - sigfillset: function(set) { - {{{ makeSetValue('set', '0', '-1>>>0', 'i32') }}}; - return 0; - }, - sigaddset: function(set, signum) { - {{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '| (1 << (signum-1))', 'i32') }}}; - return 0; - }, - sigdelset: function(set, signum) { - {{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '& (~(1 << (signum-1)))', 'i32') }}}; - return 0; - }, - sigismember: function(set, signum) { - return {{{ makeGetValue('set', '0', 'i32') }}} & (1 << (signum-1)); - }, + signal: function(sig, func) + { + if ( typeof signal__deps === 'undefined' ) signal__deps = [] ; + if ( typeof signal__deps['_sig_handler_'] === 'undefined' ) signal__deps['_sig_handler_'] = [] ; + signal__deps['_sig_handler_'][sig] = func ; + + return sig; + }, + sigemptyset: function(set) + { + {{{ makeSetValue('set', '0', '0', 'i32') }}}; + return 0; + }, + sigfillset: function(set) + { + {{{ makeSetValue('set', '0', '-1>>>0', 'i32') }}}; + return 0; + }, + sigaddset: function(set, signum) + { + {{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '| (1 << (signum-1))', 'i32') }}}; + return 0; + }, + sigdelset: function(set, signum) + { + {{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '& (~(1 << (signum-1)))', 'i32') }}}; + return 0; + }, + sigismember: function(set, signum) + { + return {{{ makeGetValue('set', '0', 'i32') }}} & (1 << (signum-1)); + }, sigaction: function(signum, act, oldact) { //int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); #if ASSERTIONS @@ -39,23 +42,33 @@ var funs = { #endif return 0; }, - sigprocmask: function() { -#if ASSERTIONS - Module.printErr('Calling stub instead of sigprocmask()'); -#endif - return 0; - }, - __libc_current_sigrtmin: function() { -#if ASSERTIONS - Module.printErr('Calling stub instead of __libc_current_sigrtmin'); -#endif - return 0; - }, - __libc_current_sigrtmax: function() { -#if ASSERTIONS - Module.printErr('Calling stub instead of __libc_current_sigrtmax'); -#endif - return 0; + sigprocmask: function( how , set , old ) + { + var SIG_BLOCK = 1; + var EINVAL = 22 ; + + if ( how - SIG_BLOCK >2 ) return EINVAL ; + //ret = -__syscall(SYS_rt_sigprocmask, how, set, old, _NSIG/8); + ret = 0 ; + if (!ret && old) + { + {{{ makeSetValue('old', '0', '~0x80000000', 'i32') }}}; + {{{ makeSetValue('old', '1', '~0x00000003', 'i32') }}}; + } + return ret; + }, + __libc_current_sigrtmin: function() + { + // POSIX timers use __SIGRTMIN + 0. + // libbacktrace uses __SIGRTMIN + 1. + // libcore uses __SIGRTMIN + 2. + var __SIGRTMIN = 34 + return __SIGRTMIN+3; + }, + __libc_current_sigrtmax: function() + { + var __SIGRTMAX = 64; + return __SIGRTMAX; }, kill__deps: ['$ERRNO_CODES', '__setErrNo'], kill: function(pid, sig) { @@ -68,7 +81,6 @@ var funs = { ___setErrNo(ERRNO_CODES.EPERM); return -1; }, - killpg__deps: ['$ERRNO_CODES', '__setErrNo'], killpg: function() { #if ASSERTIONS @@ -83,19 +95,34 @@ var funs = { #endif return 0; }, - - raise__deps: ['$ERRNO_CODES', '__setErrNo'], - raise: function(sig) { -#if ASSERTIONS - Module.printErr('Calling stub instead of raise()'); -#endif - ___setErrNo(ERRNO_CODES.ENOSYS); -#if ASSERTIONS - Runtime.warnOnce('raise() returning an error as we do not support it'); -#endif - return -1; - }, - + raise: function(sig) + { + if ( typeof signal__deps === 'undefined' ) + return -1 ; + if ( typeof signal__deps['_sig_handler_'] === 'undefined' ) + { + Module.printErr ( 'undefined signal handler : ' + sig); + return -1 ; + } + if ( typeof signal__deps['_sig_handler_'][sig] === 'undefined' ) + { + Module.printErr ( 'undefined signal handler :' + sig ); + return -1; + } + + var ff = signal__deps['_sig_handler_'][sig] ; + + if ( ff == 0 ) + { + Module.printErr ( 'undefined signal handler :' + sig ); + return -1; + } + + Runtime.dynCall('vi', ff, [0]); + ___setErrNo(ERRNO_CODES.ENOSYS); + + return sig; + }, // http://pubs.opengroup.org/onlinepubs/000095399/functions/alarm.html alarm__deps: ['_sigalrm_handler'], alarm: function(seconds) { @@ -113,21 +140,18 @@ var funs = { throw 'getitimer() is not implemented yet'; }, - pause__deps: ['__setErrNo', '$ERRNO_CODES'], - pause: function() { - // int pause(void); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/pause.html - // We don't support signals, so we return immediately. -#if ASSERTIONS - Module.printErr('Calling stub instead of pause()'); -#endif - ___setErrNo(ERRNO_CODES.EINTR); - return -1; - }, - sigpending: function(set) { - {{{ makeSetValue('set', 0, 0, 'i32') }}}; - return 0; - } + pause__deps: ['__setErrNo', '$ERRNO_CODES'], + pause: function() + { + // implemened as #define in emscripten.h + // #define pause( t ) + }, + + sigpending: function(set) + { + {{{ makeSetValue('set', 0, 0, 'i32') }}}; + return 0; + } //signalfd //ppoll //epoll_pwait From b5141ee16a60153832535cb7650a2f0ebabd6a90 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:30:04 +0100 Subject: [PATCH 06/15] node.js - getenv create example for getenv node.js --- tests/node001-getenv.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/node001-getenv.cpp diff --git a/tests/node001-getenv.cpp b/tests/node001-getenv.cpp new file mode 100644 index 0000000000000..72f485a0fa78b --- /dev/null +++ b/tests/node001-getenv.cpp @@ -0,0 +1,20 @@ +#include +#include + +int main () +{ + char *s = getenv ( process.env.APPDATA ); + printf ( "\n NODE.JS <%s> " ,s ) ; + printf ( "\n NODE.JS <%s> " , getenv ( process.env.HOMEDRIVE ) ) ; + printf ( "\n NODE.JS <%s> " , getenv ( process.env ) ) ; + + return 0; +} + +/* OUTPUT + + NODE.JS <"C:\\Users\\claudio\\AppData\\Roaming"> + NODE.JS <"C:"> + ... + +*/ From dc44c17cfd063eae9a540f9b0e8abaf71f5e7813 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:30:58 +0100 Subject: [PATCH 07/15] node.js - system add example to use system command on node.js --- tests/node002-system.cpp | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tests/node002-system.cpp diff --git a/tests/node002-system.cpp b/tests/node002-system.cpp new file mode 100644 index 0000000000000..5b53744ba01ab --- /dev/null +++ b/tests/node002-system.cpp @@ -0,0 +1,55 @@ +#include +#include +#include + +int main () +{ + system ( "dir" ) ; + system ( "node -v" ) ; + system ( "dir c:\\windows" ); + system ( "em++ node001-getenv.cpp -o main.js" ); + + return 0; +} + +/* OUTPUT + +v4.1.1 + + Il volume nell'unit� C � ROOT + Numero di serie del volume: 06E6-D93D + + Directory di c:\windows + +24/10/2015 13.08 . +24/10/2015 13.08 .. +10/07/2015 12.04 addins +30/10/2015 10.59 appcompat +24/11/2015 03.15 AppPatch +02/12/2015 15.29 AppReadiness +... +10/07/2015 12.00 11.264 write.exe + 23 File 721.754.485 byte + 70 Directory 170.484.563.968 byte disponibili + + Il volume nell'unit� C � ROOT + Numero di serie del volume: 06E6-D93D + + Directory di C:\wamp\www\em\bug + +02/12/2015 15.44 . +02/12/2015 15.44 .. +18/11/2015 21.59 137 index.html +02/12/2015 15.44 370.407 main.js +... +02/12/2015 15.22 2.006 signal003-sigprocmask.cpp +02/12/2015 15.44 0 txt.txt +23/11/2015 14.58 946 type.signal.CPP + 10 File 376.049 byte + 2 Directory 170.484.563.968 byte disponibili + + + +*/ + + From 8780ca6f00cf3fa1409dadeb9de180b4bb1ebb0a Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:31:52 +0100 Subject: [PATCH 08/15] signal - raise example show usage of signal raise --- tests/signa001-signa-raise.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tests/signa001-signa-raise.cpp diff --git a/tests/signa001-signa-raise.cpp b/tests/signa001-signa-raise.cpp new file mode 100644 index 0000000000000..9aecf9a7e1139 --- /dev/null +++ b/tests/signa001-signa-raise.cpp @@ -0,0 +1,28 @@ +#include +#include + +void mySTUB1 (int param) +{ + puts ( "ONE!"); +} +void mySTUB2 (int param) +{ + puts ( "TWO!"); +} + +int main () +{ + // ........................ signal handler + signal (SIGINT , NULL ); + signal (SIGABRT, mySTUB2 ); + // ........................ raise risgnal + raise(SIGINT); + raise(SIGABRT); + // ........................ raise undef handler + printf ( "%d" ,raise(SIGSTOP) ) ; + // ........................ raise undef signal + printf ( "%d" ,raise(-2) ) ; + + + return 0; +} From c76e3d71924cbf0ac365a2a91282b308f7954ad5 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:32:38 +0100 Subject: [PATCH 09/15] create pause command example add usage for pause() command --- tests/signal002-pause.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/signal002-pause.cpp diff --git a/tests/signal002-pause.cpp b/tests/signal002-pause.cpp new file mode 100644 index 0000000000000..5d3cbc2fbb860 --- /dev/null +++ b/tests/signal002-pause.cpp @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include +#include + +// compile with : +// +// em++ signal002-pause.cpp -o main.js -s ASYNCIFY=1 +// + + +void mystop (int param) +{ + puts ( "stop!"); +} +void mycont (int param) +{ + puts ( "cont!"); +} +int main (int argc, char *argv[]) +{ + // ........................ signal handler + signal (SIGSTOP, mystop ); + signal (SIGCONT, mycont ); + + pause ( 1000 ) ; + + return 0; +} From f350dd4a47201dbae1b9cc7bdd62e7012e667494 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:33:23 +0100 Subject: [PATCH 10/15] Create sigprocmask example usage sig proc mask --- tests/signal003-sigprocmask.cpp | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tests/signal003-sigprocmask.cpp diff --git a/tests/signal003-sigprocmask.cpp b/tests/signal003-sigprocmask.cpp new file mode 100644 index 0000000000000..2c411b0f561eb --- /dev/null +++ b/tests/signal003-sigprocmask.cpp @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +#include +#include + +int main() +{ + sigset_t old_set,new_set; + + sigemptyset(&old_set); + sigemptyset(&new_set); + + if(sigaddset(&old_set,SIGSEGV)==0) + { + printf("sigaddset successfully added for SIGSEGV\n"); + } + sigprocmask(SIG_BLOCK,&old_set,NULL); // SIGSEGV signal is masked + //kill(0,SIGSEGV); + + + //***************************************************************** + + if(sigaddset(&new_set,SIGRTMIN)==0) + { + printf("sigaddset successfully added for SIGRTMIN\n"); + } + sigprocmask(SIG_BLOCK,&new_set,&old_set); // SIGRTMIN signal is masked + //kill(0,SIGSEGV); + + //****************** Unblock one signal at a time ****************** + + sigprocmask(SIG_UNBLOCK,&new_set,&old_set); // SIGRTMIN signal is unmasked + sigprocmask(SIG_UNBLOCK,&new_set,&old_set); // SIGSEGV signal is unmasked +} + + From 9add5272f82b84d737800e9083c65c5c7a6b5ea5 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 2 Dec 2015 16:42:03 +0100 Subject: [PATCH 11/15] update example --- tests/node002-system.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/node002-system.cpp b/tests/node002-system.cpp index 5b53744ba01ab..1925965bbc6df 100644 --- a/tests/node002-system.cpp +++ b/tests/node002-system.cpp @@ -16,7 +16,7 @@ int main () v4.1.1 - Il volume nell'unit� C � ROOT + Il volume nell'unita C ROOT Numero di serie del volume: 06E6-D93D Directory di c:\windows @@ -32,10 +32,10 @@ v4.1.1 23 File 721.754.485 byte 70 Directory 170.484.563.968 byte disponibili - Il volume nell'unit� C � ROOT + Il volume nell'unita C ROOT Numero di serie del volume: 06E6-D93D - Directory di C:\wamp\www\em\bug + Directory di C:\wamp\www\em\ 02/12/2015 15.44 . 02/12/2015 15.44 .. @@ -48,8 +48,6 @@ v4.1.1 10 File 376.049 byte 2 Directory 170.484.563.968 byte disponibili - - */ From b4f21796d77c0be7443f9ffa463ebc460a89b764 Mon Sep 17 00:00:00 2001 From: SSX Date: Thu, 3 Dec 2015 14:19:55 +0100 Subject: [PATCH 12/15] Update .js { ident 2 space apply { in the same lines and tab code with 2 spaces --- src/library.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/library.js b/src/library.js index 9fe6f75a2aab2..34e8ec27ee032 100644 --- a/src/library.js +++ b/src/library.js @@ -449,13 +449,12 @@ LibraryManager.library = { return ret; // Previous break location. }, system__deps: ['__setErrNo', '$ERRNO_CODES'], - system: function(command) - { - var cmd = Pointer_stringify(command); - var sys = require('util'); - var exec = require('child_process').exec; - function out(error, stdout, stderr) {console.log(stdout)} - exec( cmd , out); + system: function(command) { + var cmd = Pointer_stringify(command); + var sys = require('util'); + var exec = require('child_process').exec; + function out(error, stdout, stderr) {console.log(stdout)} + exec( cmd , out); return 0; }, // ========================================================================== From 87230974aa45c571f64b36e013676d8ddbc245f4 Mon Sep 17 00:00:00 2001 From: SSX Date: Thu, 3 Dec 2015 14:25:24 +0100 Subject: [PATCH 13/15] tab rialligned --- src/library_signals.js | 149 ++++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 85 deletions(-) diff --git a/src/library_signals.js b/src/library_signals.js index 634f99b3b2fe4..418b1af0faa0a 100644 --- a/src/library_signals.js +++ b/src/library_signals.js @@ -1,40 +1,34 @@ // 'use strict' var funs = { - signal__deps: ['_sig_handler_'], + signal__deps: ['_sig_handler_'], - signal: function(sig, func) - { - if ( typeof signal__deps === 'undefined' ) signal__deps = [] ; - if ( typeof signal__deps['_sig_handler_'] === 'undefined' ) signal__deps['_sig_handler_'] = [] ; - signal__deps['_sig_handler_'][sig] = func ; + signal: function(sig, func) { + if ( typeof signal__deps === 'undefined' ) signal__deps = [] ; + if ( typeof signal__deps['_sig_handler_'] === 'undefined' ) signal__deps['_sig_handler_'] = [] ; + signal__deps['_sig_handler_'][sig] = func ; - return sig; - }, - sigemptyset: function(set) - { - {{{ makeSetValue('set', '0', '0', 'i32') }}}; - return 0; - }, - sigfillset: function(set) - { - {{{ makeSetValue('set', '0', '-1>>>0', 'i32') }}}; - return 0; - }, - sigaddset: function(set, signum) - { - {{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '| (1 << (signum-1))', 'i32') }}}; - return 0; - }, - sigdelset: function(set, signum) - { - {{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '& (~(1 << (signum-1)))', 'i32') }}}; - return 0; - }, - sigismember: function(set, signum) - { - return {{{ makeGetValue('set', '0', 'i32') }}} & (1 << (signum-1)); - }, + return sig; + }, + sigemptyset: function(set) { + {{{ makeSetValue('set', '0', '0', 'i32') }}}; + return 0; + }, + sigfillset: function(set) { + {{{ makeSetValue('set', '0', '-1>>>0', 'i32') }}}; + return 0; + }, + sigaddset: function(set, signum) { + {{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '| (1 << (signum-1))', 'i32') }}}; + return 0; + }, + sigdelset: function(set, signum) { + {{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '& (~(1 << (signum-1)))', 'i32') }}}; + return 0; + }, + sigismember: function(set, signum) { + return {{{ makeGetValue('set', '0', 'i32') }}} & (1 << (signum-1)); + }, sigaction: function(signum, act, oldact) { //int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); #if ASSERTIONS @@ -42,23 +36,19 @@ var funs = #endif return 0; }, - sigprocmask: function( how , set , old ) - { - var SIG_BLOCK = 1; - var EINVAL = 22 ; - + sigprocmask: function( how , set , old ) { + var SIG_BLOCK = 1; + var EINVAL = 22 ; if ( how - SIG_BLOCK >2 ) return EINVAL ; //ret = -__syscall(SYS_rt_sigprocmask, how, set, old, _NSIG/8); ret = 0 ; - if (!ret && old) - { - {{{ makeSetValue('old', '0', '~0x80000000', 'i32') }}}; - {{{ makeSetValue('old', '1', '~0x00000003', 'i32') }}}; - } + if (!ret && old) { + {{{ makeSetValue('old', '0', '~0x80000000', 'i32') }}}; + {{{ makeSetValue('old', '1', '~0x00000003', 'i32') }}}; + } return ret; }, - __libc_current_sigrtmin: function() - { + __libc_current_sigrtmin: function() { // POSIX timers use __SIGRTMIN + 0. // libbacktrace uses __SIGRTMIN + 1. // libcore uses __SIGRTMIN + 2. @@ -95,34 +85,27 @@ var funs = #endif return 0; }, - raise: function(sig) - { - if ( typeof signal__deps === 'undefined' ) - return -1 ; - if ( typeof signal__deps['_sig_handler_'] === 'undefined' ) - { - Module.printErr ( 'undefined signal handler : ' + sig); - return -1 ; - } - if ( typeof signal__deps['_sig_handler_'][sig] === 'undefined' ) - { - Module.printErr ( 'undefined signal handler :' + sig ); - return -1; - } - - var ff = signal__deps['_sig_handler_'][sig] ; - - if ( ff == 0 ) - { - Module.printErr ( 'undefined signal handler :' + sig ); - return -1; - } - - Runtime.dynCall('vi', ff, [0]); - ___setErrNo(ERRNO_CODES.ENOSYS); - - return sig; - }, + raise: function(sig) { + if ( typeof signal__deps === 'undefined' ) + return -1 ; + if ( typeof signal__deps['_sig_handler_'] === 'undefined' ) { + Module.printErr ( 'undefined signal handler : ' + sig); + return -1 ; + } + if ( typeof signal__deps['_sig_handler_'][sig] === 'undefined' ){ + Module.printErr ( 'undefined signal handler :' + sig ); + return -1; + } + var ff = signal__deps['_sig_handler_'][sig] ; + + if ( ff == 0 ) { + Module.printErr ( 'undefined signal handler :' + sig ); + return -1; + } + Runtime.dynCall('vi', ff, [0]); + ___setErrNo(ERRNO_CODES.ENOSYS); + return sig; + }, // http://pubs.opengroup.org/onlinepubs/000095399/functions/alarm.html alarm__deps: ['_sigalrm_handler'], alarm: function(seconds) { @@ -139,19 +122,15 @@ var funs = getitimer: function() { throw 'getitimer() is not implemented yet'; }, - - pause__deps: ['__setErrNo', '$ERRNO_CODES'], - pause: function() - { - // implemened as #define in emscripten.h - // #define pause( t ) - }, - - sigpending: function(set) - { - {{{ makeSetValue('set', 0, 0, 'i32') }}}; - return 0; - } + pause__deps: ['__setErrNo', '$ERRNO_CODES'], + pause: function() { + // implemened as #define in emscripten.h + // #define pause( t ) + }, + sigpending: function(set) { + {{{ makeSetValue('set', 0, 0, 'i32') }}}; + return 0; + } //signalfd //ppoll //epoll_pwait From ceecd8f612fc555506142ad044b15a5cb2dc9358 Mon Sep 17 00:00:00 2001 From: SSX Date: Fri, 4 Dec 2015 13:19:13 +0100 Subject: [PATCH 14/15] update system if environmet is node --- src/library.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/library.js b/src/library.js index 34e8ec27ee032..8022dade96c85 100644 --- a/src/library.js +++ b/src/library.js @@ -450,11 +450,13 @@ LibraryManager.library = { }, system__deps: ['__setErrNo', '$ERRNO_CODES'], system: function(command) { - var cmd = Pointer_stringify(command); - var sys = require('util'); - var exec = require('child_process').exec; - function out(error, stdout, stderr) {console.log(stdout)} - exec( cmd , out); + if (ENVIRONMENT_IS_NODE) { + var cmd = Pointer_stringify(command); + var sys = require('util'); + var exec = require('child_process').exec; + function out(error, stdout, stderr) {console.log(stdout)} + exec( cmd , out); + } return 0; }, // ========================================================================== From 3e60568aa8b1f41724c445deaca9f0ebff130b07 Mon Sep 17 00:00:00 2001 From: SSX Date: Wed, 16 Dec 2015 14:26:42 +0100 Subject: [PATCH 15/15] remove get env (node.js) remove getnev implementation on emscripten.h. file to avoid confusion. --- system/include/emscripten/emscripten.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/system/include/emscripten/emscripten.h b/system/include/emscripten/emscripten.h index b0724d44f34c4..f893ba59fdcc5 100644 --- a/system/include/emscripten/emscripten.h +++ b/system/include/emscripten/emscripten.h @@ -271,14 +271,6 @@ emscripten_coroutine emscripten_coroutine_create(em_arg_callback_func func, void int emscripten_coroutine_next(emscripten_coroutine); void emscripten_yield(void); -// node.js : getenv -#define getenv(name)\ - (char*) EM_ASM_INT ( {\ - if(typeof _getenv_ret !== 'undefined')_free( _getenv_ret);\ - var envar = JSON.stringify(name);\ - var _getenv_ret = allocate(intArrayFromString(envar), 'i8', ALLOC_NORMAL);\ - return _getenv_ret ;\ - }, NULL ) // library_signal.js : pause #define pause( t ) raise(SIGSTOP);emscripten_sleep(t);raise(SIGCONT); #define __SIGRTMIN 34