aboutsummaryrefslogtreecommitdiff
path: root/tools/tty.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/tty.js')
-rw-r--r--tools/tty.js22
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;
+ };
+}