Some updates for news

This commit is contained in:
Michiel Broek 2004-04-14 21:01:06 +00:00
parent 031f1274b7
commit 4aacf882e6
3 changed files with 26 additions and 11 deletions

3
TODO
View File

@ -29,6 +29,9 @@ libdiesel.a:
U: Processed stringlines containing unbalanced " characters are not U: Processed stringlines containing unbalanced " characters are not
processed, instead the previous macro value will be returned. processed, instead the previous macro value will be returned.
libmsgbase.a:
N: Msg.Replyid is not filled. CRC fields are not filled.
mbsebbs: mbsebbs:
X: Better word wrapping or paragraph justification in editor. X: Better word wrapping or paragraph justification in editor.

View File

@ -205,7 +205,6 @@ void ScanNews(void)
while (fread(&Msgs, Msgshdr.recsize, 1, pAreas) == 1) { while (fread(&Msgs, Msgshdr.recsize, 1, pAreas) == 1) {
fseek(pAreas, Msgshdr.syssize, SEEK_CUR); fseek(pAreas, Msgshdr.syssize, SEEK_CUR);
// Syslog('m', "Check newsgroup: %s %d", Msgs.Newsgroup, Msgs.Type);
if ((Msgs.Active) && strlen(Msgs.Newsgroup) && (Msgs.Type == NEWS)) { if ((Msgs.Active) && strlen(Msgs.Newsgroup) && (Msgs.Type == NEWS)) {
if (IsSema((char *)"upsalarm")) { if (IsSema((char *)"upsalarm")) {
Syslog('+', "Detected upsalarm semafore, aborting newsscan"); Syslog('+', "Detected upsalarm semafore, aborting newsscan");
@ -237,6 +236,9 @@ void ScanNews(void)
free(tmp->field); free(tmp->field);
free(tmp); free(tmp);
} }
nntp_close();
do_flush = TRUE; do_flush = TRUE;
if (!do_quiet) if (!do_quiet)
printf("\r \r"); printf("\r \r");

View File

@ -78,6 +78,16 @@ void send_xlat(char *inp)
char *make_msgid(unsigned long nr, unsigned long crc)
{
static char buf[100];
sprintf(buf, "<%lu$%8lx@%s>", nr, crc, CFG.sysdomain);
return buf;
}
/* /*
* ARTICLE * ARTICLE
* BODY * BODY
@ -135,7 +145,7 @@ void command_abhs(char *buf)
} }
if (strcasecmp(cmd, "STAT") == 0) { if (strcasecmp(cmd, "STAT") == 0) {
send_nntp("223 %lu <%lu$%s@MBNNTP> Article retrieved", art, art, currentgroup); send_nntp("223 %lu %s Article retrieved", art, make_msgid(art, StringCRC32(Msg.Msgid)));
return; return;
} }
@ -147,11 +157,11 @@ void command_abhs(char *buf)
if (Msg_Read(art, 75)) { if (Msg_Read(art, 75)) {
if (strcasecmp(cmd, "ARTICLE") == 0) if (strcasecmp(cmd, "ARTICLE") == 0)
send_nntp("220 %ld <%ld$%s@MBNNTP> Article retrieved - Head and body follow", art, art, currentgroup); send_nntp("220 %ld %s Article retrieved - Head and body follow", art, make_msgid(art, StringCRC32(Msg.Msgid)));
if (strcasecmp(cmd, "HEAD") == 0) if (strcasecmp(cmd, "HEAD") == 0)
send_nntp("221 %ld <%ld$%s@MBNNTP> Article retrieved - Head follows", art, art, currentgroup); send_nntp("221 %ld %s Article retrieved - Head follows", art, make_msgid(art, StringCRC32(Msg.Msgid)));
if (strcasecmp(cmd, "BODY") == 0) if (strcasecmp(cmd, "BODY") == 0)
send_nntp("222 %ld <%ld$%s@MBNNTP> Article retrieved - Body follows", art, art, currentgroup); send_nntp("222 %ld %s Article retrieved - Body follows", art, make_msgid(art, StringCRC32(Msg.Msgid)));
if ((strcasecmp(cmd, "ARTICLE") == 0) || (strcasecmp(cmd, "HEAD") == 0)) { if ((strcasecmp(cmd, "ARTICLE") == 0) || (strcasecmp(cmd, "HEAD") == 0)) {
@ -160,9 +170,9 @@ void command_abhs(char *buf)
send_nntp("Newsgroups: %s", currentgroup); send_nntp("Newsgroups: %s", currentgroup);
send_nntp("Subject: %s", Msg.Subject); send_nntp("Subject: %s", Msg.Subject);
send_nntp("Date: %s", rfcdate(Msg.Written)); send_nntp("Date: %s", rfcdate(Msg.Written));
send_nntp("Message-ID: <%lu$%s@MBNNTP>", art, currentgroup); send_nntp("Message-ID: %s", make_msgid(art, StringCRC32(Msg.Msgid)));
if (Msg.Reply) if (strlen(Msg.Replyid))
send_nntp("References: <%lu$%s@MBNNTP>", Msg.Reply, currentgroup); send_nntp("References: %s", make_msgid(Msg.Reply, StringCRC32(Msg.Replyid)));
send_nntp("X-JAM-From: %s <%s>", Msg.From, Msg.FromAddress); send_nntp("X-JAM-From: %s <%s>", Msg.From, Msg.FromAddress);
if (strlen(Msg.To)) if (strlen(Msg.To))
send_nntp("X-JAM-To: %s", Msg.To); send_nntp("X-JAM-To: %s", Msg.To);
@ -407,10 +417,10 @@ void command_xover(char *cmd)
} while ((p = (char *)MsgText_Next()) != NULL); } while ((p = (char *)MsgText_Next()) != NULL);
} }
} }
sprintf(msgid, "<%ld$%s@MBNNTP>", i, currentgroup); sprintf(msgid, "%s", make_msgid(i, StringCRC32(Msg.Msgid)));
reply[0] = 0; reply[0] = 0;
if (Msg.Reply) if (strlen(Msg.Replyid))
sprintf(reply, "<%ld$%s@MBNNTP>", Msg.Reply, currentgroup); sprintf(reply, "%s", make_msgid(Msg.Reply, StringCRC32(Msg.Replyid)));
send_nntp("%lu\t%s\t%s <%s>\t%s\t%s\t%s\t%d\t%d", i, Msg.Subject, Msg.From, Msg.FromAddress, send_nntp("%lu\t%s\t%s <%s>\t%s\t%s\t%s\t%d\t%d", i, Msg.Subject, Msg.From, Msg.FromAddress,
rfcdate(Msg.Written), msgid, reply, bytecount, linecount); rfcdate(Msg.Written), msgid, reply, bytecount, linecount);
} }