StrBuf *wefw = NULL;
StrBuf *msgn = NULL;
StrBuf *from = NULL;
- StrBuf *node = NULL;
StrBuf *rfca = NULL;
StrBuf *rcpt = NULL;
StrBuf *cccc = NULL;
StrBuf *replyto = NULL;
StrBuf *nvto = NULL;
+ int message_originated_locally = 0;
serv_printf("MSG0 %ld|1", replying_to);
StrBuf_ServGetln(Line);
}
break;
+ case eIsLocal: {
+ message_originated_locally = 1;
+ break;
+ }
+
case eWeferences:
{
int rrtok;
}
break;
}
-
case eRecipient:
rcpt = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
break;
-
-
case eCarbonCopY:
cccc = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
break;
-
-
- case eNodeName:
- node = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
- break;
case eReplyTo:
replyto = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
break;
putbstr("nvto", nvto);
break;
case eXclusivID:
- case eHumanNode:
case eJournal:
case eListID:
case eMesageText:
- case eOriginalRoom:
case eMessagePath:
case eSpecialField:
case eTimestamp:
case eFormatType:
case eMessagePart:
case eSubFolder:
- case ePevious:
case eLastHeader:
break;
*/
if ((ReplyMode == eReply) || (ReplyMode == eReplyAll)) {
StrBuf *to_rcpt;
+
if ((StrLength(replyto) > 0) && (ReplyMode == eReplyAll)) {
to_rcpt = NewStrBuf();
StrBufAppendBuf(to_rcpt, replyto, 0);
}
+
else if (StrLength(rfca) > 0) {
to_rcpt = NewStrBuf();
StrBufAppendBuf(to_rcpt, from, 0);
StrBufAppendBuf(to_rcpt, rfca, 0);
StrBufAppendBufPlain(to_rcpt, HKEY(">"), 0);
}
+
else {
to_rcpt = from;
from = NULL;
- if ( (StrLength(node) > 0)
- && (strcasecmp(ChrPtr(node), ChrPtr(WCC->serv_info->serv_nodename)))
- ) {
- StrBufAppendBufPlain(to_rcpt, HKEY(" @ "), 0);
- StrBufAppendBuf(to_rcpt, node, 0);
- }
}
PutBstr(HKEY("recp"), to_rcpt);
}
PutBstr(HKEY("cc"), cc_rcpt);
}
}
+
+ // FOOFOO
+ syslog(LOG_DEBUG, "wefw = %s", ChrPtr(wefw));
+ syslog(LOG_DEBUG, "msgn = %s", ChrPtr(msgn));
+ syslog(LOG_DEBUG, "from = %s", ChrPtr(from));
+ syslog(LOG_DEBUG, "rfca = %s", ChrPtr(rfca));
+ syslog(LOG_DEBUG, "rcpt = %s", ChrPtr(rcpt));
+ syslog(LOG_DEBUG, "cccc = %s", ChrPtr(cccc));
+ syslog(LOG_DEBUG, "replyto = %s", ChrPtr(replyto));
+ syslog(LOG_DEBUG, "nvto = %s", ChrPtr(nvto));
+ syslog(LOG_DEBUG, "local = %d" , message_originated_locally);
+
FreeStrBuf(&wefw);
FreeStrBuf(&msgn);
FreeStrBuf(&from);
- FreeStrBuf(&node);
FreeStrBuf(&rfca);
FreeStrBuf(&rcpt);
FreeStrBuf(&cccc);
}
-/*----------------------------------------------------------------------------*/
-/* Don't wanna know... or? */
+/* Stub handlers for MIME parser */
void examine_pref(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {return;}
void examine_suff(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {return;}
void examine_path(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {return;}
+
void examine_content_encoding(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
{
-/* TODO: do we care? */
+/* nothing to do here */
}
void examine_exti(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
{
- /* we don't care */
+/* nothing to do here */
}
void examine_nhdr(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
void examine_from(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
{
- wcsession *WCC = WC;
-
- CheckConvertBufs(WCC);
+ CheckConvertBufs(WC);
FreeStrBuf(&Msg->from);
Msg->from = NewStrBufPlain(NULL, StrLength(HdrLine));
StrBuf_RFC822_2_Utf8(Msg->from,
HdrLine,
- WCC->DefaultCharset,
+ WC->DefaultCharset,
FoundCharset,
- WCC->ConvertBuf1,
- WCC->ConvertBuf2);
+ WC->ConvertBuf1,
+ WC->ConvertBuf2);
}
void tmplput_MAIL_SUMM_FROM(StrBuf *Target, WCTemplputParams *TP)
{
void examine_subj(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
{
- wcsession *WCC = WC;
-
- CheckConvertBufs(WCC);
+ CheckConvertBufs(WC);
FreeStrBuf(&Msg->subj);
Msg->subj = NewStrBufPlain(NULL, StrLength(HdrLine));
StrBuf_RFC822_2_Utf8(Msg->subj,
HdrLine,
- WCC->DefaultCharset,
+ WC->DefaultCharset,
FoundCharset,
- WCC->ConvertBuf1,
- WCC->ConvertBuf2);
+ WC->ConvertBuf1,
+ WC->ConvertBuf2);
}
void tmplput_MAIL_SUMM_SUBJECT(StrBuf *Target, WCTemplputParams *TP)
{
void examine_msgn(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
- wcsession *WCC = WC;
long Offset = 0;
const char *pOffset;
- CheckConvertBufs(WCC);
+ CheckConvertBufs(WC);
FreeStrBuf(&Msg->reply_inreplyto);
Msg->reply_inreplyto = NewStrBufPlain(NULL, StrLength(HdrLine));
pOffset = strchr(ChrPtr(HdrLine), '/');
Msg->reply_inreplyto_hash = ThreadIdHashOffset(HdrLine, Offset);
StrBuf_RFC822_2_Utf8(Msg->reply_inreplyto,
HdrLine,
- WCC->DefaultCharset,
+ WC->DefaultCharset,
FoundCharset,
- WCC->ConvertBuf1,
- WCC->ConvertBuf2);
+ WC->ConvertBuf1,
+ WC->ConvertBuf2);
}
-void tmplput_MAIL_SUMM_INREPLYTO(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+void tmplput_MAIL_SUMM_INREPLYTO(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
StrBufAppendTemplate(Target, TP, Msg->reply_inreplyto, 0);
}
-int Conditional_MAIL_SUMM_UNREAD(StrBuf *Target, WCTemplputParams *TP)
-{
+
+int Conditional_MAIL_SUMM_UNREAD(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
return (Msg->Flags & MSGFLAG_READ) != 0;
}
-void examine_wefw(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+
+void examine_wefw(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
wcsession *WCC = WC;
long Offset = 0;
const char *pOffset;
WCC->ConvertBuf1,
WCC->ConvertBuf2);
}
-void tmplput_MAIL_SUMM_REFIDS(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+void tmplput_MAIL_SUMM_REFIDS(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
StrBufAppendTemplate(Target, TP, Msg->reply_references, 0);
}
-void examine_replyto(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+
+void examine_replyto(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
wcsession *WCC = WC;
CheckConvertBufs(WCC);
}
StrBufAppendBuf(Msg->AllRcpt, Msg->ReplyTo, 0);
}
-void tmplput_MAIL_SUMM_REPLYTO(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+void tmplput_MAIL_SUMM_REPLYTO(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
StrBufAppendTemplate(Target, TP, Msg->ReplyTo, 0);
}
-void examine_cccc(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+
+void examine_cccc(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
wcsession *WCC = WC;
CheckConvertBufs(WCC);
}
StrBufAppendBuf(Msg->AllRcpt, Msg->cccc, 0);
}
-void tmplput_MAIL_SUMM_CCCC(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+void tmplput_MAIL_SUMM_CCCC(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
StrBufAppendTemplate(Target, TP, Msg->cccc, 0);
}
-void examine_room(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+void examine_room(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
if ((StrLength(HdrLine) > 0) &&
(strcasecmp(ChrPtr(HdrLine), ChrPtr(WC->CurRoom.name)))) {
FreeStrBuf(&Msg->Room);
}
-void tmplput_MAIL_SUMM_ORGROOM(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_MAIL_SUMM_ORGROOM(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
StrBufAppendTemplate(Target, TP, Msg->Room, 0);
}
-void examine_rfca(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+void examine_rfca(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
FreeStrBuf(&Msg->Rfca);
Msg->Rfca = NewStrBufDup(HdrLine);
}
-void examine_locl(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+void examine_locl(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
Msg->is_local = 1;
}
-void tmplput_MAIL_SUMM_RFCA(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_MAIL_SUMM_RFCA(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
StrBufAppendTemplate(Target, TP, Msg->Rfca, 0);
}
-int Conditional_MAIL_SUMM_RFCA(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+int Conditional_MAIL_SUMM_RFCA(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
return StrLength(Msg->Rfca) > 0;
}
-int Conditional_MAIL_SUMM_CCCC(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+int Conditional_MAIL_SUMM_CCCC(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
return StrLength(Msg->cccc) > 0;
}
-int Conditional_MAIL_SUMM_REPLYTO(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+int Conditional_MAIL_SUMM_REPLYTO(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
return StrLength(Msg->ReplyTo) > 0;
}
-void examine_nvto(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+
+void examine_nvto(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
wcsession *WCC = WC;
CheckConvertBufs(WCC);
}
-void examine_rcpt(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+void examine_rcpt(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
wcsession *WCC = WC;
CheckConvertBufs(WCC);
}
StrBufAppendBuf(Msg->AllRcpt, Msg->to, 0);
}
-void tmplput_MAIL_SUMM_TO(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+void tmplput_MAIL_SUMM_TO(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
StrBufAppendTemplate(Target, TP, Msg->to, 0);
}
-int Conditional_MAIL_SUMM_TO(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+int Conditional_MAIL_SUMM_TO(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
return StrLength(Msg->to) != 0;
}
-int Conditional_MAIL_SUMM_SUBJ(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+int Conditional_MAIL_SUMM_SUBJ(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
return StrLength(Msg->subj) != 0;
}
-void tmplput_MAIL_SUMM_ALLRCPT(StrBuf *Target, WCTemplputParams *TP)
-{
+
+
+void tmplput_MAIL_SUMM_ALLRCPT(StrBuf *Target, WCTemplputParams *TP) {
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
StrBufAppendTemplate(Target, TP, Msg->AllRcpt, 0);
}
-
-void tmplput_SUMM_COUNT(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_SUMM_COUNT(StrBuf *Target, WCTemplputParams *TP) {
StrBufAppendPrintf(Target, "%d", GetCount( WC->summ));
}
-HashList *iterate_get_mailsumm_All(StrBuf *Target, WCTemplputParams *TP)
-{
+
+HashList *iterate_get_mailsumm_All(StrBuf *Target, WCTemplputParams *TP) {
return WC->summ;
}
-void examine_time(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
-{
+
+
+void examine_time(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {
Msg->date = StrTol(HdrLine);
}
+
void tmplput_MAIL_SUMM_DATE_BRIEF(StrBuf *Target, WCTemplputParams *TP)
{
char datebuf[64];
{ {HKEY("readlt")}, servcmd_readlt }
};
-const char* fieldMnemonics[] = {
+
+/* I think these are supposed to align with _eMessageField in messages.h
+ * So if you change one you have to change the other.
+ * TODO: figure out who did this and beat them with a wet noodle.
+ */
+const char *fieldMnemonics[] = {
"from", /* A -> eAuthor */
"exti", /* E -> eXclusivID */
"rfca", /* F -> erFc822Addr */
"rep2", /* K -> eReplyTo */
"list", /* L -> eListID */
"text", /* M -> eMesageText */
- "room", /* O -> eOriginalRoom */
+ "locl", /* eIsLocal */
"path", /* P -> eMessagePath */
"rcpt", /* R -> eRecipient */
"spec", /* S -> eSpecialField */
"nvto", /* V -> eenVelopeTo */
"wefw", /* W -> eWeferences */
"cccc", /* Y -> eCarbonCopY */
- "nhdr", /* % -> eHeaderOnly */
- "type", /* % -> eFormatType */
- "part", /* % -> eMessagePart */
- "suff", /* eSubFolder */
- "pref", /* ePrefix */
- "locl" /* eIsLocal */
+ "nhdr", /* eHeaderOnly */
+ "type", /* eFormatType */
+ "part", /* eMessagePart */
+ "suff" /* eSubFolder */
};
HashList *msgKeyLookup = NULL;
long i = 0;
msgKeyLookup = NewHash (1, FourHash);
-
- while (i != eLastHeader) {
+ for (i=0; i<eLastHeader; ++i) {
if (fieldMnemonics[i] != NULL) {
Put(msgKeyLookup, fieldMnemonics[i], 4, (void*)i, reference_free_handler);
}
- i++;
}
}