aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS3
-rw-r--r--src/library.js16
-rw-r--r--src/postamble.js6
-rw-r--r--src/preamble.js5
4 files changed, 20 insertions, 10 deletions
diff --git a/AUTHORS b/AUTHORS
index 3db02f2d..24757d07 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 <alonzakai@gmail.com> (copyright owned by Mozilla Foundation)
-*
-*
+* Tim Dawborn <tim.dawborn@gmail.com>
diff --git a/src/library.js b/src/library.js
index c346dd41..704ba8a5 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('<<stdin>>', null, true)", 'i32') }}};
+ {{{ makeSetValue('_stdout', '0', "STDIO.prepare('<<stdout>>', null, true)", 'i32') }}};
_stderr = Pointer_make([0], null, ALLOC_STATIC, 'void*');
- {{{ makeSetValue('_stderr', '0', "STDIO.prepare('<<stdin>>', null, true)", 'i32') }}};
+ {{{ makeSetValue('_stderr', '0', "STDIO.prepare('<<stderr>>', 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 98d8f578..9b61c0a7 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 8cf87bfd..b5a8930a 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;