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 killed = false;
|
||||
|
||||
|
@ -1975,6 +1978,18 @@ module.exports = function setup(fsOptions) {
|
|||
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.kill = isOutput ? function(signal){
|
||||
// We dont want to really kill, just stop the process
|
||||
|
@ -1988,7 +2003,7 @@ module.exports = function setup(fsOptions) {
|
|||
emit("kill");
|
||||
});
|
||||
}
|
||||
|
||||
pty.suspended = true;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2022,7 +2037,7 @@ module.exports = function setup(fsOptions) {
|
|||
|
||||
var events = {};
|
||||
function forwardEvent(name){
|
||||
events[name] = [];
|
||||
events[name] = events[name] || [];
|
||||
|
||||
if (isOutput && (name == "exit" || name == "close" || name == "end")) {
|
||||
if (name != "exit") return;
|
||||
|
@ -2102,7 +2117,7 @@ module.exports = function setup(fsOptions) {
|
|||
if (session) {
|
||||
if (session.wait)
|
||||
session.wait.push(callback);
|
||||
else
|
||||
else if (session.pty && !session.pty.suspended)
|
||||
callback(null, { pty: session.pty });
|
||||
}
|
||||
else
|
||||
|
@ -2124,8 +2139,9 @@ module.exports = function setup(fsOptions) {
|
|||
var args = ["-l", "-i"];
|
||||
var name = options.session || getSessionId();
|
||||
|
||||
var session = { wait: [] };
|
||||
var session = sessions[name] || {};
|
||||
sessions[name] = session;
|
||||
if (!session.wait) session.wait = [];
|
||||
|
||||
if (options.idle)
|
||||
options.command = "echo '\033[2J\033[1;1H[Idle]'";
|
||||
|
@ -2167,7 +2183,7 @@ module.exports = function setup(fsOptions) {
|
|||
if (err) return callback(err);
|
||||
|
||||
session.pty = meta.pty =
|
||||
new PtyStream(meta.pty, options.output);
|
||||
new PtyStream(meta.pty, options.output, session.pty);
|
||||
|
||||
var wait = session.wait;
|
||||
delete session.wait;
|
||||
|
|
Ładowanie…
Reference in New Issue