fix broken bashspawn on windows

pull/152/head
nightwing 2015-09-06 19:08:38 +04:00
rodzic 3111c46e92
commit 6a6fdd6940
1 zmienionych plików z 22 dodań i 6 usunięć

28
node_modules/vfs-local/localfs.js wygenerowano vendored
Wyświetl plik

@ -1955,7 +1955,10 @@ module.exports = function setup(fsOptions) {
} }
} }
function PtyStream(pty, isOutput){ function PtyStream(pty, isOutput, old){
if (old) {
return old.attachTo(pty, isOutput);
}
var exited = false; var exited = false;
var killed = false; var killed = false;
@ -1975,6 +1978,18 @@ module.exports = function setup(fsOptions) {
pty.kill = function() {}; pty.kill = function() {};
} }
this.attachTo = function(newPty) {
pty = newPty;
exited = false;
killed = false;
this.readable = true;
this.writable = true;
Object.keys(events).forEach(forwardEvent);
return this;
}
this.killtree = this.killtree =
this.kill = isOutput ? function(signal){ this.kill = isOutput ? function(signal){
// We dont want to really kill, just stop the process // We dont want to really kill, just stop the process
@ -1988,7 +2003,7 @@ module.exports = function setup(fsOptions) {
emit("kill"); emit("kill");
}); });
} }
pty.suspended = true;
return; return;
} }
@ -2022,7 +2037,7 @@ module.exports = function setup(fsOptions) {
var events = {}; var events = {};
function forwardEvent(name){ function forwardEvent(name){
events[name] = []; events[name] = events[name] || [];
if (isOutput && (name == "exit" || name == "close" || name == "end")) { if (isOutput && (name == "exit" || name == "close" || name == "end")) {
if (name != "exit") return; if (name != "exit") return;
@ -2102,7 +2117,7 @@ module.exports = function setup(fsOptions) {
if (session) { if (session) {
if (session.wait) if (session.wait)
session.wait.push(callback); session.wait.push(callback);
else else if (session.pty && !session.pty.suspended)
callback(null, { pty: session.pty }); callback(null, { pty: session.pty });
} }
else else
@ -2124,8 +2139,9 @@ module.exports = function setup(fsOptions) {
var args = ["-l", "-i"]; var args = ["-l", "-i"];
var name = options.session || getSessionId(); var name = options.session || getSessionId();
var session = { wait: [] }; var session = sessions[name] || {};
sessions[name] = session; sessions[name] = session;
if (!session.wait) session.wait = [];
if (options.idle) if (options.idle)
options.command = "echo '\033[2J\033[1;1H[Idle]'"; options.command = "echo '\033[2J\033[1;1H[Idle]'";
@ -2167,7 +2183,7 @@ module.exports = function setup(fsOptions) {
if (err) return callback(err); if (err) return callback(err);
session.pty = meta.pty = session.pty = meta.pty =
new PtyStream(meta.pty, options.output); new PtyStream(meta.pty, options.output, session.pty);
var wait = session.wait; var wait = session.wait;
delete session.wait; delete session.wait;