aboutsummaryrefslogtreecommitdiff
path: root/src/postamble.js
diff options
context:
space:
mode:
authorDavid Claughton <dave@eclecticdave.com>2011-11-08 21:13:59 +0000
committerDavid Claughton <dave@eclecticdave.com>2011-12-03 01:29:44 +0000
commitca12d620e84fc5284976fb3ecfb8ef30ee7cfe4a (patch)
treeaec53cc648157cf6eab5469a472ba872c735da9e /src/postamble.js
parent62000632bb844fd0b6473ad0387ce3b82bc62909 (diff)
Modify exit() to throw an object and catch it.
* Changed exit from throwing an text string to throwing an Error-derived object encapsulating the exit status. Then catch it in 'callMain' and return the status. Enable this functionality by setting CATCH_EXIT_CODE in settings.js
Diffstat (limited to 'src/postamble.js')
-rw-r--r--src/postamble.js12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/postamble.js b/src/postamble.js
index c8fd44bd..51ffc6ee 100644
--- a/src/postamble.js
+++ b/src/postamble.js
@@ -17,7 +17,14 @@ Module.callMain = function callMain(args) {
argv.push(0);
argv = allocate(argv, 'i32', ALLOC_STATIC);
+#if CATCH_EXIT_CODE
+ try {
+ return _main(argc, argv, 0);
+ }
+ catch(e) { if (e.name == "ExitStatus") return e.status; throw e; }
+#else
return _main(argc, argv, 0);
+#endif
}
{{GLOBAL_VARS}}
@@ -49,7 +56,10 @@ Module['noInitialRun'] = true;
#endif
if (!Module['noInitialRun']) {
- run();
+ var ret = run();
+#if CATCH_EXIT_CODE
+ print('Exit Status: ' + ret);
+#endif
}
// {{POST_RUN_ADDITIONS}}