From 8f640a5b1a4efa224fabddb79c5fcac5f741f61c Mon Sep 17 00:00:00 2001 From: deuce <> Date: Wed, 30 Nov 2005 19:30:46 +0000 Subject: [PATCH] Make the bulk of the files a subroutine so I'm not using exit() in something which may be load()ed. TODO: Make the calling of the function optional in case it's already been load()ed --- exec/loadfont.js | 314 ++++++++++++++++++++++++----------------------- exec/pickfont.js | 113 +++++++++-------- 2 files changed, 219 insertions(+), 208 deletions(-) diff --git a/exec/loadfont.js b/exec/loadfont.js index 6dfb38f348..3d4b7234b7 100644 --- a/exec/loadfont.js +++ b/exec/loadfont.js @@ -8,189 +8,195 @@ */ load("sbbsdefs.js"); -var filenames=new Array(); -var showfont=true; -var showprogress=false; -var firstslot=-1; -var i; - -for(i=0; i<argc; i++) { - if(argv[i].toString().substr(0,1)=="-") { - switch(argv[i].substr(1,1).toUpperCase()) { - case 'H': /* Hidden update */ - showfont=false; - break; - case 'S': /* First font slot */ - firstslot=parseInt(argv[i].substr(2)); - break; - case 'P': /* Show progress indicator */ - showprogress=true; - break; +loadfont(); + +function loadfont() +{ + var filenames=new Array(); + var showfont=true; + var showprogress=false; + var firstslot=-1; + var i; + + for(i=0; i<argc; i++) { + if(argv[i].toString().substr(0,1)=="-") { + switch(argv[i].substr(1,1).toUpperCase()) { + case 'H': /* Hidden update */ + showfont=false; + break; + case 'S': /* First font slot */ + firstslot=parseInt(argv[i].substr(2)); + break; + case 'P': /* Show progress indicator */ + showprogress=true; + break; + } + } + else { + filenames.push(argv[i].toString()); } } - else { - filenames.push(argv[i].toString()); + + if(filenames.length==0) { + alert("No font file specified!"); + log(LOG_ERR, "!ERROR No font file specified!"); + return(0); } -} -if(filenames.length==0) { - alert("No font file specified!"); - log(LOG_ERR, "!ERROR No font file specified!"); - exit(1); -} + if(firstslot==-1) { + firstslot=256-filenames.length; + } -if(firstslot==-1) { - firstslot=256-filenames.length; -} + if(firstslot+filenames.length > 256) { + alert("No room for "+filenames.length+" fonts if first slot is "+firstslot); + log(LOG_ERR, "!ERROR No room for "+filenames.length+" fonts if first slot is "+firstslot); + return(-1); + } -if(firstslot+filenames.length > 256) { - alert("No room for "+filenames.length+" fonts if first slot is "+firstslot); - log(LOG_ERR, "!ERROR No room for "+filenames.length+" fonts if first slot is "+firstslot); - exit(1); -} + if(firstslot < 32) { + alert("Cannot overwrite default fonts!"); + log(LOG_ERR, "!ERROR Cannot overwrite default fonts!"); + return(-1); + } -if(firstslot < 32) { - alert("Cannot overwrite default fonts!"); - log(LOG_ERR, "!ERROR Cannot overwrite default fonts!"); - exit(1); -} + if(showprogress) { + writeln(); + write("Detecting font support... "); + } -if(showprogress) { - writeln(); - write("Detecting font support... "); -} + // Check if it's CTerm and supports font loading... + var ver=new Array(0,0); + if(console.terminal.substr(0,6) != 'CTerm;') { + // Disable parsed input... we need to do ESC processing ourselves here. + var oldctrl=console.ctrlkey_passthru; + console.ctrlkey_passthru=-1; -// Check if it's CTerm and supports font loading... -var ver=new Array(0,0); -if(console.terminal.substr(0,6) != 'CTerm;') { - // Disable parsed input... we need to do ESC processing ourselves here. - var oldctrl=console.ctrlkey_passthru; - console.ctrlkey_passthru=-1; - - write("\x1b[c"); - var response=''; - - while(1) { - var ch=console.inkey(0, 5000); - if(ch=="") - break; - response += ch; - if(ch != '\x1b' && ch != '[' && (ch < ' ' || ch > '/') && (ch<'0' || ch > '?')) - break; - } - // var printable=response; - // printable=printable.replace(/\x1b/g,""); - // alert("Response: "+printable); + write("\x1b[c"); + var response=''; - if(response.substr(0,21) != "\x1b[=67;84;101;114;109;") { // Not CTerm + while(1) { + var ch=console.inkey(0, 5000); + if(ch=="") + break; + response += ch; + if(ch != '\x1b' && ch != '[' && (ch < ' ' || ch > '/') && (ch<'0' || ch > '?')) + break; + } + // var printable=response; + // printable=printable.replace(/\x1b/g,""); + // alert("Response: "+printable); + + if(response.substr(0,21) != "\x1b[=67;84;101;114;109;") { // Not CTerm + console.ctrlkey_passthru=oldctrl; + if(showprogress) + writeln("Not detected."); + return(0); + } + if(response.substr(-1) != "c") { // Not a DA + console.ctrlkey_passthru=oldctrl; + if(showprogress) + writeln("Not detected."); + return(0); + } + var version=response.substr(21); + version=version.replace(/c/,""); + ver=version.split(/;/); + console.terminal="CTerm;"+ver.join(";"); console.ctrlkey_passthru=oldctrl; - if(showprogress) - writeln("Not detected."); - exit(0); } - if(response.substr(-1) != "c") { // Not a DA - console.ctrlkey_passthru=oldctrl; - if(showprogress) - writeln("Not detected."); - exit(0); + else { + ver=console.terminal.substr(6).split(/;/); + if(parseInt(ver[0]) < 1 || (parseInt(ver[0])==1 && parseInt(ver[1]) < 61)) { + // Too old for dynamic fonts + if(showprogress) + writeln("Not detected."); + return(0); + } } - var version=response.substr(21); - version=version.replace(/c/,""); - ver=version.split(/;/); - console.terminal="CTerm;"+ver.join(";"); - console.ctrlkey_passthru=oldctrl; -} -else { - ver=console.terminal.substr(6).split(/;/); if(parseInt(ver[0]) < 1 || (parseInt(ver[0])==1 && parseInt(ver[1]) < 61)) { // Too old for dynamic fonts if(showprogress) writeln("Not detected."); - exit(0); + return(0); } -} -if(parseInt(ver[0]) < 1 || (parseInt(ver[0])==1 && parseInt(ver[1]) < 61)) { - // Too old for dynamic fonts - if(showprogress) - writeln("Not detected."); - exit(0); -} -if(showprogress) { - writeln("Detected!"); - write("Loading fonts..."); -} - -/* From here on, it's socket access only */ -console.lock_input(true); -while(console.output_buffer_level) - mswait(1); + if(showprogress) { + writeln("Detected!"); + write("Loading fonts..."); + } -var oldblock=client.socket.nonblocking; -client.socket.nonblocking=false; + /* From here on, it's socket access only */ + console.lock_input(true); + while(console.output_buffer_level) + mswait(1); -for (i in filenames) { - var font=new File(filenames[i]); + var oldblock=client.socket.nonblocking; + client.socket.nonblocking=false; - if(!font.exists) { - log(LOG_ERR, "!ERROR Cannot load font "+filenames[i]+"!"); - continue; - } + for (i in filenames) { + var font=new File(filenames[i]); - var fontsize; - switch(font.length) { - case 4096: - fontsize=0; - break; - case 3586: - fontsize=1; - break; - case 2048: - fontsize=2; - break; - default: - log(LOG_ERR, "!ERROR Illegal font file: "+filenames[i]+"!"); + if(!font.exists) { + log(LOG_ERR, "!ERROR Cannot load font "+filenames[i]+"!"); continue; - } + } - if(!font.open("rb",true,4096)) { - log(LOG_ERR,"!ERROR "+font.error+" Unable to open "+filenames[i]+"! errno="+errno); - continue; - } + var fontsize; + switch(font.length) { + case 4096: + fontsize=0; + break; + case 3586: + fontsize=1; + break; + case 2048: + fontsize=2; + break; + default: + log(LOG_ERR, "!ERROR Illegal font file: "+filenames[i]+"!"); + continue; + } + + if(!font.open("rb",true,4096)) { + log(LOG_ERR,"!ERROR "+font.error+" Unable to open "+filenames[i]+"! errno="+errno); + continue; + } - // Doesn't work on Win32.. Win32 sucks. - var fontdata=font.read(font.length); - var fonterr=font.error; + // Doesn't work on Win32.. Win32 sucks. + var fontdata=font.read(font.length); + var fonterr=font.error; - if(fontdata.length != font.length) { - log(LOG_ERR,"!ERROR Error "+fonterr+" reading font data (read "+fontdata.length+", expected "+font.length+") errno="+errno); + if(fontdata.length != font.length) { + log(LOG_ERR,"!ERROR Error "+fonterr+" reading font data (read "+fontdata.length+", expected "+font.length+") errno="+errno); + font.close(); + continue; + } font.close(); - continue; - } - font.close(); - - client.socket.send("\x1b[="+(firstslot+parseInt(i))+";"+fontsize+"{"); - - // This doesn't send it all... - // write(fontdata); - if(!(console.telnet_mode & TELNET_MODE_OFF)) - fontdata=fontdata.replace(/\xff/g,"\xff\xff"); - while(fontdata.length) { - if(client.socket.poll(0,true)) { - // Oh my aching head... - if(client.socket.send(fontdata.substr(0,1024))) - fontdata=fontdata.substr(1024); - // if(client.socket.send(fontdata.substr(0,1))) - // fontdata=fontdata.substr(1); + + client.socket.send("\x1b[="+(firstslot+parseInt(i))+";"+fontsize+"{"); + + // This doesn't send it all... + // write(fontdata); + if(!(console.telnet_mode & TELNET_MODE_OFF)) + fontdata=fontdata.replace(/\xff/g,"\xff\xff"); + while(fontdata.length) { + if(client.socket.poll(0,true)) { + // Oh my aching head... + if(client.socket.send(fontdata.substr(0,1024))) + fontdata=fontdata.substr(1024); + // if(client.socket.send(fontdata.substr(0,1))) + // fontdata=fontdata.substr(1); + } } + if(showprogress) + client.socket.send("."); } if(showprogress) - client.socket.send("."); + client.socket.send("done.\r\n"); + if(showfont) + client.socket.send("\x1b[0;"+(firstslot+filenames.length-1)+" D"); + client.socket.nonblocking=oldblock; + console.ctrlkey_passthru=oldctrl; + console.lock_input(false); + return(0); } -if(showprogress) - client.socket.send("done.\r\n"); -if(showfont) - client.socket.send("\x1b[0;"+(firstslot+filenames.length-1)+" D"); -client.socket.nonblocking=oldblock; -console.ctrlkey_passthru=oldctrl; -console.lock_input(false); diff --git a/exec/pickfont.js b/exec/pickfont.js index ccb15398e9..2457953e3f 100644 --- a/exec/pickfont.js +++ b/exec/pickfont.js @@ -2,71 +2,76 @@ // Pass the desired fotn slot on the command line // If nothing passed, changes to font 0 (CP437) -var detect=false; -// Parse cmd line. -for(i=0; i<argc; i++) { - if(argv[i].toString().substr(0,1)=="-") { - switch(argv[i].substr(1,1).toUpperCase()) { - case 'D': /* Attempt to detect CTerm */ - detect=true; - break; +pickfont(); + +function pickfont() +{ + var detect=false; + // Parse cmd line. + for(i=0; i<argc; i++) { + if(argv[i].toString().substr(0,1)=="-") { + switch(argv[i].substr(1,1).toUpperCase()) { + case 'D': /* Attempt to detect CTerm */ + detect=true; + break; + } } } -} - -// Check if it's CTerm and supports font loading... -var ver=new Array(0,0); -if(console.terminal.substr(0,6) != 'CTerm;') { - if(detect) { - // Disable parsed input... we need to do ESC processing ourselves here. - var oldctrl=console.ctrlkey_passthru; - console.ctrlkey_passthru=-1; - write("\x1b[c"); - var response=''; + // Check if it's CTerm and supports font loading... + var ver=new Array(0,0); + if(console.terminal.substr(0,6) != 'CTerm;') { + if(detect) { + // Disable parsed input... we need to do ESC processing ourselves here. + var oldctrl=console.ctrlkey_passthru; + console.ctrlkey_passthru=-1; + + write("\x1b[c"); + var response=''; - while(1) { - var ch=console.inkey(0, 5000); - if(ch=="") - break; - response += ch; - if(ch != '\x1b' && ch != '[' && (ch < ' ' || ch > '/') && (ch<'0' || ch > '?')) - break; - } - // var printable=response; - // printable=printable.replace(/\x1b/g,""); - // alert("Response: "+printable); + while(1) { + var ch=console.inkey(0, 5000); + if(ch=="") + break; + response += ch; + if(ch != '\x1b' && ch != '[' && (ch < ' ' || ch > '/') && (ch<'0' || ch > '?')) + break; + } + // var printable=response; + // printable=printable.replace(/\x1b/g,""); + // alert("Response: "+printable); - if(response.substr(0,21) != "\x1b[=67;84;101;114;109;") { // Not CTerm + if(response.substr(0,21) != "\x1b[=67;84;101;114;109;") { // Not CTerm + console.ctrlkey_passthru=oldctrl; + return(0); + } + if(response.substr(-1) != "c") { // Not a DA + console.ctrlkey_passthru=oldctrl; + return(0); + } + var version=response.substr(21); + version=version.replace(/c/,""); + ver=version.split(/;/); + console.terminal="CTerm;"+ver.join(";"); console.ctrlkey_passthru=oldctrl; - exit(0); } - if(response.substr(-1) != "c") { // Not a DA - console.ctrlkey_passthru=oldctrl; - exit(0); + } + else { + ver=console.terminal.substr(6).split(/;/); + if(parseInt(ver[0]) < 1 || (parseInt(ver[0])==1 && parseInt(ver[1]) < 61)) { + // Too old for dynamic fonts + return(0); } - var version=response.substr(21); - version=version.replace(/c/,""); - ver=version.split(/;/); - console.terminal="CTerm;"+ver.join(";"); - console.ctrlkey_passthru=oldctrl; } -} -else { - ver=console.terminal.substr(6).split(/;/); + if(parseInt(ver[0]) < 1 || (parseInt(ver[0])==1 && parseInt(ver[1]) < 61)) { // Too old for dynamic fonts - exit(0); + return(0); } -} -if(parseInt(ver[0]) < 1 || (parseInt(ver[0])==1 && parseInt(ver[1]) < 61)) { - // Too old for dynamic fonts - exit(0); -} - -var slot=0; -if(argc>0) - slot=parseInt(argv[0]); + var slot=0; + if(argc>0) + slot=parseInt(argv[0]); -write("\x1b[0;"+slot+" D"); + write("\x1b[0;"+slot+" D"); +} -- GitLab