diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-12-10 17:26:15 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-12-10 17:26:15 -0800 |
commit | f59ffc338e2c1df792709a823be1c1d2735e88bf (patch) | |
tree | 7268bc264e4364f9766f1b137882870bf7b90569 /src/library.js | |
parent | 0162cc4bdc1955b442bec1a185d024d3d30cec0e (diff) | |
parent | 3a35fd9389a18707abd51dc71e2096c64413d510 (diff) |
Merge branch 'ta2bydefault'
Diffstat (limited to 'src/library.js')
-rw-r--r-- | src/library.js | 65 |
1 files changed, 56 insertions, 9 deletions
diff --git a/src/library.js b/src/library.js index 1d296981..e1121c2f 100644 --- a/src/library.js +++ b/src/library.js @@ -706,9 +706,8 @@ LibraryManager.library = { mode = obj.link === undefined ? 0x8000 : 0xA000; // S_IFREG, S_IFLNK. } } - {{{ makeSetValue('buf', 'offsets.st_dev', makeI64('dev'), 'i64') }}}; - {{{ makeSetValue('buf', 'offsets.st_rdev', makeI64('rdev'), 'i64') }}}; - // NOTE: These two may be i64, depending on compilation options. + {{{ makeSetValue('buf', 'offsets.st_dev', 'dev', 'i32') }}}; + {{{ makeSetValue('buf', 'offsets.st_rdev', 'rdev', 'i32') }}}; {{{ makeSetValue('buf', 'offsets.st_size', 'size', 'i32') }}} {{{ makeSetValue('buf', 'offsets.st_blocks', 'blocks', 'i32') }}} if (obj.read) mode |= 0x16D; // S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH. @@ -3841,9 +3840,57 @@ LibraryManager.library = { return 0; }, - // Compiled from newlib; for the original source and licensing, see library_strtok_r.c XXX will not work with typed arrays - strtok_r: function(b,j,f){var a;a=null;var c,e;b=b;var i=b!=0;a:do if(i)a=0;else{b=HEAP[f];if(b!=0){a=0;break a}c=0;a=3;break a}while(0);if(a==0){a:for(;;){e=HEAP[b];b+=1;a=j;var g=e;i=a;a=2;b:for(;;){d=a==5?d:0;a=HEAP[i+d];if(a!=0==0){a=9;break a}var d=d+1;if(g==a)break b;else a=5}a=2}if(a==9)if(g==0)c=HEAP[f]=0;else{c=b+-1;a:for(;;){e=HEAP[b];b+=1;a=j;g=e;d=a;a=10;b:for(;;){h=a==13?h:0;a=HEAP[d+h];if(a==g!=0)break a;var h=h+1;if(a!=0)a=13;else break b}}if(e==0)b=0;else HEAP[b+-1]=0; HEAP[f]=b;c=c}else if(a==7){HEAP[f]=b;HEAP[b+-1]=0;c=b+-1}}return c}, - // TODO: Compile strtok() from source. + // Translated from newlib; for the original source and licensing, see library_strtok_r.c + strtok_r: function(s, delim, lasts) { + var skip_leading_delim = 1; + var spanp; + var c, sc; + var tok; + + + if (s == 0 && (s = getValue(lasts, 'i8*')) == 0) { + return 0; + } + + cont: while (1) { + c = getValue(s++, 'i8'); + for (spanp = delim; (sc = getValue(spanp++, 'i8')) != 0;) { + if (c == sc) { + if (skip_leading_delim) { + continue cont; + } else { + setValue(lasts, s, 'i8*'); + setValue(s - 1, 0, 'i8'); + return s - 1; + } + } + } + break; + } + + if (c == 0) { + setValue(lasts, 0, 'i8*'); + return 0; + } + tok = s - 1; + + for (;;) { + c = getValue(s++, 'i8'); + spanp = delim; + do { + if ((sc = getValue(spanp++, 'i8')) == c) { + if (c == 0) { + s = 0; + } else { + setValue(s - 1, 0, 'i8'); + } + setValue(lasts, s, 'i8*'); + return tok; + } + } while (sc != 0); + } + abort('strtok_r error!'); + }, strerror_r__deps: ['$ERRNO_CODES', '$ERRNO_MESSAGES', '__setErrNo'], strerror_r: function(errnum, strerrbuf, buflen) { @@ -5057,7 +5104,7 @@ LibraryManager.library = { // var indexes = Runtime.calculateStructAlignment({ fields: ['i32', 'i32'] }); var me = _localeconv; if (!me.ret) { - me.ret = allocate([allocate(intArrayFromString('.'), 'i8', ALLOC_NORMAL)], 'i8', ALLOC_NORMAL); // just decimal point, for now + me.ret = allocate([allocate(intArrayFromString('.'), 'i8', ALLOC_NORMAL)], 'i8*', ALLOC_NORMAL); // just decimal point, for now } return me.ret; }, @@ -5493,8 +5540,8 @@ LibraryManager.library = { eval(Pointer_stringify(ptr)); }, - _Z21emscripten_run_scriptPKc: function(ptr) { - eval(Pointer_stringify(ptr)); + emscripten_run_script_int: function(ptr) { + return eval(Pointer_stringify(ptr)); }, $Profiling: { |