diff options
Diffstat (limited to 'tools/tty.js')
-rw-r--r-- | tools/tty.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tools/tty.js b/tools/tty.js new file mode 100644 index 00000000..395c48ec --- /dev/null +++ b/tools/tty.js @@ -0,0 +1,22 @@ +// workaround for tty output truncation on Node.js +try { + // prevent buffer overflow and other asynchronous bugs + process.stdout._handle.setBlocking(true); + process.stderr._handle.setBlocking(true); +} catch (e) { + // ensure output buffers are flushed before process termination + var exit = process.exit; + process.exit = function() { + var args = [].slice.call(arguments); + process.once("uncaughtException", function() { + (function callback() { + if (process.stdout.bufferSize || process.stderr.bufferSize) { + setTimeout(callback, 1); + } else { + exit.apply(process, args); + } + })(); + }); + throw exit; + }; +} |