Skip to content
Snippets Groups Projects
Commit b1cfd262 authored by rswindell's avatar rswindell
Browse files

Need to wait for output buffer to flush so that any messages printed by this...

Need to wait for output buffer to flush so that any messages printed by this script will be displayed before sbbs gets control and calls rioctl(IOFB).
parent 7b44556c
Branches
Tags
No related merge requests found
......@@ -17,85 +17,107 @@
// Supports DSZLOG No
// Socket I/O No
var cmd = argv[0];
if(!cmd) {
alert("usage: <install | send | recv> [<file> [...]]");
exit(1);
}
// Copy a file, confirm over-write, preserving original date/time stamp
function fcopy(src, dest)
{
if(file_exists(dest) && !confirm("Overwrite \1w" + dest))
exit(1);
return false;
if(!file_copy(src, dest)) {
alert(format("Error %d copying '%s' to '%s'", errno, src, dest));
exit(2);
return false;
}
if(!file_utime(dest, time(), file_date(src)))
exit(3);
return false;
log(LOG_DEBUG, format("'%s' copied to '%s'", src, dest));
return true;
}
switch(cmd) {
case 'install':
var cnflib = load({}, "cnflib.js");
var file_cnf = cnflib.read("file.cnf");
if(!file_cnf) {
alert("Failed to read file.cnf");
exit(-1);
}
file_cnf.prot.push({
key: 'L'
, name: 'Local Copy'
, ulcmd: '?localcopy send %f'
, dlcmd: '?localcopy recv %f'
, batulcmd: '?localcopy send %g'
, batdlcmd: '?localcopy recv %s'
, ars: 'SYSOP'
});
function main(cmd) {
if(!cmd) {
alert("usage: <install | send | recv> [<file> [...]]");
return 1;
}
switch(cmd) {
case 'install':
var cnflib = load({}, "cnflib.js");
var file_cnf = cnflib.read("file.cnf");
if(!file_cnf) {
alert("Failed to read file.cnf");
return(-1);
}
file_cnf.prot.push({
key: 'L'
, name: 'Local Copy'
, ulcmd: '?localcopy send %f'
, dlcmd: '?localcopy recv %f'
, batulcmd: '?localcopy send %g'
, batdlcmd: '?localcopy recv %s'
, ars: 'SYSOP'
});
if(!cnflib.write("file.cnf", undefined, file_cnf)) {
alert("Failed to write file.cnf");
exit(-1);
}
exit(0);
if(!cnflib.write("file.cnf", undefined, file_cnf)) {
alert("Failed to write file.cnf");
return(-1);
}
return(0);
case 'send':
if(file_isdir(argv[1])) { /* batch upload */
var dest = backslash(argv[1]);
var src = prompt("Source files (with wildcards, e.g. *)");
var list = directory(src);
for(var i in list) {
var path = dest + file_getname(list[i]);
fcopy(list[i], path)
case 'send':
if(file_isdir(argv[1])) { /* batch upload */
var dest = backslash(argv[1]);
var src = prompt("Source files (with wildcards, e.g. *)");
if(!src)
return(1);
var list = directory(src);
if(!list || !list.length) {
alert("No files found: " + src);
return(1);
}
print(list.length + " files found");
var count = 0;
for(var i in list) {
if(js.terminated || console.aborted || !bbs.online)
break;
var path = dest + file_getname(list[i]);
if(fcopy(list[i], path))
count++;
}
print(count + " files copied");
return(0);
}
var src = prompt("Source file or directory");
if(!src)
return(1);
if(file_isdir(src))
src = backslash(src);
for(var i = 1; i < argc; i++) {
var path = src;
if(file_isdir(path))
path += file_getname(argv[i]);
fcopy(path, argv[i]);
}
exit(0);
}
var src = prompt("Source file or directory");
if(!src)
exit(1);
if(file_isdir(src))
src = backslash(src);
for(var i = 1; i < argc; i++) {
var path = src;
if(file_isdir(path))
path += file_getname(argv[i]);
fcopy(path, argv[i]);
}
exit(0);
return(0);
case 'recv':
var dest = prompt("Destination file or directory");
if(!dest)
exit(1);
if(file_isdir(dest))
dest = backslash(dest);
for(var i = 1; i < argc; i++) {
var path = dest;
if(file_isdir(path))
path += file_getname(argv[i]);
fcopy(argv[i], path);
}
exit(0);
case 'recv':
var dest = prompt("Destination file or directory");
if(!dest)
return(1);
if(file_isdir(dest))
dest = backslash(dest);
for(var i = 1; i < argc; i++) {
var path = dest;
if(file_isdir(path))
path += file_getname(argv[i]);
fcopy(argv[i], path);
}
return(0);
}
}
var result = main(argv[0]);
// The BBS flushes I/O buffers when returning from transfer prots:
while(bbs.online && console.output_buffer_level && !js.terminated) {
sleep(100);
}
result;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment