From 8c06325e634f31319e01ed2806c8846e2f7c6603 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Mon, 20 Jun 2016 21:38:43 -0600 Subject: [PATCH] * Try to clean up terminal stuff set by doors @ exit --- core/door.js | 9 ++++++--- mods/abracadabra.js | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/core/door.js b/core/door.js index 2862be4b..da106ce6 100644 --- a/core/door.js +++ b/core/door.js @@ -2,7 +2,6 @@ 'use strict'; const events = require('events'); - const _ = require('lodash'); const pty = require('ptyw.js'); const decode = require('iconv-lite').decode; @@ -80,6 +79,10 @@ function Door(client, exeInfo) { return cb(null); } }; + + this.doorExited = function() { + self.emit('finished'); + }; } require('util').inherits(Door, events.EventEmitter); @@ -90,7 +93,7 @@ Door.prototype.run = function() { this.prepareSocketIoServer( (err, sockServer) => { if(err) { this.client.log.warn( { error : err.toString() }, 'Failed executing door'); - return self.emit('finished'); + return self.doorExited(); } // Expand arg strings, e.g. {dropFile} -> DOOR32.SYS @@ -140,7 +143,7 @@ Door.prototype.run = function() { door.removeAllListeners(); - self.emit('finished'); + return self.doorExited(); }); }); }; diff --git a/mods/abracadabra.js b/mods/abracadabra.js index 665a5ffe..4596fb4a 100644 --- a/mods/abracadabra.js +++ b/mods/abracadabra.js @@ -11,7 +11,6 @@ let async = require('async'); let assert = require('assert'); let paths = require('path'); let _ = require('lodash'); -let net = require('net'); let mkdirs = require('fs-extra').mkdirs; // :TODO: This should really be a system module... needs a little work to allow for such @@ -20,8 +19,6 @@ exports.getModule = AbracadabraModule; let activeDoorNodeInstances = {}; -let doorInstances = {}; // name -> { count : , { : } } - exports.moduleInfo = { name : 'Abracadabra', desc : 'External BBS Door Module', @@ -166,6 +163,18 @@ function AbracadabraModule(options) { const doorInstance = new door.Door(self.client, exeInfo); doorInstance.once('finished', () => { + // + // Try to clean up various settings such as scroll regions that may + // have been set within the door + // + self.client.term.rawWrite( + ansi.normal() + + ansi.goto(self.client.term.termHeight, self.client.term.termWidth) + + ansi.setScrollRegion() + + ansi.goto(self.client.term.termHeight, 0) + + '\r\n\r\n' + ); + self.prevMenu(); });