From 76fbfb15ec939b2a3401d6fec79ee0c9fdcae932 Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Debian Linux)" <rob@synchro.net> Date: Sun, 10 Nov 2024 14:48:23 -0800 Subject: [PATCH] Use original RFC822-formatted subject, if available (e.g. recv'd via SMTP) This solves issue #817 for TLDR messages imported into DOVE-Net Tech Talk, because those messages are imported via SMTP originally and thus have the original (MIME/Q-encoded subject) in the message header (as RFC822SUBJECT). For other messages with UTF-8 characters in their header fields (e.g. subject), we'll need a different solution (Q-encode header fields that contain non-ASCII chars on the fly), and then this solution could maybe be reverted. --- exec/load/newsutil.js | 14 ++++++++++++-- exec/nntpservice.js | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) mode change 100644 => 100755 exec/load/newsutil.js diff --git a/exec/load/newsutil.js b/exec/load/newsutil.js old mode 100644 new mode 100755 index 129931c62a..ad34063e58 --- a/exec/load/newsutil.js +++ b/exec/load/newsutil.js @@ -4,11 +4,21 @@ require("mailutil.js", 'mail_get_name'); require("smbdefs.js", 'RFC822HEADER'); +function get_news_subject(hdr) +{ + if(hdr.field_list !== undefined) + for(var i in hdr.field_list) { + if(hdr.field_list[i].type == RFC822SUBJECT) + return hdr.field_list[i].data; + } + return hdr.subject; +} + function write_news_header(hdr,writeln) { /* Required header fields */ writeln("To: " + hdr.to); - writeln("Subject: " + hdr.subject); + writeln("Subject: " + get_news_subject(hdr)); writeln("Message-ID: " + hdr.id); writeln("Date: " + hdr.date); @@ -48,7 +58,7 @@ function write_news_header(hdr,writeln) var content_type; if(hdr.field_list!=undefined) { - for(i in hdr.field_list) { + for(var i in hdr.field_list) { if(hdr.field_list[i].type==RFC822HEADER) { if(hdr.field_list[i].data.toLowerCase().indexOf("content-type:")==0) content_type = hdr.field_list[i].data; diff --git a/exec/nntpservice.js b/exec/nntpservice.js index bbd47280f0..7e0801c59e 100644 --- a/exec/nntpservice.js +++ b/exec/nntpservice.js @@ -561,7 +561,7 @@ while(client.socket.is_connected && !quit) { continue; writeln(format("%u\t%s\t%s\t%s\t%s\t%s\t%u\t%u\tXref:%s" ,i - ,hdr.subject + ,get_news_subject(hdr) ,hdr.from ,hdr.date ,hdr.id // message-id @@ -615,7 +615,7 @@ while(client.socket.is_connected && !quit) { field=hdr.to; break; case "subject": - field=hdr.subject; + field=get_news_subject(hdr); break; case "from": field=hdr.from; -- GitLab