aboutsummaryrefslogtreecommitdiff
path: root/tools/tty.js
blob: 395c48ecf558fb8a3e6607c3636230c20e111b7b (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
    };
}