diff --git a/exec/newslink.js b/exec/newslink.js index 4b949687abc5c67f972e16c56f0af9f7eca63cee..e7cc488fbf47568f3af7b555438dbcc0ff18c80d 100644 --- a/exec/newslink.js +++ b/exec/newslink.js @@ -11,9 +11,15 @@ // port TCP port number (defaults to 119) // user username (optional) // pass password (optional) -// area subboard (internal code) newsgroup +// area subboard (internal code) newsgroup flags // ... +// Defined area flags: +// x do not add tearlines & taglines to exported messages +// n do not add "From Newsgroup" text to imported messages +// t do not add tearline to imported messages +// a convert extended-ASCII chars to ASCII on imported messages + const REVISION = "$Revision$".split(' ')[1]; printf("Synchronet NewsLink %s session started\r\n", REVISION); @@ -263,18 +269,25 @@ for(i in area) { if(hdr.from_net_type==NET_INTERNET) /* no dupe loop */ continue; if(hdr.from_net_type /* don't gate messages between net types */ - && msgbase.settings!=null && !(msgbase.settings&SUB_GATE)) + && msgbase.settings!=undefined && !(msgbase.settings&SUB_GATE)) continue; - body = msgbase.get_msg_body(false, ptr + body = msgbase.get_msg_body( + false /* retrieve by offset */ + ,ptr /* message number */ ,true /* remove ctrl-a codes */ ,true /* rfc822 formatted text */ - ,true /* include tails */); + ,true /* include tails */ + ); if(body == null) { printf("!FAILED to read message number %ld\r\n",ptr); continue; } - body = ascii_str(body); + if(msgbase.settings!=undefined && msgbase.settings&SUB_ASCII) { + /* Convert Ex-ASCII chars to approximate ASCII equivalents */ + body = ascii_str(body); + hdr.subject = ascii_str(hdr.subject); + } if(flags.indexOf('x')==-1) { body += tearline; body += tagline; @@ -529,6 +542,11 @@ for(i in area) { continue; } + if(flags.indexOf('a')>=0) { // import ASCII only (convert ex-ASCII to ASCII) + body = ascii_str(body); + hdr.subject = ascii_str(hdr.subject); + } + hdr.from_net_type=NET_INTERNET; // hdr.from_net_addr=hdr.from; if(flags.indexOf('t')==-1)