Skip to content
Snippets Groups Projects
Commit b11c94c5 authored by mcmlxxix's avatar mcmlxxix
Browse files

* Harness the awesome power of BAJA with JavaScript!

* Watch as it turns your BAJA program into a non-functional mess of JavaScript code!
* Feel it touch you inappropriately!
parent 4fe669a9
No related branches found
No related tags found
No related merge requests found
/** BAJA to JavaScript translation library
don't expect this to produce working scripts.
it is meant as a starting point and time-saver
for those who wish to convert a BAJA source file
to JavaScript.
~mcmlxxix/echicken
$id: $ **/
BAJA = new (function() {
/* load baja command library */
load("bajalib.js");
/* baja source file */
var srcName = argv[0];
/* js output file */
var destName = argv[1];
/* include directories */
var locations = [
js.exec_dir,
system.exec_dir,
system.mods_dir,
system.exec_dir + "load/",
system.mods_dir + "load/"
];
/* handle your shit */
if(!srcName)
srcName = prompt("Enter BAJA source file name: ");
if(!destName)
destName = prompt("Enter JavaScript output file name: ");
/* load BAJA file contents */
function open(fName) {
for(var i=0;i<locations.length && !file_exists(fName);i++) {
fName = locations[i] + file_getname(fName);
}
if(!file_exists(fName))
throw("file not found: " + fName);
var f = new File(fName);
log("loading source file: " + f.name);
if(!f.open('r',false))
throw("error opening file: " + f.name);
var data = f.readAll();
f.close();
return data;
}
/* main loop */
function parse(data,script) {
if(!script)
script = [
"const FALSE = NOT_EQUAL = 0, TRUE = EQUAL = (1<<0), LESS = (1<<1), GREATER = (1<<2);",
"system.baja = { logicState:TRUE, userInput:'', cmdKey:'', temp:'', errNo : 0, etx:'', dir:0 };"
];
while(data.length > 0) {
var line = data.shift();
/* trim spaces */
line = trim(line);
try {
/* parse baja */
if(!consume(script,line)) {
script.push("// PARSING ERROR: " + line);
}
} catch(e) {
log(e);
log(e.stack);
}
}
return script;
}
/* trim leading and trailing spaces */
function trim(str) {
return str.replace(/(^[\t\s]+|[\t\s]+$)/,'');
}
/* parse a line of baja code */
function consume(script, line) {
/* handle blank lines */
if(trim(line).length == 0) {
script.push("");
return true;
}
/* remove comments (and put on own line) */
var comment = line.match(/[\t\s]*\#(.*)/);
if(comment) {
script.push("//" + comment[1]);
line = line.replace(/[\t\s]*\#.*/,'');
}
/* if string is empty after comment is stripped, ignore */
if(trim(line).length == 0)
return true;
//log(line);
/* set labels */
if(line[0] == ":") {
script.push(line.substr(1) + ":");
script.push(line.substr(1) + " = (function() {");
return true;
}
/* handle !includes */
var inc = line.match(/^\!include[\t\s]+(.*)/i);
if(inc) {
if(line.match(/sbbsdefs/i))
script.push("load(\"sbbsdefs.js\");");
else if(line.match(/userdefs/i))
script.push("load(\"userdefs.js\");");
else if(line.match(/nodedefs/i))
script.push("load(\"nodedefs.js\");");
else {
var d = open(inc[1]);
script.push("/** BEGIN FILE IMPORT: " + inc[1] + " **/");
parse(d,script);
script.push("/** END FILE IMPORT: " + inc[1] + " **/");
}
return true;
}
/* handle defs */
var def = line.match(/^\!define[\t\s]+(.*)[\t\s]+(.*)/i);
if(def && def[1] && def[2]) {
var bit = def[2].match(/\.(\d+)/);
if(bit)
def[2] = "(1<<" + bit[1] + ")";
script.push("var " + def[1] + " = " + def[2] + ";");
return true;
}
/* handle globals */
var glob = line.match(/^\!global[\t\s]+(.*)/i);
if(glob && glob[1]) {
/* parse object path: _USERON.ALIAS */
var path = glob[1].split(".");
var path_string = "";
var global = globals;
while(path.length > 0) {
/* object properties: _USERON, ALIAS */
var prop = path.shift();
path_string += prop;
/* define the property if it's not already */
if(!global[prop]) {
if(path.length > 0) {
script.push(path_string + " = {};");
global[prop] = {};
}
else {
script.push(path_string + " = undefined;");
global[prop] = undefined;
}
}
/* climb into the object */
global = global[prop];
path_string += ".";
}
return true;
}
/* handle other shit */
line = line.match(/([^\s"]+|"[^"]*")/g);
if(baja[line[0].toUpperCase()]) {
var cmd = line[0].toUpperCase();
var args = line.slice(1);
var str = baja[cmd].apply({},args);
if(str != undefined) {
str = str.split(/\r\n/);
while(str.length > 0)
script.push(str.shift());
}
return true;
}
/* unhandled line */
return false;
}
/* format raw code */
function form(array) {
var output = [];
var depth = 0;
for(var l=0;l<array.length;l++) {
var line = array[l];
/* check for depth increment triggers */
if(line.match(/^[^\}]*\{[^\}]*$|case[\t\s]+.*\:/)) {
output.push(tabs(depth) + line);
depth++;
}
/* check for depth decrement triggers */
else if(line.match(/^[^\{]*\}[^\{]*$|break\;/i)) {
depth--;
if(depth < 0)
depth = 0;
output.push(tabs(depth) + line);
}
else {
output.push(tabs(depth) + line);
}
}
return output;
}
/* get a string containing specified number of tabs */
function tabs(num) {
return format("%*s",num,'').replace(/\s/g,'\t');
}
/* save javascript */
function close(fName,data) {
var f = new File(fName);
log("saving javascript file: " + f.name);
if(!f.open('w',true))
throw("error opening file: " + f.name);
f.writeAll(data);
f.close();
}
var data = open(srcName);
var script = parse(data);
var output = form(script);
close(destName,output);
})();
// [6.1] - Quick Function Reference
var baja = {};
var globals = {};
var functions = {};
var variables = {};
var labels = [];
var labelCount = 0;
var ifLevel = false;
// String Manipulation Functions
// -----------------------------
// STR <str_var> [str_var] [...]
baja["STR"] = function() {
var line = "var " + arguments[0];
variables[arguments[0]] = "STR";
for(var a=1;a<arguments.length;a++) {
line += ", " + arguments[a];
variables[arguments[a]] = "STR";
}
return line + ";";
}
// GLOBAL_STR <str_var> [str_var] [...]
baja["GLOBAL_STR"] = function() {
var line = "";
for(var a=0;a<arguments.length;a++) {
line += arguments[a] + " = ";
variables[arguments[a]] = "STR";
}
return line + "undefined;";
}
// SET <str_var> <"cstr">
// SET <int_var> <#>
baja["SET"] = function(var1, var2) {
if(variables[var1] == "STR")
return var1 + " = " + var2 + ";";
if(variables[var1] == "INT")
return var1 + " = Number(" + var2 + ");";
}
// COPY <str_var> <any_var>
baja["COPY"] = baja["SET"];
// SWAP <str_var> <any_var>
baja["SWAP"] = function(var1,var2) {
var line = "system.baja.temp = " + var1 + ";\r\n";
line += var1 + " = " + var2 + ";\r\n";
line += var2 + " = system.baja.temp;";
return line;
}
// STRCAT <str_var> <str_var or "cstr">
baja["STRCAT"] = function() {
var line = arguments[0] + " = " + arguments[0];
for(var a=1;a<arguments.length;a++)
line += " + " + arguments[a];
return line + ";";
}
// SPRINTF <str_var> <"cstr"> <any_var> [any_var] [...]
baja["SPRINTF"] = function() {
line = arguments[0] + " = " + "format(" + arguments[1];
for(var a=2;a<arguments.length;a++)
line += ", " + arguments[a];
return line + ");";
}
// TIME_STR <str_var> <int_var>
baja["TIME_STR"] = function(var1,var2) {
return var1 + " = system.timestr(" + var2 + ");";
}
// DATE_STR <str_var> <int_var>
baja["DATE_STR"] = function(var1,var2) {
return var1 + " = system.datestr(" + var2 + ");";
}
// SECOND_STR <str_var> <int_var>
baja["SECOND_STR"] = function(var1,var2) {
return var1 + " = system.secondstr(" + var2 + ");";
}
// FTIME_STR <str_var> <"cstr"> <int_var>
baja["FTIME_STR"] = function(var1,var2,var3) {
return format("%s = strftime(%s,%s);",var1,var2,var3);
}
// SHIFT_STR [str_var] <#>
baja["SHIFT_STR"] = function(var1,var2) {
if(!var2)
return "bbs.command_str = bbs.command_str.substr(" + var1 + ");";
return var1 + " = " + var1 + ".substr(" + var2 + ");";
}
// STRIP_CTRL [str_var]
baja["STRIP_CTRL"] = function(var1) { return "strip_ctrl(" + var1 + ");"; }
// TRUNCSP [str_var]
baja["TRUNCSP"] = function(var1) { return "truncsp(" + var1 + ");"; }
// STRUPR [str_var]
baja["STRUPR"] = function(var1) { return var1 + ".toUpperCase();"; }
// STRLWR [str_var]
baja["STRLWR"] = function(var1) { return var1 + ".toLowerCase();"; }
// SETSTR <"cstr">
baja["SETSTR"] = function(var1) { return "bbs.command_str = " + var1 + ";"; }
// REPLACE_TEXT <#> <"cstr">
baja["REPLACE_TEXT"] = function(var1,var2) { return format("bbs.replace_text(%s,%s);",var1,var2); }
// LOAD_TEXT <"str">
baja["LOAD_TEXT"] = function(var1) { return format("bbs.load_text(%s);",var1); }
// REVERT_TEXT <# or ALL>
baja["REVERT_TEXT"] = function(var1) { return format("bbs.revert_text(%s);",var1); }
// Integer Manipulation Functions
// ------------------------------
// INT <int_var> [int_var] [...]
baja["INT"] = function() {
var line = "var " + arguments[0];
variables[arguments[0]] = "INT";
for(var a=1;a<arguments.length;a++) {
line += ", " + arguments[a];
variables[arguments[a]] = "INT";
}
return line + ";";
}
// GLOBAL_INT <int_var> [int_var] [...]
baja["GLOBAL_INT"] = function() {
var line = "";
for(var a=0;a<arguments.length;a++) {
line += arguments[a] + " = ";
variables[arguments[a]] = "INT";
}
return line + "undefined;";
}
// ADD <int_var> <any_var or #>
baja["ADD"] = function(num1,num2) { return num1 + " += " + num2 + ";"; }
// SUB <int_var> <any_var or #>
baja["SUB"] = function(num1,num2) { return num1 + " -= " + num2 + ";"; }
// MUL <int_var> <any_var or #>
baja["MUL"] = function(num1,num2) { return num1 + " *= " + num2 + ";"; }
// DIV <int_var> <any_var or #>
baja["DIV"] = function(num1,num2) { return num1 + " /= " + num2 + ";"; }
// MOD <int_var> <any_var or #>
baja["MOD"] = function(num1,num2) { return num1 + " %= " + num2 + ";"; }
// AND <int_var> <any_var or #>
baja["AND"] = function(num1,num2) { return num1 + " &= " + num2 + ";"; }
// OR <int_var> <any_var or #>
baja["OR"] = function(num1,num2) { return num1 + " |= " + num2 + ";"; }
// NOT <int_var> <any_var or #>
baja["NOT"] = function(num1,num2) { return num1 + " &= ~" + num2 + ";"; }
// XOR <int_var> <any_var or #>
baja["XOR"] = function(num1,num2) { return num1 + " ^= " + num2 + ";"; }
// COPY <int_var> <any_var>
baja["COPY"] = function(var1, var2) { return 'var1 = var2.toString();'; }
// SWAP <int_var> <any_var>
baja["SWAP"] = function(var1, var2) { return 'var2 = [var1, var1 = var2][0];' };
// RANDOM <int_var> <#>
baja["RANDOM"] = function(var1,num1) { return var1 + " = Math.random() * " + num1 + ";"; }
// TIME <int_var>
baja["TIME"] = function(var1) { return var1 + " = time();"; }
// STRLEN <int_var> <str_var>
baja["STRLEN"] = function(var1,var2) { return var1 + " = console.strlen(" + var2 + ");"; }
// DATE_INT <int_var> <str_var>
baja["DATE_INT"] = function(var1,var2) {
var line = var1 + " = new Date(";
var2 = var2.replace(/(\d{2})\/(\d{2})\/(\d{2})/,"$1/$2/20$3");
return line + var2 + ");";
}
// CRC16 <int_var> <str_var>
baja["CRC16"] = function(var1,var2) { return var1 + " = crc16_calc(" + var2 + ");"; }
// CRC32 <int_var> <str_var>
baja["CRC32"] = function(var1,var2) { return var1 + " = crc32_calc" + var2 + ");"; }
// CHKSUM <int_var> <str_var>
baja["CHKSUM"] = function(var1,var2) { return var1 + " = chksum_calc" + var2 + ");"; }
// CHARVAL <int_var> <str_var>
baja["CHARVAL"] = function(var1,var2) { return var1 + " = " + var2 + ".charCodeAt(0);"; }
// Logic/Control Flow Functions
// ----------------------------
// GOTO <txt>
baja["GOTO"] = function(label) { return "continue " + label + ";"; }
// CALL <txt>
baja["CALL"] = function(label) { return label + "();"; }
// RETURN
baja["RETURN"] = function() { return "return;\r\n})();"; }
// SETLOGIC <TRUE or FALSE or GREATER or LESS>
baja["SETLOGIC"] = function(var1) { return "system.baja.logicState = " + var1.toUpperCase() + ";"; }
// COMPARE <any_var> <any_var or "cstr" or #>
baja["COMPARE"] = function(var1,var2) {
var line = "";
if(!functions["compare"]) {
functions["compare"] = true;
line += "system.baja.compare = " + compare.toSource() + "\r\n";
}
return line + "system.baja.compare(" + var1 + "," + var2 + ");";
}
// IF_EQUAL
baja["IF_EQUAL"] = function() {
ifLevel = true;
return "if(system.baja.logicState == TRUE) {";
}
// IF_TRUE
baja["IF_TRUE"] = baja["IF_EQUAL"];
// IF_NOT_EQUAL
baja["IF_NOT_EQUAL"] = function() {
ifLevel = true;
return "if(system.baja.logicState == FALSE) {";
}
// IF_FALSE
baja["IF_FALSE"] = baja["IF_NOT_EQUAL"];
// IF_GREATER
baja["IF_GREATER"] = function() {
ifLevel = true;
return "if(system.baja.logicState == GREATER) {";
}
// IF_GREATER_OR_EQUAL
baja["IF_GREATER_OR_EQUAL"] = function() {
ifLevel = true;
return "if(system.baja.logicState == GREATER || system.baja.logicState == TRUE) {";
}
// IF_LESS
baja["IF_LESS"] = function() {
ifLevel = true;
return "if(system.baja.logicState == LESS) {";
}
// IF_LESS_OR_EQUAL
baja["IF_LESS_OR_EQUAL"] = function() {
ifLevel = true;
return "if(system.baja.logicState == LESS || system.baja.logicState == EQUAL) {";
}
// ELSE
baja["ELSE"] = function() { return "}\r\nelse {"; }
// END_IF
baja["END_IF"] = function() {
ifLevel = false;
return "}";
}
baja["ENDIF"] = baja["END_IF"];
// SWITCH <int_var>
baja["SWITCH"] = function(var1) { return "switch(" + var1 + ") {"; }
// CASE <#>
baja["CASE"] = function(var1) { return "case " + var1 + ":"; }
// DEFAULT
baja["DEFAULT"] = function() { return "default:"; }
// END_CASE
baja["END_CASE"] = function() { return "break;"; }
// END_SWITCH
baja["END_SWITCH"] = function() { return "}"; }
// CMD_HOME
baja["CMD_HOME"] = function() {
var newLabel = "label" + labelCount++;
labels.push(newLabel);
var line = newLabel + ":\r\n";
return line + "while(!js.terminated) {";
}
// CMDKEY <key>
baja["CMDKEY"] = function(var1) {
ifLevel = false;
if(var1.toUpperCase() == "DIGIT")
return "if(system.baja.cmdKey.match(/\d/)) {";
if(var1.toUpperCase() == "EDIGIT")
return "if(system.baja.cmdKey.match(/\/\d/)) {";
if(var1.match(/'[^']*/))
return "if(\"" + var1 + "\" == system.baja.cmdKey) {";
if(var1.match(/\^*/))
return "if(ctrl(\"" + var1[1] + "\") == system.baja.cmdKey) {";
return "if(\"" + var1.toUpperCase() + "\" == system.baja.cmdKey.toUpperCase()) {";
}
// CMDKEYS <keylist>
baja["CMDKEYS"] = function(var1) {
ifLevel = false;
return "if(\"" + var1 + "\".indexOf(system.baja.cmdKey) >= 0) {";
}
// CMDSTR <"cstr">
baja["CMDSTR"] = function(var1) {
ifLevel = false;
return "if(\"" + var1 + "\".toUpperCase() == bbs.command_str.toUpperCase()) {";
}
// END_CMD
baja["END_CMD"] = function() {
if(!labels.length)
return "}";
var line = "continue " + labels[labels.length-1] + ";";
if(!ifLevel)
line += "\r\n}";
return line;
}
// CMD_POP
baja["CMD_POP"] = function() {
labels.pop();
return "}";
}
// COMPARE_KEY <key>
baja["COMPARE_KEY"] = function(var1) {
return "system.baja.logicState = (" + var1 + " == system.baja.cmdKey?TRUE:FALSE);";
}
// COMPARE_KEYS <keylist>
baja["COMPARE_KEYS"] = function(var1) {
return "system.baja.logicState = (" + var1 + ".indexOf(system.baja.cmdKey) >= 0?TRUE:FALSE);";
}
// COMPARE_STR <"cstr">
baja["COMPARE_STR"] = function(var1) {
return "system.baja.logicState = (" + var1 +
".toUpperCase() == bbs.command_str.toUpperCase()?TRUE:FALSE);";
}
// COMPARE_WORD <"cstr">
baja["COMPARE_WORD"] = function(var1) {
return "system.baja.logicState = (bbs.command_str.toUpperCase().indexOf(" +
var1 + ".toUpperCase()) == 0?TRUE:FALSE);";
}
// COMPARE_ARS <ars>
baja["COMPARE_ARS"] = function(var1) {
return "system.baja.logicState = (user.compare_ars(" + var1 + ")?TRUE:FALSE);";
}
// COMPARE_STRN <#> <str_var> <str_var or "cstr">
baja["COMPARE_STRN"] = function(var1,var2,var3) {
return format("system.baja.logicState = (%s.substr(0,%s).toUpperCase() == %s.substr(0,%s).toUpperCase()?TRUE:FALSE);",
var2,var1,var3,var1);
}
// COMPARE_SUBSTR <str_var> <str_var or "cstr">
baja["COMPARE_SUBSTR"] = function(var1,var2) {
return "system.baja.logicState = (" + var1 + ".indexOf(" +
var2 + ") >= 0?TRUE:FALSE);";
}
// Display Functions
// -----------------
// PRINT <"cstr" or any_var>
baja["PRINT"] = function(var1) { return "console.print(" + var1 + ");"; }
// PRINTF <"cstr"> <any_var> [any_var] [...]
baja["PRINTF"] = function() {
var line = "printf(" + arguments[0];
for(var a=1;a<arguments.length;a++)
line += ", " + arguments[a];
return line + ");";
}
// PRINT_LOCAL <"cstr">
baja["PRINT_LOCAL"] = function(var1) { return "log(" + var1 + ");"; }
// PRINT_REMOTE <"cstr">
baja["PRINT_REMOTE"] = baja["PRINT"];
// PRINTSTR
baja["PRINTSTR"] = function(var1) { return "console.print(bbs.command_str);"; }
// PRINTKEY
baja["PRINTKEY"] = function(var1) { return "console.print(system.baja.cmdKey);"; }
// MNEMONICS <"cstr">
baja["MNEMONICS"] = function(var1) { return "console.mnemonics(" + var1 + ");"; }
// CLS
baja["CLS"] = function() { return "console.clear();"; }
// CRLF
baja["CRLF"] = function() { return "console.crlf();"; }
// PRINTFILE <"str" or str_var> [#]
baja["PRINTFILE"] = function(var1, var2) {
return format("console.printfile(%s,%s);",var1,var2);
}
// PRINTTAIL <str_var> <#> <#>
baja["PRINTTAIL"] = function(var1,var2,var3) {
return format("console.printtail(%s,%s,%s);",var1,var3,var2);
}
// PRINTFILE_STR
baja["PRINTFILE_STR"] = function(var1) {
return "console.printfile(bbs.command_str);";
}
// PRINTFILE_LOCAL <"str">
baja["PRINTFILE_LOCAL"] = baja["PRINTFILE"];
// PRINTFILE_REMOTE <"str">
baja["PRINTFILE_REMOTE"] = baja["PRINTFILE"];
// LIST_TEXT_FILE
baja["LIST_TEXT_FILE"] = function(var1, var2) {
var line = "if(bbs.check_syspass()) {\r\n";
return line + ("console.printfile(%s,%s);\r\n}",var1,var2);
}
// EDIT_TEXT_FILE
baja["EDIT_TEXT_FILE"] = function(var1, var2) {
var line = "if(bbs.check_syspass()) {\r\n";
return line + ("console.editfile(%s,%s);\r\n}",var1,var2);
}
// PAUSE
baja["PAUSE"] = function() { return "console.pause();"; }
// MENU <"str">
baja["MENU"] = function(var1) { return "bbs.menu(" + var1 + ");"; }
// NODELIST_ALL
baja["NODELIST_ALL"] = function() { return "bbs.list_nodes();"; }
// NODELIST_USERS
baja["NODELIST_USERS"] = function() { return "bbs.whos_online();"; }
// USERLIST_SUB
baja["USERLIST_SUB"] = function() { return "bbs.list_users(2);"; }
// USERLIST_DIR
baja["USERLIST_DIR"] = function() { return "bbs.list_users(1);"; }
// USERLIST_ALL
baja["USERLIST_ALL"] = function() { return "bbs.list_users(0);"; }
// USERLIST_LOGONS
baja["USERLIST_LOGONS"] = function() { return "bbs.list_logons();"; }
// YES_NO <"cstr">
baja["YES_NO"] = function(var1) {
return "system.baja.logicState = (console.yesno(" + var1 + ")?TRUE:FALSE);";
}
// NO_YES <"cstr">
baja["NO_YES"] = function(var1) {
return "system.baja.logicState = (console.noyes(" + var1 + ")?TRUE:FALSE);";
}
// READ_SIF <"str">
baja["READ_SIF"] = function(var1) {
var line = '';
if(!functions["SIF"]) {
functions["SIF"] = true;
line += 'load("siflib.js");\r\n';
}
return line + 'SIF.read(' + var1 + '.sif,bbs.command_str);';
}
// SAVELINE
baja["SAVELINE"] = function() { return "console.saveline();"; }
// RESTORELINE
baja["RESTORELINE"] = function() { return "console.restoreline();"; }
// Input Functions
// ---------------
// INKEY
baja["INKEY"] = function() {
return
'system.baja.temp = console.inkey();\r\n' +
'if(system.baja.temp != "") {\r\n' +
'system.baja.logicState = TRUE;\r\n' +
'system.baja.cmdKey = system.baja.temp;\r\n' +
'} else {\r\n' +
'system.baja.logicState = FALSE;\r\n' +
'}';
}
// GETKEY
baja["GETKEY"] = function() { return 'system.baja.cmdKey = console.getkey().toUpperCase();'; }
// GETKEYE
baja["GETKEYE"] = function() {
return
'system.baja.temp = console.getkey().toUpperCase();\r\n' +
'if(system.baja.temp == "/")\r\n' +
'system.baja.cmdKey = "/" + console.getkey().toUpperCase();\r\n' +
'else\r\n' +
'system.baja.cmdKey = system.baja.temp;';
}
// GETCMD <"cstr">
baja["GETCMD"] = function(var1) {
return 'system.baja.cmdKey = console.getkeys(\"' + var1 + '\").toUpperCase();';
}
// GETSTR [str_var] [#] [#]
baja["GETSTR"] = function(var1,var2,var3) {
var str = var1;
var len = var2;
var mode = var3;
/* an argument is missing! */
if(!var3) {
if(!isNaN(var1)) {
len = var1;
str = "bbs.command_str";
mode = var2;
}
else if(var1.indexOf('K_') >= 0) {
len = 128;
str = "bbs.command_str";
mode = var1;
}
else if(var1) {
len = 128;
mode = var2;
}
}
return str + " = console.getstr(" + len + "," + mode + ");";
}
// GETLINE [str_var] [#]
baja["GETLINE"] = function(var1,var2) {
var str = var1;
var len = var2;
/* an argument is missing! */
if(!var2) {
if(!isNaN(var1)) {
len = var1;
str = "bbs.command_str";
}
else if(var1) {
len = 128;
}
}
return str + " = console.getstr(" + len + ",K_LINE);";
}
// GETSTRUPR [str_var] [#]
baja["GETSTRUPR"] = function(var1,var2) {
var str = var1;
var len = var2;
/* an argument is missing! */
if(!var2) {
if(!isNaN(var1)) {
len = var1;
str = "bbs.command_str";
}
else if(var1) {
len = 128;
}
}
return str + " = console.getstr(" + len + ",K_UPPER);";
}
// GETNAME [str_var] [#]
baja["GETNAME"] = function(var1,var2) {
var str = var1;
var len = var2;
/* an argument is missing! */
if(!var2) {
if(!isNaN(var1)) {
len = var1;
str = "bbs.command_str";
}
else if(var1) {
len = 128;
}
}
return str + " = console.getstr(" + len + ",K_UPRLWR);";
}
// GETFILESPEC
baja["GETFILESPEC"] = function() {
return
'system.baja.temp = bbs.get_filespec();\r\n' +
'if(system.baja.temp = "") {\r\n' +
'system.baja.logicState = FALSE;\r\n' +
'} else {\r\n' +
'system.baja.logicState = TRUE;\r\n' +
'bbs.command_str = system.baja.temp;\r\n' +
'}';
}
// GETLINES
baja["GETLINES"] = function() { return "console.getlines();"; }
// GETNUM [any_var] <#>
baja["GETNUM"] = function(var1,var2) { return var1 + " = console.getnum(" + var2 + ");"; }
// GET_TEMPLATE <"str">
baja["GET_TEMPLATE"] = function(var1) {
return "bbs.command_str = console.gettemplate(" + var1 + ");";
}
// CHKSYSPASS
baja["CHKSYSPASS"] = function() { return 'system.baja.logicState = bbs.check_syspass();'; }
// CREATE_SIF <"str">
baja["CREATE_SIF"] = function(var1) {
var line = '';
if(!functions["SIF"]) {
functions["SIF"] = true;
line += 'load("siflib.js");\r\n';
}
return line + 'SIF.create(' + var1 + '.sif,bbs.command_str);';
}
// Miscellaneous Functions
// -----------------------
// ONLINE
baja["ONLINE"] = function() { return "bbs.online = (2);"; }
// OFFLINE
baja["OFFLINE"] = function() { return "bbs.online = (1);"; }
// LOGIN <"cstr">
baja["LOGIN"] = function(var1) { return "bbs.login(bbs.command_str," + var1 + ");"; }
// LOGON
baja["LOGON"] = function() { return "bbs.logon();"; }
// LOGOFF
baja["LOGOFF"] = function() { return "bbs.logoff();"; }
// LOGOFF_FAST
baja["LOGOFF_FAST"] = function() { return "bbs.nodesync();\r\nbbs.hangup();"; }
// LOGOUT
baja["LOGOUT"] = function() { return "bbs.logout();"; }
// NEWUSER
baja["NEWUSER"] = function() { return "bbs.newuser();"; }
// SET_MENU_DIR <"str">
baja["SET_MENU_DIR"] = function(var1) { return "bbs.menu_dir = " + var1 + ";"; }
// SET_MENU_FILE <"str">
baja["SET_MENU_FILE"] = function(var1) { return "bbs.menu_file = " + var1 + ";"; }
// SYNC
baja["SYNC"] = function(var1) { return "bbs.nodesync();"; }
// ASYNC
baja["ASYNC"] = baja["SYNC"];
// RIOSYNC
baja["RIOSYNC"] = baja["SYNC"];
// PUT_NODE
baja["PUT_NODE"] = baja["SYNC"];
// PAUSE_RESET
baja["PAUSE_RESET"] = function() { return "console.line_counter = 0;"; }
// CLEAR_ABORT
baja["CLEAR_ABORT"] = function() { return "console.aborted = false;"; }
// UNGETKEY
baja["UNGETKEY"] = function() { return "console.ungetstr(system.baja.cmdKey);"; }
// UNGETSTR
baja["UNGETSTR"] = function() { return "console.ungetstr(bbs.command_str);"; }
// HANGUP
baja["HANGUP"] = function() { return "bbs.hangup();"; }
// EXEC <"str">
baja["EXEC"] = function(var1) { return "bbs.exec(" + var1 + ");"; }
// EXEC_INT <"str">
baja["EXEC_INT"] = function(var1) { return "bbs.exec(" + var1 + ",(1<<1));"; }
// EXEC_BIN <"str">
baja["EXEC_BIN"] = function(var1) { return "bbs.exec(\"*" + var1.replace(/\"/g,'') + "\");"; }
// EXEC_XTRN <"str">
baja["EXEC_XTRN"] = function(var1) {
var line = 'if(typeof xtrn_area.prog[' + var1 + '] != "undefined" &&';
line += 'user.compare_ars(xtrn_area.prog[' + var1 + '].ars)) {\r\n';
line += 'bbs.exec_xtrn(' + var1 + ');\r\n';
line += '}';
return line;
}
// LOG <"cstr">
baja["LOG"] = function(var1) { return "log(" + var1 + ");"; }
// LOGSTR
baja["LOGSTR"] = function(var1) { return "bbs.log_str(bbs.command_str);"; }
// LOGKEY
baja["LOGKEY"] = function(var1) { return "bbs.log_key(system.baja.cmdKey);"; }
// LOGKEY_COMMA
baja["LOGKEY_COMMA"] = function(var1) { return "bbs.log_key(system.baja.cmdKey,true);"; }
// NODE_STATUS <#>
baja["NODE_STATUS"] = function(var1) {
return "system.node_list[bbs.node_num-1].status = " + var1 + ";";
}
// NODE_ACTION <#>
baja["NODE_ACTION"] = function(var1) { return "bbs.node_action = " + var1 + ";"; }
// INC_MAIN_CMDS
baja["INC_MAIN_CMDS"] = function(var1) { return "bbs.main_cmds++;"; }
// INC_FILE_CMDS
baja["INC_FILE_CMDS"] = function(var1) { return "bbs.file_cmds++;"; }
// COMPARE_USER_MISC <#>
baja["COMPARE_USER_MISC"] = function(var1) {
return format("system.baja.logicState = (user.settings&(%s) == %s)?TRUE:FALSE;",var1,var1);
}
// COMPARE_USER_CHAT <#>
baja["COMPARE_USER_CHAT"] = function(var1) {
return format("system.baja.logicState = (user.chat_settings&(%s) == %s)?TRUE:FALSE;",var1,var1);
}
// COMPARE_USER_QWK <#>
baja["COMPARE_USER_QWK"] = function(var1) {
return format("system.baja.logicState = (user.qwk_settings&(%s) == %s)?TRUE:FALSE;",var1,var1);
}
// COMPARE_NODE_MISC <#>
baja["COMPARE_NODE_MISC"] = function(var1) {
return format("system.baja.logicState = (system.node_list[bbs.node_num].misc&(%s) == %s)?TRUE:FALSE;",var1,var1);
}
// TOGGLE_USER_MISC <#>
baja["TOGGLE_USER_MISC"] = function(var1) { return format("user.settings ^= (%s);",var1); }
// TOGGLE_USER_CHAT <#>
baja["TOGGLE_USER_CHAT"] = function(var1) { return format("user.chat_settings ^= (%s);",var1); }
// TOGGLE_USER_QWK <#>
baja["TOGGLE_USER_QWK"] = function(var1) { return format("user.qwk_settings ^= (%s);",var1); }
// TOGGLE_NODE_MISC <#>
baja["TOGGLE_NODE_MISC"] = function(var1) {
return format("system.node_list[bbs.node_num].misc ^= (%s);",var1);
}
// TOGGLE_USER_FLAG <char> <char>
baja["TOGGLE_USER_FLAG"] = function(var1,var2) {
return "user.security.flags" + var1 + " ^= (" + var2 + ");";
}
// ADJUST_USER_CREDITS <#>
baja["ADJUST_USER_CREDITS"] = function(var1) {
return "user.security.credits += " + var1 + ";";
}
// ADJUST_USER_MINUTES <#>
baja["ADJUST_USER_MINUTES"] = function(var1) {
return "user.security.minutes += " + var1 + ";";
}
// SET_USER_LEVEL <#>
baja["SET_USER_LEVEL"] = function(var1) {
return "user.security.level = " + var1 + ";";
}
// SET_USER_STRING <#>
baja["SET_USER_STRING"] = function(var1) {
// !define USER_STRING_ALIAS 0
// !define USER_STRING_REALNAME 1
// !define USER_STRING_HANDLE 2
// !define USER_STRING_COMPUTER 3
// !define USER_STRING_NOTE 4
// !define USER_STRING_ADDRESS 5
// !define USER_STRING_LOCATION 6
// !define USER_STRING_ZIPCODE 7
// !define USER_STRING_PASSWORD 8
// !define USER_STRING_BIRTHDAY 9
// !define USER_STRING_PHONE 10
// !define USER_STRING_MODEM 11
// !define USER_STRING_COMMENT 12
// !define USER_STRING_NETMAIL 13 # Requires v3 (03/02/00) or later
var uStrings = [
"alias","name","handle","computer",
"note","address","location","zipcode",
"security.password","birthdate","phone",
"modem","comment","netmail"
];
return "user." + uStrings[var1] + " = bbs.command_str;";
}
// USER_EVENT <#>
baja["USER_EVENT"] = function(var1) {
return "bbs.user_event(" + var1 + ");";
}
// AUTO_MESSAGE
baja["AUTO_MESSAGE"] = function() {
var line = "if(!(user.security.restrictions&UFLAG_W)) {\r\n";
line += "bbs.auto_msg();\r\n";
line += "}";
return line;
}
// USER_DEFAULTS
baja["USER_DEFAULTS"] = function() {
var line = "if(!(user.security.restrictions&UFLAG_G)) {\r\n";
line += "bbs.user_config();\r\n";
line += "}";
return line;
}
// USER_EDIT
baja["USER_EDIT"] = function() {
var line = "if(user.compare_ars(\"SYSOP\") || (bbs.sys_status&SS_TMPSYSOP)) {\r\n";
line += "bbs.edit_user();\r\n";
line += "}";
return line;
}
// TEXT_FILE_SECTION
baja["TEXT_FILE_SECTION"] = function() {
return "bbs.text_sec();";
}
// XTRN_EXEC
baja["XTRN_EXEC"] = function() {
var line = 'if(typeof xtrn_area.prog[bbs.command_str] != "undefined" &&';
line += 'user.compare_ars(xtrn_area.prog[bbs.command_str].ars)) {\r\n';
line += 'bbs.exec_xtrn(bbs.command_str);\r\n';
line += '}';
return line;
}
// XTRN_SECTION
baja["XTRN_SECTION"] = function() {
return "bbs.xtrn_sec();";
}
// MINUTE_BANK
baja["MINUTE_BANK"] = function() {
return "bbs.time_bank();";
}
// CHANGE_USER
baja["CHANGE_USER"] = function() {
var line = "if(user.compare_ars(\"SYSOP\") || (bbs.sys_status&SS_TMPSYSOP)) {\r\n";
line += "bbs.change_user();\r\n";
line += "}";
return line;
}
// ANSI_CAPTURE (v2 only) *NOT SUPPORTED*
// FINDUSER
baja["FINDUSER"] = function() {
return "system.baja.logicState = (bbs.finduser(" + bbs.command_str + ")?TRUE:FALSE);";
}
// SELECT_SHELL
baja["SELECT_SHELL"] = function() {
return "system.baja.logicState = (bbs.select_shell()?TRUE:FALSE);";
}
// SET_SHELL
baja["SET_SHELL"] = function() {
var line = "user.command_shell = bbs.command_str;\r\n";
line += "system.baja.logicState = (user.command_shell == bbs.command_str?TRUE:FALSE);";
return line;
}
// SELECT_EDITOR
baja["SELECT_EDITOR"] = function() {
return "system.baja.logicState = (bbs.select_editor()?TRUE:FALSE);";
}
// SET_EDITOR
baja["SET_EDITOR"] = function() {
var line = "user.editor = bbs.command_str;\r\n";
line += "system.baja.logicState = (user.editor == bbs.command_str?TRUE:FALSE);\r\n";
return line;
}
// TRASHCAN <"str">
baja["TRASHCAN"] = function(var1) {
var line = "system.baja.logicState = (system.trashcan(system.text_dir" + var1 + ",bbs.command_str)?TRUE:FALSE);";
line += "if(system.baja.logicState == TRUE && file_exists(system.text_dir + \"bad" + var1 + ".msg\") {\r\n";
line += "console.printfile(system.text_dir + \"bad" + var1 + ".msg\");\r\n";
line += "}";
return line;
}
// GETTIMELEFT
baja["GETTIMELEFT"] = function() {
var line = "if(bbs.time_left() == 0) {\r\n";
line += "console.print(\"Out of time\");\r\n";
line += "bbs.hangup();\r\n";
line += "}";
}
// MSWAIT <#>
baja["MSWAIT"] = function(num1) { return "mswait(" + num1 + ");"; }
// SEND_FILE_VIA <char> <"str" or str_var>
baja["SEND_FILE_VIA"] = function(var1,var2) {
return format("bbs.send_file(%s,%s);",var2,var1);
}
// RECEIVE_FILE_VIA <char> <"str" or str_var>
baja["RECEIVE_FILE_VIA"] = function(var1,var2) {
return format("bbs.receive_file(%s,%s);",var2,var1);
}
// Mail Functions
// --------------
// MAIL_READ
baja["MAIL_READ"] = function() {
return 'bbs.read_mail(MAIL_YOUR);';
}
// MAIL_READ_SENT
baja["MAIL_READ_SENT"] = function() {
return 'bbs.read_mail(MAIL_SENT);';
}
// MAIL_READ_ALL
baja["MAIL_READ_ALL"] = function() {
return 'if(bbs.check_syspass()) bbs.read_mail(MAIL_ALL);';
}
// MAIL_SEND
baja["MAIL_SEND"] = function() {
return 'bbs.email(bbs.command_str);';
}
// MAIL_SEND_FILE
baja["MAIL_SEND_FILE"] = function() {
return 'bbs.email(bbs.command_str, WM_EMAIL|WM_FILE);';
}
// MAIL_SEND_BULK
baja["MAIL_SEND_BULK"] = function() {
return 'bbs.bulk_mail();';
}
// MAIL_SEND_FEEDBACK
baja["MAIL_SEND_FEEDBACK"] = function() {
return
'var u = new User(1);\r\n' +
'bbs.email(u.alias, subject="Re: Feedback");';
}
// MAIL_SEND_NETMAIL
baja["MAIL_SEND_NETMAIL"] = function() {
return
'system.baja.userInput = console.getstr("", mode=K_LINE);\r\n' +
'bbs.netmail(system.baja.userInput);';
}
// MAIL_SEND_NETFILE
baja["MAIL_SEND_NETFILE"] = function() {
return
'system.baja.userInput = console.getstr("", mode=K_LINE);\r\n' +
'bbs.netmail(system.baja.userInput, mode=WM_NETMAIL|WM_FILE);'
}
// Message Base Functions
// ----------------------
// MSG_SET_AREA
baja["MSG_SET_AREA"] = function() {
return
'if(typeof msg_area.sub[bbs.command_str] == "undefined" || !user.compare_ars(msg_area.sub[bbs.command_str].ars)) {\r\n' +
'system.baja.logicState = FALSE;\r\n' +
'} else {\r\n' +
'system.baja.logicState = TRUE;\r\n' +
'bbs.cursub = msg_area.sub[bbs.command_str].number;\r\n' +
'bbs.cursub_code = bbs.command_str;\r\n' +
'}';
}
// MSG_SET_GROUP
baja["MSG_SET_GROUP"] = function() {
return
'if(typeof msg_area.grp[bbs.command_str] == "undefined" || !user.compare_ars(msg_area.grp[bbs.command_str].ars)) {\r\n' +
'system.baja.logicState = FALSE;\r\n' +
'} else {\r\n' +
'system.baja.logicState = TRUE;\r\n' +
'bbs.curgrp = msg_area.grp[bbs.command_str].number;\r\n' +
'}';
}
// MSG_SELECT_AREA
baja["MSG_SELECT_AREA"] = function() {
return
'system.baja.logicState = FALSE;' +
'for(var g = 0; g < msg_area.grp_list.length; g++) {\r\n' +
'console.uselect(g + 1, "Message Group", msg_area.grp_list[g].description);\r\n' +
'}\r\n' +
'var grp = console.uselect();\r\n' +
'if(grp > 0 && grp <= msg_area.grp_list.length) {\r\n' +
'for(var s = 0; s < msg_area.grp_list[grp - 1].sub_list.length; s++) {\r\n' +
'console.uselect(s + 1, "Message Area", msg_area.grp_list[grp - 1].sub_list[s].description);\r\n' +
'}\r\n' +
'var sub = console.uselect();' +
'if(sub > 0 && sub <= msg_area.grp_list[grp - 1].sub_list.length) {\r\n' +
'system.baja.logicState = TRUE;\r\n' +
'bbs.curgrp = msg_area.grp_list[grp - 1].number;\r\n' +
'bbs.cursub = msg_area.grp_list[grp - 1].sub_list[sub - 1].number;\r\n' +
'bbs.cursub_code = msg_area.grp_list[grp - 1].sub_list[sub - 1]. code;\r\n' +
'}\r\n' +
'}';
}
// MSG_SHOW_GROUPS
// This is fairly close to the output of the Baja function, but not exact.
// If I can determine which string from text.dat Baja is using, I will update this later. -ec
baja["MSG_SHOW_GROUPS"] = function() {
return
'console.putmsg(bbs.text(127));' +
'for(var g = 0; g < msg_area.grp_list.length; g++) {\r\n' +
'console.putmsg(format(bbs.text(128), g + 1, msg_area.grp_list[g].description, "", msg_area.grp_list[g].sub_list.length));\r\n' +
'}';
}
// MSG_SHOW_SUBBOARDS
// Same issue as MSG_SHOW_GROUPS - probably needs to be revised later.
baja["MSG_SHOW_SUBBOARDS"] = function() {
return
'for(var g in msg_area.grp_list) {\r\n' +
'if(msg_area.grp_list[g].number != bbs.curgrp)\r\n' +
'continue;\r\n' +
'console.putmsg(format(bbs.text(125), msg_area.grp_list[g].description));\r\n' +
'for(var s = 0; s < msg_area.grp_list[g].sub_list.length; s++) {\r\n' +
'var mb = new MsgBase(msg_area.grp_list[g].sub_list[s].code);\r\n' +
'mb.open();\r\n' +
'var tm = mb.total_msgs;\r\n' +
'mb.close();\r\n' +
'console.putmsg(format(bbs.text(126), s + 1, msg_area.grp_list[g].sub_list[s].description, "", tm));\r\n' +
'}\r\n' +
'break;' +
'}';
}
// MSG_GROUP_UP
baja["MSG_GROUP_UP"] = function() {
return
'var cg = bbs.curgrp;\r\n' +
'bbs.curgrp++;\r\n' +
'if(cg == bbs.curgrp) bbs.curgrp = 0;\r\n';
}
// MSG_GROUP_DOWN
baja["MSG_GROUP_DOWN"] = function() {
return
'var cg = bbs.curgrp;\r\n' +
'bbs.curgrp--;\r\n' +
'if(cg == bbs.curgrp) bbs.curgrp = msg_area.grp_list.length - 1;';
}
// MSG_SUBBOARD_UP
baja["MSG_SUBBOARD_UP"] = function() {
return
'var cs = bbs.cursub;\r\n' +
'bbs.cursub++;\r\n' +
'if(cs == bbs.cursub) bbs.cursub = 0;\r\n';
}
// MSG_SUBBOARD_DOWN
baja["MSG_SUBBOARD_DOWN"] = function() {
return
'var cs = bbs.cursub;\r\n' +
'bbs.cursub--;\r\n' +
'if(cs == bbs.cursub)\r\n' +
'bbs.cursub = msg_area.grp_list[bbs.curgrp].sub_list.length - 1;';
}
// MSG_GET_SUB_NUM
// bbs.cursub starts at zero, but Baja's msg sub & group lists start at 1, so we'll adjust for that.
baja["MSG_GET_SUB_NUM"] = function() {
return 'bbs.cursub = console.getnum(msg_area.grp_list[bbs.curgrp].sub_list.length, bbs.cursub) - 1;';
}
// MSG_GET_GRP_NUM
baja["MSG_GET_GRP_NUM"] = function() {
return 'bbs.curgrp = console.getnum(msg_area.grp_list.length, bbs.curgrp) - 1;';
}
// MSG_READ
baja["MSG_READ"] = function() {
return 'bbs.scan_msgs(bbs.cursub_code, SCAN_READ);';
}
// MSG_POST
baja["MSG_POST"] = function() {
return 'system.baja.logicState = bbs.post_msg();';
}
// MSG_QWK
baja["MSG_QWK"] = function() {
return 'bbs.qwk_sec();';
}
// MSG_PTRS_CFG
baja["MSG_PTRS_CFG"] = function() {
return 'bbs.cfg_msg_ptrs();';
}
// MSG_PTRS_REINIT
baja["MSG_PTRS_REINIT"] = function() {
return 'bbs.reinit_msg_ptrs();';
}
// MSG_NEW_SCAN_CFG
baja["MSG_NEW_SCAN_CFG"] = function() {
return 'bbs.cfg_msg_scan(SCAN_CFG_NEW);';
}
// MSG_NEW_SCAN
baja["MSG_NEW_SCAN"] = function() {
return 'bbs.scan_subs();';
}
// MSG_NEW_SCAN_ALL
baja["MSG_NEW_SCAN_ALL"] = function() {
return 'bbs.scan_subs(SCAN_NEW, true);';
}
// MSG_NEW_SCAN_SUB
baja["MSG_NEW_SCAN_SUB"] = function() {
return 'system.baja.logicState = bbs.scan_msgs(bbs.cursub_code, SCAN_NEW);';
}
// MSG_CONT_SCAN
baja["MSG_CONT_SCAN"] = function() {
return 'bbs.scan_subs(SCAN_CONST);';
}
// MSG_CONT_SCAN_ALL
baja["MSG_CONT_SCAN_ALL"] = function() {
return 'bbs.scan_subs(SCAN_CONST, true);';
}
// MSG_BROWSE_SCAN
baja["MSG_BROWSE_SCAN"] = function() {
return 'bbs.scan_subs(SCAN_BACK);';
}
// MSG_BROWSE_SCAN_ALL
baja["MSG_BROWSE_SCAN_ALL"] = function() {
return 'bbs.scan_subs(SCAN_BACK, true);';
}
// MSG_FIND_TEXT
baja["MSG_FIND_TEXT"] = function() {
return 'bbs.scan_subs(SCAN_FIND);';
}
// MSG_FIND_TEXT_ALL
baja["MSG_FIND_TEXT_ALL"] = function() {
return 'bbs.scan_subs(SCAN_FIND, true);';
}
// MSG_YOUR_SCAN_CFG
baja["MSG_YOUR_SCAN_CFG"] = function() {
return 'bbs.cfg_msg_scan(SCAN_CFG_TOYOU);';
}
// MSG_YOUR_SCAN
baja["MSG_YOUR_SCAN"] = function() {
return 'bbs.scan_subs(SCAN_NEW|SCAN_TOYOU);';
}
// MSG_YOUR_SCAN_ALL
baja["MSG_YOUR_SCAN_ALL"] = function() {
return 'bbs.scan_subs(SCAN_NEW|SCAN_TOYOU, true);';
}
// File Base Functions
// -------------------
// FILE_SET_AREA
baja["FILE_SET_AREA"] = function() {
return
'if(typeof file_area.dir[bbs.command_str.toLowerCase()] != "undefined" && bbs.compare_ars(file_area.dir[bbs.command_str.toLowerCase()].ars)) {\r\n' +
'bbs.curdir = file_area.dir[bbs.command_str.toLowerCase()].number;\r\n' +
'bbs.curdir_code = file_area.dir[bbs.command_str.toLowerCase()].code;\r\n' +
'system.baja.logicState = true;\r\n' +
'} else {\r\n' +
'system.baja.logicState = false;\r\n' +
'}';
}
// FILE_SET_LIBRARY
baja["FILE_SET_LIBRARY"] = function() {
return
'if(typeof file_area.lib[bbs.command_str.toLowerCase()] != "undefined" && bbs.compare_ars(file_area.lib[bbs.command_str.toLowerCase()].ars)) {\r\n' +
'bbs.curlib = file_area.lib[bbs.command_str.toLowerCase()].number;\r\n' +
'system.baja.logicState = true;\r\n' +
'} else {\r\n' +
'system.baja.logicState = false;\r\n' +
'}';
}
// FILE_SELECT_AREA
baja["FILE_SELECT_AREA"] = function() {
return
baja["FILE_SHOW_LIBRARIES"]() +
"\r\n" +
"bbs.curlib = console.getnum(file_area.lib_list.length, bbs.curdir + 1) - 1;\r\n" +
baja["FILE_SHOW_DIRECTORIES"]() +
"bbs.curdir = console.getnum(file_area.lib_list[bbs.curlib].dir_list.length, 1) - 1;\r\n";
}
// FILE_SHOW_LIBRARIES
baja["FILE_SHOW_LIBRARIES"] = function() {
return
'console.putmsg(bbs.text(181));\r\n' +
'for(var l = 0; l < file_area.lib_list.length; l++) {\r\n' +
'console.putmsg(format(bbs.text(182), l + 1, file_area.lib_list[l].description, "",file_area.lib_list[l].dir_list.length));\r\n' +
'}';
}
// FILE_SHOW_DIRECTORIES
baja["FILE_SHOW_DIRECTORIES"] = function() {
return 'console.putmsg(format(bbs.text(179), file_area.lib_list[bbs.curlib].description));' +
'for(var d = 0; d < file_area.lib_list[bbs.curlib].dir_list.length; d++) {\r\n' +
'console.putmsg(format(bbs.text(180), d, ' +
'file_area.lib_list[bbs.curlib].dir_list[d].description, "",' +
'directory(file_area.lib_list[bbs.curlib].dir_list[d].path + "*.*").length));\r\n' +
'}';
}
// FILE_LIBRARY_UP
baja["FILE_LIBRARY_UP"] = function() {
return
'var cl = bbs.curlib;\r\n' +
'bbs.curlib++;\r\n' +
'if(cl == bbs.curlib) bbs.curlib = 0;\r\n';
}
// FILE_LIBRARY_DOWN
baja["FILE_LIBRARY_DOWN"] = function() {
return
'var cl = bbs.curlib;\r\n' +
'bbs.curlib--;\r\n' +
'if(cl == bbs.curlib) bbs.curlib = file_area.lib_list.length - 1;';
}
// FILE_DIRECTORY_UP
baja["FILE_DIRECTORY_UP"] = function() {
return
'var cd = bbs.curdir;\r\n' +
'bbs.curdir++;\r\n' +
'if(cd == bbs.curdir) bbs.curdir = 0;\r\n';
}
// FILE_DIRECTORY_DOWN
baja["FILE_DIRECTORY_DOWN"] = function() {
return
'var cd = bbs.curdir;\r\n' +
'bbs.curdir--;\r\n' +
'if(cd == bbs.curdir)\r\n' +
'bbs.curdir = file_area.lib_list[bbs.curlib].dir_list.length - 1;';
}
// FILE_GET_DIR_NUM
baja["FILE_GET_DIR_NUM"] = function() {
return 'bbs.curdir = console.getnum(file_area.lib_list[bbs.curlib].dir_list.length, bbs.curdir) - 1;';
}
// FILE_GET_LIB_NUM
baja["FILE_GET_LIB_NUM"] = function() {
return 'bbs.curlib = console.getnum(file_area.lib_list.length, bbs.curlib) - 1;';
}
// FILE_LIST
baja["FILE_LIST"] = function() {
return
'var res = bbs.list_files(bbs.curdir_code, bbs.command_str);' +
'system.baja.logicState = (res < 0) ? FALSE : TRUE;';
}
// FILE_LIST_EXTENDED
baja["FILE_LIST_EXTENDED"] = function() {
// Baja docs do not state that this function affects the logic state.
// This will need to be verified, the commented code here used instead if so.
// var line = 'var res = bbs.list_file_info(bbs.curdir_code, bbs.command_str);';
// line += 'system.baja.logicState = (res < 0) ? FALSE : TRUE;';
// return line;
return 'bbs.list_file_info(bbs.curdir_code, bbs.command_str);';
}
// FILE_VIEW
baja["FILE_VIEW"] = function() {
return 'bbs.list_files(bbs.curdir_code, bbs.command_str, FL_VIEW);';
}
// FILE_UPLOAD
baja["FILE_UPLOAD"] = function() {
return 'system.baja.logicState = bbs.upload_file();';
}
// FILE_UPLOAD_USER
baja["FILE_UPLOAD_USER"] = function() {
return 'system.baja.logicState = bbs.upload_file("USER");';
}
// FILE_UPLOAD_SYSOP
baja["FILE_UPLOAD_SYSOP"] = function() {
return 'system.baja.logicState = bbs.upload_file("SYSOP");';
}
// FILE_DOWNLOAD
baja["FILE_DOWNLOAD"] = function() {
return 'if(bbs.check_syspass()) bbs.send_file(bbs.command_str);';
}
// FILE_DOWNLOAD_USER
baja["FILE_DOWNLOAD_USER"] = function() {
return 'system.baja.logicState = bbs.list_files("USER", mode=FI_USERXFER);';
}
// FILE_DOWNLOAD_BATCH
baja["FILE_DOWNLOAD_BATCH"] = function() { return 'system.baja.logicState = (bbs.batch_download()) ? TRUE : FALSE;'; }
// FILE_REMOVE
baja["FILE_REMOVE"] = function() { return 'bbs.list_file_info(bbs.curdir_code, bbs.command_str, FI_REMOVE);'; }
// FILE_BATCH_ADD
baja["FILE_BATCH_ADD"] = function() {
return
'var fn = format("%s/user/%04d.batch", system.data_dir, user.number);\r\n' +
'var f = new File(fn);\r\n' +
'f.open("w");\r\n' +
'f.write(bbs.command_str);\r\n' +
'f.close();\r\n' +
'bbs.batch_add_list(fn);';
}
// FILE_BATCH_ADD_LIST
baja["FILE_BATCH_ADD_LIST"] = function() { return 'bbs.batch_add_list(bbs.command_str);'; }
// FILE_BATCH_CLEAR
baja["FILE_BATCH_CLEAR"] = function() { return 'bbs.batch_dnload_total = 0;'; }
// FILE_BATCH_SECTION
baja["FILE_BATCH_SECTION"] = function() { return 'bbs.batch_menu();'; }
// FILE_TEMP_SECTION
baja["FILE_TEMP_SECTION"] = function() { return 'bbs.temp_xfer();'; }
// FILE_NEW_SCAN
baja["FILE_NEW_SCAN"] = function() { return 'bbs.scan_dirs();'; }
// FILE_NEW_SCAN_ALL
baja["FILE_NEW_SCAN_ALL"] = function() { return 'bbs.scan_dirs(FL_NONE, true);'; }
// FILE_FIND_TEXT
baja["FILE_FIND_TEXT"] = function() { return 'bbs.scan_dirs(FL_FINDDESC);'; }
// FILE_FIND_TEXT_ALL
baja["FILE_FIND_TEXT_ALL"] = function() { return 'bbs.scan_dirs(FL_FINDDESC, true);'; }
// FILE_FIND_NAME
baja["FILE_FIND_NAME"] = function() { return 'bbs.list_files(bbs.curdir_code, bbs.get_filespec());'; }
// FILE_FIND_NAME_ALL
baja["FILE_FIND_NAME_ALL"] = function() {
return
'system.baja.temp = bbs.get_filespec();\r\n' +
'for(var d in file_area.dir) {\r\n' +
'if(!file_area.dir[d].can_download) continue;\r\n' +
'bbs.list_files(file_area.dir[d].code, system.baja.temp);\r\n' +
'}';
}
// FILE_PTRS_CFG
baja["FILE_PTRS_CFG"] = function() {
return 'system.baja.logicState = (bbs.last_new_file_time == bbs.get_newscantime()) ? FALSE : TRUE;';
}
// FILE_SET_ALT_PATH
baja["FILE_SET_ALT_PATH"] = function() { return 'if(bbs.check_syspass()) bbs.alt_ul_dir = bbs.command_str;'; }
// FILE_RESORT_DIRECTORY
baja["FILE_RESORT_DIRECTORY"] = function() {
return
'if(bbs.command_str == "ALL") {\r\n' +
'for(var d in file_area.dir)\r\n' +
'bbs.resort_dir(file_area.dir[d].code);\r\n' +
'} else if(bbs.command_str == "LIB") {\r\n' +
'for(var d in file_area.lib_list[bbs.curlib].dir_list)\r\n' +
'bbs.resort_dir(file_area.lib_list[bbs.curlib].dir_list[d].code);\r\n' +
'} else {\r\n' +
'bbs.resort_dir(bbs.curdir_code);\r\n' +
'}';
}
// FILE_SEND
baja["FILE_SEND"] = function() {
return 'bbs.send_file(bbs.command_str);';
}
// FILE_GET
baja["FILE_GET"] = function() {
return 'if(bbs.check_syspass()) bbs.send_file(bbs.command_str);';
}
// FILE_PUT
baja["FILE_PUT"] = function() {
return 'if(bbs.check_syspass()) bbs.receive_file(bbs.command_str);';
}
// FILE_UPLOAD_BULK
baja["FILE_UPLOAD_BULK"] = function() {
return
'if(bbs.command_str == "ALL") {\r\n' +
'for(var d in file_area.dir)\r\n' +
'bbs.bulk_upload(file_area.dir[d].code);\r\n' +
'} else if(bbs.command_str == "LIB") {\r\n' +
'for(var d in file_area.lib_list[bbs.curlib].dir_list)\r\n' +
'bbs.bulk_upload(file_area.lib_list[bbs.curlib].dir_list[d].code);\r\n' +
'} else {\r\n' +
'bbs.bulk_upload(bbs.curdir_code);\r\n' +
'}';
}
// FILE_FIND_OLD
baja["FILE_FIND_OLD"] = function() {
return 'if(bbs.check_syspass()) bbs.list_file_info(bbs.command_str, mode=FI_OLD);';
}
// FILE_FIND_OPEN
baja["FILE_FIND_OPEN"] = function() { return 'bbs.list_file_info(bbs.command_str, mode=FI_CLOSE);'; }
// FILE_FIND_OFFLINE
baja["FILE_FIND_OFFLINE"] = function() { return 'bbs.list_file_info(bbs.command_str, mode=FI_OFFLINE);'; }
// FILE_FIND_OLD_UPLOADS
baja["FILE_FIND_OLD_UPLOADS"] = function() {
return 'if(bbs.check_syspass()) bbs.list_file_info(bbs.command_str, mode=FI_OLDUL);';
}
// Chat Functions
// --------------
// PAGE_SYSOP
baja["PAGE_SYSOP"] = function() { return 'bbs.page_sysop();'; }
// PAGE_GURU
baja["PAGE_GURU"] = function() { return 'bbs.page_guru(bbs.command_str);'; }
// PRIVATE_CHAT
baja["PRIVATE_CHAT"] = function() { return 'bbs.private_chat();'; }
// PRIVATE_MESSAGE
baja["PRIVATE_MESSAGE"] = function() { return 'bbs.private_message();'; }
// CHAT_SECTION
baja["CHAT_SECTION"] = function() { return 'load("chat_sec.js");'; }
// Information Functions
// ---------------------
// INFO_SYSTEM
baja["INFO_SYSTEM"] = function() { return 'bbs.sys_info();'; }
// INFO_SUBBOARD
baja["INFO_SUBBOARD"] = function() { return 'bbs.sub_info();'; }
// INFO_DIRECTORY
baja["INFO_DIRECTORY"] = function() { return 'bbs.dir_info();'; }
// INFO_USER
baja["INFO_USER"] = function() { return 'bbs.user_info();'; }
// INFO_VERSION
baja["INFO_VERSION"] = function() { return 'bbs.ver();'; }
// INFO_XFER_POLICY
baja["INFO_XFER_POLICY"] = function() { return 'bbs.xfer_policy();'; }
// GURU_LOG
baja["GURU_LOG"] = function() {
var line = "";
if(!functions["gurulog"]) {
line += "system.baja.gurulog = " + gurulog.toSource() + ";\r\n";
functions["gurulog"] = true;
}
return line + "gurulog(\"guru.log\");";
}
// ERROR_LOG
baja["ERROR_LOG"] = function() {
var line = "";
if(!functions["errlog"]) {
line += "system.baja.errlog = " + errlog.toSource() + ";\r\n";
functions["errlog"] = true;
}
return line + "system.baja.errlog(\"error.log\");";
}
// SYSTEM_LOG
baja["SYSTEM_LOG"] = function() {
var line = "";
if(!functions["syslog"]) {
line += "system.baja.syslog = " + syslog.toSource() + ";\r\n";
functions["syslog"] = true;
}
return line + "system.baja.syslog(strftime(\"logs/%m%d%y.log\",time()));";
}
// SYSTEM_YLOG
baja["SYSTEM_YLOG"] = function() {
var line = "";
if(!functions["syslog"]) {
line += "system.baja.syslog = " + syslog.toSource() + ";\r\n";
functions["syslog"] = true;
}
return line + "system.baja.syslog(strftime(\"logs/%m%d%y.log\",time()-24*60*60));";
}
// SYSTEM_STATS
baja["SYSTEM_STATS"] = function() { return 'bbs.sys_stats();'; }
// NODE_STATS
baja["NODE_STATS"] = function() { return 'bbs.node_stats();'; }
// SHOW_MEM
// File I/O Functions
// ------------------
// FOPEN <int_var> <#> <"str" or str_var>
baja["FOPEN"] = function(var1,var2,var3) {
var line = var1 + " = new File(" + var3 + ");\r\n";
var2 = var2.toUpperCase().replace(/O_/ig,'').split('|');
var share = 'false';
var mode = '';
// O_RDONLY Read Only
// O_WRONLY Write Only
// O_RDWR Read and write
// O_CREAT Create (create if doesn't exist)
// O_APPEND Append (writes to end of file)
// O_TRUNC Truncate (truncates file to 0 bytes automatically)
// O_EXCL Exclusive (only open/create if file doesn't exist)
// O_DENYNONE Deny None (shareable, for use with record locking)
var o = {};
for(var i=0;i<var2.length;i++)
o[var2[i]] = true;
if(o.DENYNONE)
share = "true";
// r open for reading; if the file does not exist or cannot be found, the open call fails
if(o.RDONLY && !o.CREATE)
mode = 'r';
// w open an empty file for writing; if the given file exists, its contents are destroyed
else if(o.WRONLY && o.CREATE && o.TRUNC)
mode = 'w';
// a open for writing at the end of the file (appending); creates the file first if it doesn’t exist
else if(o.APPEND && !o.RDONLY && o.CREAT)
mode = 'a';
// r+ open for both reading and writing (the file must exist)
else if(o.RDWR && !o.CREAT && !o.TRUNC)
mode = 'r+';
// w+ open an empty file for both reading and writing; if the given file exists, its contents are destroyed
else if(o.RDWR && (o.CREAT || o.TRUNC))
mode = 'r+';
// a+ open for reading and appending
else if(o.APPEND && o.RDONLY)
mode = 'a';
// b open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed (e.g. r+b)
// e open a non-shareable file (that must not already exist) for exclusive access (introduced in
else if(o.EXCL)
mode = 'e';
var line = "if(system.baja.etx) " + var1 + ".etx = system.baja.etx;";
return line + "system.baja.logicState = (" + var1 + ".open('" + mode + "'," + share + ")?TRUE:FALSE);";
}
// FCLOSE <int_var>
baja["FCLOSE"] = function(var1) { return var1 + ".close();"; }
// FREAD <int_var> <any_var> [int_var or #]
/* needs to check the length of the variable if the passed var2 is
a string. if that string is 0 length, then 128 bytes are read */
baja["FREAD"] = function(var1,var2,var3) {
if(variables[var2] == "STR") {
if(var3)
return var2 + " = " + var1 + ".read(" + var3 + ");";
else
return var2 + " = " + var1 + ".read(" + var2 + ".length?" + var2 + ".length:128);";
}
if(variables[var2] == "INT") {
return var2 + " = " + var1 + ".readBin(" + var3 + ");";
}
}
// FWRITE <int_var> <any_var> [int_var or #]
baja["FWRITE"] = function(var1,var2,var3) {
if(variables[var2] == "STR") {
return var1 + ".write(" + var2 + ", " + (var3?var3:var2+".length") + ");";
}
if(variables[var2] == "INT") {
return var1 + ".writeBin(" + var2 + ", " + (var3?var3:"4") + ");";
}
}
// FFLUSH <int_var>
baja["FFLUSH"] = function(var1) { return var1 + ".flush();"; }
// FGET_LENGTH <int_var> <int_var>
baja["FGET_LENGTH"] = function(var1,var2) { return var2 + " = " + var1 + ".length;"; }
// FSET_LENGTH <int_var> <int_var or #>
baja["FSET_LENGTH"] = function(var1,var2) { return var1 + ".length = " + var2 + ";"; }
// FGET_TIME <int_var> <int_var>
baja["FGET_TIME"] = function(var1,var2) { return var2 + " = " + var1 + ".date;"; }
// FSET_TIME <int_var> <int_var>
/* not sure if the baja method uses time_t or UTC (time_t * 1000) */
baja["FSET_TIME"] = function(var1,var2) { return var1 + ".date = " + (var2*1000) + ";"; }
// FEOF <int_var>
baja["FEOF"] = function(var1) { return "system.baja.logicState = (" + var1 + ".eof?TRUE:FALSE);"; }
// FGET_POS <int_var> <int_var>
baja["FGET_POS"] = function(var1,var2) { return var2 + " = " + var1 + ".position;"; }
// FSET_POS <int_var> <int_var or #> [#]
baja["FSET_POS"] = function(var1,var2) { return var1 + ".position = " + var2 + ";"; }
// FLOCK <int_var> <int_var or #>
baja["FLOCK"] = function(var1,var2) { return var1 + ".lock(" + var1 + ".position, " + var2 + ");"; }
// FUNLOCK <int_var> <int_var or #>
baja["FUNLOCK"] = function(var1,var2) { return var1 + ".unlock(" + var1 + ".position, " + var2 + ");"; }
// FPRINTF <int_var> <"cstr"> [any_var] [...]
baja["FPRINTF"] = function() {
var line = var1 + ".printf(" + var2;
for(var i=2;i<arguments.length;i++)
line += ", " + arguments[i];
return line + ");";
}
// FREAD_LINE <int_var> <any_var>
baja["FREAD_LINE"] = function(var1, var2) { return var2 + " = " + var1 + ".readln();"; }
// FSET_ETX <#>
/* i dont know what to do with this, really */
baja["FSET_ETX"] = function(var1) { return "system.baja.etx = " + var1 + ";"; }
// File System Functions
// ---------------------
// CHKFILE <"str" or str_var>
baja["CHKFILE"] = function(var1) {
return 'system.baja.logicState = file_exists(' + var1 + ');';
}
// REMOVE_FILE <str_var>
baja["REMOVE_FILE"] = function(var1) {
return 'system.baja.logicState = file_removecase(' + var1 + ');';
}
// RENAME_FILE <str_var> <str_var>
baja["RENAME_FILE"] = function(var1, var2) {
return 'system.baja.logicState = file_rename(' + var1 +',' + var2 + ');';
}
// COPY_FILE <str_var> <str_var>
baja["COPY_FILE"] = function(var1, var2) {
return 'system.baja.logicState = file_copy(' + var1 +',' + var2 + ');';
}
// MOVE_FILE <str_var> <str_var>
baja["MOVE_FILE"] = baja["RENAME_FILE"];
// GET_FILE_ATTRIB <int_var> <str_var>
baja["GET_FILE_ATTRIB"] = function(var1, var2) {
return var1 + ' = file_attrib(' + var2 + ');';
}
// SET_FILE_ATTRIB <int_var> <str_var>
// Not sure if this is sufficient ... needs testing.
baja["SET_FILE_ATTRIB"] = function(var1, var2) {
return
'if(file_exists(var2)) {\r\n' +
'system.baja.temp = new File(var2);\r\n' +
'system.baja.temp.attributes = var1;\r\n' +
'}';
}
// GET_FILE_TIME <int_var> <str_var>
baja["GET_FILE_TIME"] = function(var1, var2) {
return var1 + ' = file_date(' + var2 + ');';
}
// GET_FILE_LENGTH <int_var> <str_var>
baja["GET_FILE_LENGTH"] = function(var1, var2) {
return var1 + ' = file_size(' + var2 + ');';
}
// Directory System Functions
// --------------------------
// MAKE_DIR <str_var>
baja["MAKE_DIR"] = function(var1) {
return
'system.baja.logicState = (mkdir(' + var1 + ')) ? TRUE : FALSE;\r\n' +
'if(!system.baja.logicState) system.baja.errNo = errno;';
}
// CHANGE_DIR <str_var>
baja["CHANGE_DIR"] = function(var1) {
return
'if(!file_exists(' + var1 + ') || file_isdir(' + var1 + ')) {\r\n' +
'system.baja.logicState = FALSE;\r\n' +
'system.baja.errNo = 3;\r\n' + // Path not found. Kthnx?
'} else {\r\n' +
'system.baja.logicState = TRUE;\r\n' +
'js.exec_dir = ' + var1 + ';\r\n' +
'}';
}
// REMOVE_DIR <str_var>
baja["REMOVE_DIR"] = function(var1) {
return
'system.baja.logicState = (rmdir(' + var1 + ')) ? TRUE : FALSE;\r\n' +
'if(!system.baja.logicState) system.baja.errNo = errno;';
}
// OPEN_DIR <int_var> <str_var>
baja["OPEN_DIR"] = function(var1,var2) {
var line = "system.baja.logicState = (file_isdir(" + var2 + ")?TRUE:FALSE);\r\n";
line += var1 + " = directory(" + var2 + ");";
return line;
}
// READ_DIR <int_var> <str_var>
baja["READ_DIR"] = function(var1,var2) {
var line = "system.baja.logicState = (" + var1 + ".length > 0?TRUE:FALSE);\r\n";
return var2 + " = " + var1 + "[++system.baja.dir];";
}
// REWIND_DIR <int_var>
baja["REWIND_DIR"] = function(var1) {
return "system.baja.dir = 0;";
}
// CLOSE_DIR <int_var>
/***************************** SUPPORT FUNCTIONS **************************/
function compare(var1,var2) {
system.baja.logicState = 0;
if(var1 == var2)
system.baja.logicState |= EQUAL;
else if(var1 > var2)
system.baja.logicState = GREATER;
else if(var1 < var2)
system.baja.logicState = EQUAL;
}
function errlog() {
if((user.compare_ars("SYSOP") || (bbs.sys_status&SS_TMPSYSOP)) && bbs.check_syspass()) {
var errlog=system.logs_dir+"error.log";
if(file_exists(errlog)) {
write(bbs.text(ErrorLogHdr));
console.printfile(errlog);
if(!console.noyes(bbs.text(DeleteErrorLogQ)))
file_remove(errlog);
}
else {
write(format(bbs.text(FileDoesNotExist),errlog));
}
var i = 0;
for(;i<system.nodes;i++) {
if(system.node_list[i].errors)
break;
}
if(i<system.nodes) {
if(!console.noyes(bbs.text(ClearErrCounter))) {
for(i=0;i<system.nodes;i++) {
system.node_list[i].errors=0;
}
}
}
}
}
function syslog(file) {
if((user.compare_ars("SYSOP") || (bbs.sys_status&SS_TMPSYSOP)) && bbs.check_syspass()) {
var str=system.logs_dir+file;
console.printfile(str);
}
}
function gurulog() {
if((user.compare_ars("SYSOP") || (bbs.sys_status&SS_TMPSYSOP)) && bbs.check_syspass()) {
if(file_exists(system.logs_dir+"guru.log")) {
console.printfile(system.logs_dir+"guru.log");
console.crlf();
if(!console.noyes(bbs.text(DeleteGuruLogQ)))
file_remove(system.logs_dir+"guru.log");
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment