-
Rob Swindell authored
Performance improvement
Rob Swindell authoredPerformance improvement
shell_lib.js 11.54 KiB
// Library for writing command shells
// portions derived from classic_shell.js, default.src, and exec*.cpp
// @format.tab-size 4
"use strict";
require("sbbsdefs.js", "USER_EXPERT");
require("gettext.js", "gettext");
// Build list of current subs/dirs in each group/library
// This hack is required because the 'bbs' object doesn't expose the current
// sub/dir for any group/library except the current
var curgrp = bbs.curgrp;
var curlib = bbs.curlib;
var cursub = [];
var curdir = [];
var usrsubs = [];
var usrdirs = [];
var usrgrps = msg_area.grp_list.length;
var usrlibs = file_area.lib_list.length;
for(var i = 0; i < usrgrps; ++i) {
bbs.curgrp = i;
cursub[i] = bbs.cursub;
usrsubs[i] = msg_area.grp_list[i].sub_list.length;
}
for(var i = 0; i < usrlibs; ++i) {
bbs.curlib = i;
curdir[i] = bbs.curdir;
usrdirs[i] = file_area.lib_list[i].dir_list.length;
}
bbs.curgrp = curgrp;
bbs.curlib = curlib;
function get_num(str, max)
{
var num = Number(str);
while(bbs.online && !js.terminated) {
if(num * 10 > max)
break;
var ch = console.getkey(K_UPPER);
if(ch < '0' || ch > '9') {
if(ch > ' ')
console.ungetstr(ch);
break;
}
console.print(ch);
num *= 10;
num += Number(ch);
if(num > max)
return 0;
}
return num;
}
function get_grp_num(str)
{
var num = get_num(str, usrgrps);
if(num > 0)
bbs.curgrp = num -1;
}
function get_sub_num(str)
{
var num = get_num(str, usrsubs[bbs.curgrp]);
if(num > 0)
bbs.cursub = num - 1;
}
function get_lib_num(str)