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
No related branches found
No related tags found
No related merge requests found
...@@ -17,85 +17,107 @@ ...@@ -17,85 +17,107 @@
// Supports DSZLOG No // Supports DSZLOG No
// Socket I/O 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 // Copy a file, confirm over-write, preserving original date/time stamp
function fcopy(src, dest) function fcopy(src, dest)
{ {
if(file_exists(dest) && !confirm("Overwrite \1w" + dest)) if(file_exists(dest) && !confirm("Overwrite \1w" + dest))
exit(1); return false;
if(!file_copy(src, dest)) { if(!file_copy(src, dest)) {
alert(format("Error %d copying '%s' to '%s'", errno, 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))) if(!file_utime(dest, time(), file_date(src)))
exit(3); return false;
log(LOG_DEBUG, format("'%s' copied to '%s'", src, dest)); log(LOG_DEBUG, format("'%s' copied to '%s'", src, dest));
return true;
} }
switch(cmd) { function main(cmd) {
case 'install':
var cnflib = load({}, "cnflib.js"); if(!cmd) {
var file_cnf = cnflib.read("file.cnf"); alert("usage: <install | send | recv> [<file> [...]]");
if(!file_cnf) { return 1;
alert("Failed to read file.cnf"); }
exit(-1);
} switch(cmd) {
file_cnf.prot.push({ case 'install':
key: 'L' var cnflib = load({}, "cnflib.js");
, name: 'Local Copy' var file_cnf = cnflib.read("file.cnf");
, ulcmd: '?localcopy send %f' if(!file_cnf) {
, dlcmd: '?localcopy recv %f' alert("Failed to read file.cnf");
, batulcmd: '?localcopy send %g' return(-1);
, batdlcmd: '?localcopy recv %s' }
, ars: 'SYSOP' 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)) { if(!cnflib.write("file.cnf", undefined, file_cnf)) {
alert("Failed to write file.cnf"); alert("Failed to write file.cnf");
exit(-1); return(-1);
} }
exit(0); return(0);
case 'send': case 'send':
if(file_isdir(argv[1])) { /* batch upload */ if(file_isdir(argv[1])) { /* batch upload */
var dest = backslash(argv[1]); var dest = backslash(argv[1]);
var src = prompt("Source files (with wildcards, e.g. *)"); var src = prompt("Source files (with wildcards, e.g. *)");
var list = directory(src); if(!src)
for(var i in list) { return(1);
var path = dest + file_getname(list[i]); var list = directory(src);
fcopy(list[i], path) 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); return(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);
case 'recv': case 'recv':
var dest = prompt("Destination file or directory"); var dest = prompt("Destination file or directory");
if(!dest) if(!dest)
exit(1); return(1);
if(file_isdir(dest)) if(file_isdir(dest))
dest = backslash(dest); dest = backslash(dest);
for(var i = 1; i < argc; i++) { for(var i = 1; i < argc; i++) {
var path = dest; var path = dest;
if(file_isdir(path)) if(file_isdir(path))
path += file_getname(argv[i]); path += file_getname(argv[i]);
fcopy(argv[i], path); fcopy(argv[i], path);
} }
exit(0); 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