diff --git a/exec/avatars.js b/exec/avatars.js index 8b2974339d44dadb9f096ca11fa094feada365c9..6ef66f81a0114d87864f6d7ef72088510e1bc3d7 100644 --- a/exec/avatars.js +++ b/exec/avatars.js @@ -290,12 +290,14 @@ function import_from_msgbase(msgbase, import_ptr, limit, all) break; } - if(ini.open(file_exists(ini.name) ? 'r+':'w+')) { - print("new import_ptr = " + highest); - ini.iniSetValue("avatars","import_ptr",highest); - ini.close(); - } else - print("Error opening/creating " + ini.name); + if(highest != import_ptr) { + if(ini.open(file_exists(ini.name) ? 'r+':'w+')) { + print("new import_ptr = " + highest); + ini.iniSetValue("avatars","import_ptr",highest); + ini.close(); + } else + print("Error opening/creating " + ini.name); + } print("Imported " + count + " messages"); } @@ -466,17 +468,17 @@ function install() "sec": 0, "name": "Avatar Chooser", "code": "AVATCHOO", - "arstr": "", - "run_arstr": "ANSI & !GUEST & REST ! Q", + "ars": "", + "run_ars": "ANSI & !GUEST & REST ! Q", "type": 0, - "misc": 1, + "settings": 1, "event": 3, "cost": 0, "cmd": "?avatar_chooser", - "clean": "", - "path": "", + "clean_cmd": "", + "startup_dir": "", "textra": 0, - "maxtime": 0 + "max_time": 0 }); changed = true; } @@ -488,9 +490,9 @@ function install() "cmd": "?avatars import", "days": 255, "time": 0, - "node": 1, - "misc": 0, - "dir": "", + "node_num": 1, + "settings": 0, + "startup_dir": "", "freq": 30, "mdays": 0, "months": 0 @@ -505,9 +507,9 @@ function install() "cmd": "?avatars export", "days": 255, "time": 0, - "node": 1, - "misc": 0, - "dir": "", + "node_num": 1, + "settings": 0, + "startup_dir": "", "freq": 30, "mdays": 0, "months": 0 @@ -593,6 +595,7 @@ function main() case "install": case "normalize": case "count": + case "colls": cmds.push(arg); break; default: @@ -821,6 +824,43 @@ function main() printf("%u total\r\n", total); break; } + case "colls": + if(!files.length) { + var total = 0; + files = directory(lib.local_library() + "*.bin"); + for(var i in files) { + var filename = files[i]; + if(filename.search(EXCLUDE_FILES) >= 0) + continue; + printf("%-32s : ", file_getname(filename)); + var sauce = SAUCE.read(filename); + if(!sauce) { + printf("no SAUCE\r\n"); + conintue; + } + var count = sauce.filesize / lib.size; + printf("%u\r\n", count); + total += count; + var f = new File(filename); + if(!f.open('rb')) { + alert("Error " + f.error + " opening " + f.name); + continue; + } + var buf = f.read(); + f.close(); + for(var a = 0; a < count; a++) { + var avatar = buf.substr(a * lib.size, lib.size); + var b64 = base64_encode(avatar); + printf("%s #%u: ", file_getname(filename), a+1); + if(sauce.comment[a]) + print(sauce.comment[a]); + print(b64); + print(LZString.compressToBase64(avatar)); + } + } + printf("%u total\r\n", total); + break; + } break; case "install": var result = install(); diff --git a/exec/binkit.js b/exec/binkit.js index 8266341e902e99a1acb894361d4c53bee8e6c199..f6583dbb0423c6c0b60ac3d1ebd8e5e1f861c7a3 100644 --- a/exec/binkit.js +++ b/exec/binkit.js @@ -972,9 +972,9 @@ function install() "cmd": "?binkit", "days": 255, "time": 0, - "node": 1, - "misc": 0, - "dir": "", + "node_num": 1, + "settings": 0, + "startup_dir": "", "freq": 0, "mdays": 0, "months": 0 @@ -989,9 +989,9 @@ function install() "cmd": "?binkit -p", "days": 255, "time": 0, - "node": 1, - "misc": 0, - "dir": "", + "node_num": 1, + "settings": 0, + "startup_dir": "", "freq": 60, "mdays": 0, "months": 0 diff --git a/exec/load/cnfdefs.js b/exec/load/cnfdefs.js index 228a4bbf790e4f3b7a22d09bfb06f1400799f8b2..7afbc83c4a3389d34d96d0d872590d2d361d2b8a 100644 --- a/exec/load/cnfdefs.js +++ b/exec/load/cnfdefs.js @@ -6,6 +6,11 @@ (if adding definitions to this file, make sure the required constants are defined... if not, add them */ +/* Note: rev 1.3 (and earlier) of this file used field names derived from the + * C/C++ source code (sbbsdefs.h), while rev 1.4 and later now use field + * names which correlate with the Synchronet JS object model (jsobjs.html). + */ + var LEN_DIR = 63; var LEN_CMD = 63; var LEN_ARSTR = 40; @@ -36,52 +41,52 @@ struct.swap_t={ struct.xedit_t={ name: {bytes:41, type:"str"}, code: {bytes:LEN_CODE+1, type:"str"}, - lcmd: {bytes:LEN_CMD+1, type:"str"}, - rcmd: {bytes:LEN_CMD+1, type:"str"}, - misc: {bytes:UINT32_T, type:"int"}, - arstr: {bytes:LEN_ARSTR+1, type:"str"}, + cmd: {bytes:LEN_CMD+1, type:"str"}, // was lcmd + rcmd: {bytes:LEN_CMD+1, type:"str"}, // unused + settings: {bytes:UINT32_T, type:"int"}, // was misc + ars: {bytes:LEN_ARSTR+1, type:"str"}, // was arstr type: {bytes:UCHAR, type:"int"}, __PADDING__:15 }; struct.xtrnsec_t={ name: {bytes:41, type:"str"}, code: {bytes:LEN_CODE+1, type:"str"}, - arstr: {bytes:LEN_ARSTR+1, type:"str"}, + ars: {bytes:LEN_ARSTR+1, type:"str"}, // was arstr __PADDING__:16 }; struct.xtrn_t={ - sec: {bytes:UINT16_T, type:"int"}, - name: {bytes:41, type:"str"}, - code: {bytes:LEN_CODE+1, type:"str"}, - arstr: {bytes:LEN_ARSTR+1, type:"str"}, - run_arstr: {bytes:LEN_ARSTR+1, type:"str"}, - type: {bytes:UCHAR, type:"int"}, - misc: {bytes:UINT32_T, type:"int"}, - event: {bytes:UCHAR, type:"int"}, - cost: {bytes:UINT32_T, type:"int"}, - cmd: {bytes:LEN_CMD+1, type:"str"}, - clean: {bytes:LEN_CMD+1, type:"str"}, - path: {bytes:LEN_DIR+1, type:"str"}, - textra: {bytes:UCHAR, type:"int"}, - maxtime: {bytes:UCHAR, type:"int"}, + sec: {bytes:UINT16_T, type:"int"}, + name: {bytes:41, type:"str"}, + code: {bytes:LEN_CODE+1, type:"str"}, + ars: {bytes:LEN_ARSTR+1, type:"str"}, // was arstr + execution_ars: {bytes:LEN_ARSTR+1, type:"str"}, // was run_arstr + type: {bytes:UCHAR, type:"int"}, + settings: {bytes:UINT32_T, type:"int"}, // was misc + event: {bytes:UCHAR, type:"int"}, + cost: {bytes:UINT32_T, type:"int"}, + cmd: {bytes:LEN_CMD+1, type:"str"}, + clean_cmd: {bytes:LEN_CMD+1, type:"str"}, // was clean + startup_dir: {bytes:LEN_DIR+1, type:"str"}, // was path + textra: {bytes:UCHAR, type:"int"}, + max_time: {bytes:UCHAR, type:"int"}, // was maxtime __PADDING__:14 }; struct.event_t={ - code: {bytes:LEN_CODE+1, type:"str"}, - cmd: {bytes:LEN_CMD+1, type:"str"}, - days: {bytes:1, type:"int"}, - time: {bytes:UINT16_T, type:"int"}, - node: {bytes:UINT16_T, type:"int"}, - misc: {bytes:UINT32_T, type:"int"}, - dir: {bytes:LEN_DIR+1, type:"str"}, - freq: {bytes:UINT16_T, type:"int"}, - mdays: {bytes:UINT32_T, type:"int"}, - months: {bytes:UINT16_T, type:"int"}, + code: {bytes:LEN_CODE+1, type:"str"}, + cmd: {bytes:LEN_CMD+1, type:"str"}, + days: {bytes:1, type:"int"}, + time: {bytes:UINT16_T, type:"int"}, + node_num: {bytes:UINT16_T, type:"int"}, // was node + settings: {bytes:UINT32_T, type:"int"}, // was misc + startup_dir: {bytes:LEN_DIR+1, type:"str"}, // was dir + freq: {bytes:UINT16_T, type:"int"}, + mdays: {bytes:UINT32_T, type:"int"}, + months: {bytes:UINT16_T, type:"int"}, __PADDING__:8 }; struct.natvpgm_t={ name: {bytes:13, type:"str"}, - misc: {bytes:UINT32_T, type:"int"} + misc: {bytes:UINT32_T, type:"int"} // unused }; struct.hotkey_t={ key: {bytes:UCHAR, type:"int"}, @@ -97,40 +102,40 @@ struct.faddr_t={ faddr4: {bytes:2, type:"int"} }; struct.sub_t={ - grp: {bytes:UINT16_T, type:"int"}, - lname: {bytes:LEN_SLNAME+1, type:"str"}, - sname: {bytes:LEN_SSNAME+1, type:"str"}, - qwkname: {bytes:11, type:"str"}, - code_suffix:{bytes:LEN_CODE+1, type:"str"}, - data_dir: {bytes:LEN_DIR+1, type:"str"}, - arstr: {bytes:LEN_ARSTR+1, type:"str"}, - read_arstr: {bytes:LEN_ARSTR+1, type:"str"}, - post_arstr: {bytes:LEN_ARSTR+1, type:"str"}, - op_arstr: {bytes:LEN_ARSTR+1, type:"str"}, + grp_number: {bytes:UINT16_T, type:"int"}, // was grp + description: {bytes:LEN_SLNAME+1, type:"str"}, // was lname + name: {bytes:LEN_SSNAME+1, type:"str"}, // was sname + qwk_name: {bytes:11, type:"str"}, // was qwkname + code_suffix: {bytes:LEN_CODE+1, type:"str"}, + data_dir: {bytes:LEN_DIR+1, type:"str"}, + ars: {bytes:LEN_ARSTR+1, type:"str"}, // was arstr + read_ars: {bytes:LEN_ARSTR+1, type:"str"}, // was read_arstr + post_ars: {bytes:LEN_ARSTR+1, type:"str"}, // was post_arstr + op_ars: {bytes:LEN_ARSTR+1, type:"str"}, // was op_arstr // uchar *ar, // *read_ar, // *post_ar, // *op_ar, - misc: {bytes:UINT32_T, type:"int"}, - tagline: {bytes:81, type:"str"}, - origline: {bytes:51, type:"str"}, - post_sem: {bytes:LEN_DIR+1, type:"str"}, - newsgroup: {bytes:LEN_DIR+1, type:"str"}, - faddr: {bytes:struct.faddr_t, type:"obj"}, - maxmsgs: {bytes:UINT32_T, type:"int"}, - maxcrcs: {bytes:UINT32_T, type:"int"}, - maxage: {bytes:UINT16_T, type:"int"}, - ptridx: {bytes:UINT16_T, type:"int"}, - mod_arstr: {bytes:LEN_ARSTR+1, type:"str"}, + settings: {bytes:UINT32_T, type:"int"}, // was misc + qwknet_tagline: {bytes:81, type:"str"}, // was tagline + fidonet_origin: {bytes:51, type:"str"}, // was origline + post_sem: {bytes:LEN_DIR+1, type:"str"}, + newsgroup: {bytes:LEN_DIR+1, type:"str"}, + faddr: {bytes:struct.faddr_t, type:"obj"}, + max_msgs: {bytes:UINT32_T, type:"int"}, // was maxmsgs + max_crcs: {bytes:UINT32_T, type:"int"}, // was maxcrcs + max_age: {bytes:UINT16_T, type:"int"}, // was maxage + ptridx: {bytes:UINT16_T, type:"int"}, + mod_ars: {bytes:LEN_ARSTR+1, type:"str"}, // was mod_arstr // *mod_ar; - qwkconf: {bytes:UINT16_T, type:"int"}, + qwk_conf: {bytes:UINT16_T, type:"int"}, // was qwkconf __PADDING__:53 }; struct.grp_t={ - lname: {bytes:LEN_GLNAME+1, type:"str"}, - sname: {bytes:LEN_GSNAME+1, type:"str"}, - arstr: {bytes:LEN_ARSTR+1, type:"str"}, - code_prefix:{bytes:LEN_CODE+1, type:"str"}, + description: {bytes:LEN_GLNAME+1, type:"str"}, // was lname + name: {bytes:LEN_GSNAME+1, type:"str"}, // was sname + ars: {bytes:LEN_ARSTR+1, type:"str"}, // was arstr + code_prefix: {bytes:LEN_CODE+1, type:"str"}, // uchar *ar; __PADDING__:87 }; diff --git a/exec/sbbslist.js b/exec/sbbslist.js index de827733144e467f8c6121ea9b53290b2ef575d7..6a93a2b16a2c396c5a159cd34ba17d488709f892 100644 --- a/exec/sbbslist.js +++ b/exec/sbbslist.js @@ -656,7 +656,7 @@ function verify_services(address, timeout) var service = udp_services[i]; printf("Verifying %-10s UDP connection at %s\r\n", service, address); if(!udp_socket.sendto("\r\n", address, standard_service_port[service])) - log(LOG_ERR,format("FAILED Send to %s UDP service at %s", service, address)); + log(LOG_NOTICE,format("FAILED Send to %s UDP service at %s", service, address)); } for(i in tcp_services) { @@ -678,7 +678,7 @@ function verify_services(address, timeout) break; var msg=udp_socket.recvfrom(32*1024); if(msg==null) - log(LOG_ERR, "FAILED (UDP recv)"); + log(LOG_NOTICE, "FAILED (UDP recv)"); else { log(LOG_DEBUG, format("UDP message (%u bytes) from %s port %u", msg.data.length, msg.ip_address, msg.port)); if(msg.ip_address != address) @@ -1963,25 +1963,25 @@ function install() "sec": 0, "name": "Synchronet BBS List", "code": "SBBSLIST", - "arstr": "", - "run_arstr": "", + "ars": "", + "run_ars": "", "type": 0, - "misc": 1, + "settings": 1, "event": 0, "cost": 0, "cmd": "?sbbslist.js browse", - "clean": "", - "path": "", + "clean_cmd": "", + "startup_dir": "", "textra": 0, - "maxtime": 0 + "max_time": 0 }; var smb2sbl_cfg = { "code": "SMB2SBL", "cmd": "?sbbslist import", "days": 255, "time": 0, - "node": 1, - "misc": 0, + "node_num": 1, + "settings": 0, "dir": "", "freq": 360, "mdays": 0, @@ -1992,8 +1992,8 @@ function install() "cmd": "?sbbslist export", "days": 255, "time": 0, - "node": 1, - "misc": 0, + "node_num": 1, + "settings": 0, "dir": "", "freq": 360, "mdays": 0, @@ -2004,8 +2004,8 @@ function install() "cmd": "?sbbslist update -preview", "days": 255, "time": 0, - "node": 1, - "misc": 0, + "node_num": 1, + "settings": 0, "dir": "", "freq": 0, "mdays": 2, @@ -2016,8 +2016,8 @@ function install() "cmd": "?sbbslist maint", "days": 255, "time": 0, - "node": 1, - "misc": 0, + "node_num": 1, + "settings": 0, "dir": "", "freq": 0, "mdays": 0, @@ -2340,7 +2340,7 @@ function main() bbs.total = lib.system_stats(); bbs.terminal.nodes = system.nodes; if(preview) { - log("Capturing preview from: " + bbs.name); + log(LOG_INFO,"Capturing preview from: " + bbs.name); var result = capture_preview(bbs, addr); if(result != true) alert(result);