Commits (1)
  • Rob Swindell's avatar
    Fix long-standing issue with external program name display · 82b3374f
    Rob Swindell authored
    Especially for Guest (G-Exempt) accounts which support multiple
    concurrent logons - the 'curxtrn' value stored in the user's record
    may not match the external program that was actually last executed
    on the node in question, so use the .aux property value (from
    node.dab) as is done in the C++ code (e.g. printnodedat()). This insures
    that the node_status() output here matches the C/C++ code output
    (e.g. when logging on the terminal server).
    
    Still support the 'code-based' external program name look-up since
    that usage is relied upon by other modules, but when a number is
    passed, use the number to find the right external progarm name
    (and we need to subtract one, since aux is a 1-based number).
    
    I've looked at this problem a couple of times before and not sure why
    I didn't see the solution. <shrug>
    82b3374f
......@@ -9,9 +9,15 @@ require("sbbsdefs.js", 'USER_DELETED');
"use strict";
// Returns a string, hopefully the full name of the External Program referenced by 'code'
// Returns a string, hopefully the full name of the External Program referenced by 'code'
// or referenced by 1-based number (as stored in node.dab 'aux' field)
function xtrn_name(code)
{
if(typeof code == 'number') {
for(var i in xtrn_area.prog)
if(xtrn_area.prog[i].number == code - 1)
return xtrn_area.prog[i].name;
}
if(xtrn_area.prog[code] != undefined && xtrn_area.prog[code].name != undefined)
return xtrn_area.prog[code].name;
return code;
......@@ -187,9 +193,9 @@ function node_status(node, is_sysop, options, num)
break;
case NODE_XTRN:
if(node.aux)
output += "running " + xtrn_name(user.curxtrn);
output += "running " + xtrn_name(node.aux);
else
output += format(NodeAction[node.action], node.aux);
output += NodeAction[node.action];
break;
default:
output += format(NodeAction[node.action], node.aux);
......