diff --git a/bin/uglifyjs b/bin/uglifyjs index a2a02575..4b790f4b 100755 --- a/bin/uglifyjs +++ b/bin/uglifyjs @@ -301,9 +301,19 @@ if (specified["in-situ"]) { process.stdin.setEncoding("utf8"); process.stdin.once("data", function() { clearTimeout(timerId); - }).on("data", function(chunk) { + }).on("data", process.stdin.isTTY ? function(chunk) { + // emulate console input termination via Ctrl+D / Ctrl+Z + var match = /[\x04\x1a]\r?\n?$/.exec(chunk); + if (match) { + chunks.push(chunk.slice(0, -match[0].length)); + process.stdin.pause(); + process.stdin.emit("end"); + } else { + chunks.push(chunk); + } + } : function(chunk) { chunks.push(chunk); - }).on("end", function() { + }).once("end", function() { files = { STDIN: chunks.join("") }; run(); }); diff --git a/tools/tty.js b/tools/tty.js index 395c48ec..d219581c 100644 --- a/tools/tty.js +++ b/tools/tty.js @@ -6,7 +6,7 @@ try { } catch (e) { // ensure output buffers are flushed before process termination var exit = process.exit; - process.exit = function() { + if ("bufferSize" in process.stdout) process.exit = function() { var args = [].slice.call(arguments); process.once("uncaughtException", function() { (function callback() {