diff --git a/AUTHORS b/AUTHORS index 3db02f2d3cb1d..24757d079506a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -2,6 +2,5 @@ The following authors have all licensed their contributions to Emscripten under the licensing terms detailed in LICENSE. * Alon Zakai (copyright owned by Mozilla Foundation) -* -* +* Tim Dawborn diff --git a/src/library.js b/src/library.js index c346dd41f2c05..704ba8a577e18 100644 --- a/src/library.js +++ b/src/library.js @@ -226,7 +226,7 @@ var Library = { }, fileno: function(file) { - return 1; // TODO + return file; }, isatty: function(file) { @@ -274,10 +274,10 @@ var Library = { } _stdout = Pointer_make([0], null, ALLOC_STATIC, 'void*'); - {{{ makeSetValue('_stdout', '0', "STDIO.prepare('<>', null, true)", 'i32') }}}; + {{{ makeSetValue('_stdout', '0', "STDIO.prepare('<>', null, true)", 'i32') }}}; _stderr = Pointer_make([0], null, ALLOC_STATIC, 'void*'); - {{{ makeSetValue('_stderr', '0', "STDIO.prepare('<>', null, true)", 'i32') }}}; + {{{ makeSetValue('_stderr', '0', "STDIO.prepare('<>', null, true)", 'i32') }}}; }, cleanFilename: function(filename) { return filename.replace('./', ''); @@ -456,7 +456,6 @@ var Library = { fputs__deps: ['$STDIO', 'fputc'], fputs: function(p, stream) { STDIO.write(stream, p, String_len(p)); - _fputc('\n'.charCodeAt(0), stream); }, fputc__deps: ['$STDIO'], @@ -482,6 +481,11 @@ var Library = { }, ungetc: function(chr, stream) { + var f = STDIO.streams[stream]; + if (!f) + return -1; // EOF + if (!f.interactiveInput) + f.position--; return chr; }, @@ -1199,6 +1203,10 @@ var Library = { return 100; }, + getgid: function() { + return 100; + }, + getpwuid: function(uid) { return 0; // NULL }, diff --git a/src/postamble.js b/src/postamble.js index 98d8f5786a5e2..9b61c0a7b3188 100644 --- a/src/postamble.js +++ b/src/postamble.js @@ -17,7 +17,7 @@ Module.callMain = function callMain(args) { argv.push(0); argv = Pointer_make(argv, null, ALLOC_STATIC, 'i32'); - _main(argc, argv, 0); + return _main(argc, argv, 0); } function run(args) { @@ -29,10 +29,12 @@ function run(args) { __globalConstructor__(); + var ret = null; if (Module['_main']) { - Module.callMain(args); + ret = Module.callMain(args); __shutdownRuntime__(); } + return ret; } Module['run'] = run; diff --git a/src/preamble.js b/src/preamble.js index 8cf87bfdc7f16..b5a8930ae7a7c 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -549,7 +549,7 @@ function jrint(label, obj) { // XXX manual debugging // This processes a JS string into a C-line array of numbers, 0-terminated. // For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy) { +function intArrayFromString(stringy, dontAddNull) { var ret = []; var t; var i = 0; @@ -557,7 +557,8 @@ function intArrayFromString(stringy) { ret.push(stringy.charCodeAt(i)); i = i + 1; } - ret.push(0); + if (!dontAddNull) + ret.push(0); return ret; } Module['intArrayFromString'] = intArrayFromString;