kopia lustrzana https://github.com/c9/core
fix broken bashspawn on windows
rodzic
3111c46e92
commit
6a6fdd6940
|
@ -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;
|
||||||
|
|
Ładowanie…
Reference in New Issue