From 191fc259cbd372321bef819072a91457410ca323 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Sat, 22 Jan 2000 05:13:56 +0000 Subject: [PATCH] * Added some more functionality to the string tokenizer --- citadel/ChangeLog | 4 +++ citadel/serv_smtp.c | 66 +++++++++++++++++++++++++++++++++++++++++++++ citadel/tools.c | 59 +++++++++++++++++++++++++++++++++++----- citadel/tools.h | 5 ++-- 4 files changed, 125 insertions(+), 9 deletions(-) diff --git a/citadel/ChangeLog b/citadel/ChangeLog index 2561a507b..cf3cc72a4 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,7 @@ $Log$ +Revision 1.449 2000/01/22 05:13:56 ajc +* Added some more functionality to the string tokenizer + Revision 1.448 2000/01/17 20:57:43 ajc * CR to CRLF hacks (lose, lose, lose) @@ -1572,3 +1575,4 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import + diff --git a/citadel/serv_smtp.c b/citadel/serv_smtp.c index 60dd06d4f..517e5d040 100644 --- a/citadel/serv_smtp.c +++ b/citadel/serv_smtp.c @@ -667,12 +667,78 @@ void smtp_command_loop(void) { /* SMTP CLIENT (OUTBOUND PROCESSING) STUFF */ /*****************************************************************************/ + + +/* + * smtp_do_procmsg() + * + * Called by smtp_do_queue() to handle an individual message. + */ +void smtp_do_procmsg(long msgnum) { + struct CtdlMessage *msg; + char *instr; + int i; + int lines; + char buf[256]; + char key[256]; + long msgid = (-1); + + msg = CtdlFetchMessage(msgnum); + if (msg == NULL) { + lprintf(3, "SMTP: tried %ld but no such message!\n", msgnum); + return; + } + + instr = msg->cm_fields['M']; + + /* Strip out the headers amd any other non-instruction line */ + lines = num_tokens(instr, '\n'); + for (i=0; i\n", buf); + remove_token(instr, i, '|'); + --lines; + --i; + } + } + + /* Learn the message ID */ + lines = num_tokens(instr, '\n'); + for (i=0; iquickroom, SMTP_SPOOLOUT_ROOM) != 0) { + lprintf(3, "Cannot find room <%s>\n", SMTP_SPOOLOUT_ROOM); + return; + } + CtdlForEachMessage(MSGS_ALL, 0L, SPOOLMIME, NULL, smtp_do_procmsg); + + lprintf(5, "SMTP: queue run completed\n"); } diff --git a/citadel/tools.c b/citadel/tools.c index 052122e66..d8652c3b6 100644 --- a/citadel/tools.c +++ b/citadel/tools.c @@ -30,22 +30,22 @@ char *safestrncpy(char *dest, const char *src, size_t n) /* - * num_parms() - discover number of parameters... + * num_tokens() - discover number of parameters/tokens in a string */ -int num_parms(char *source) -{ +int num_tokens(char *source, char tok) { int a; int count = 1; - for (a=0; a