CheckConvertBufs(WCC);
FreeStrBuf(&Msg->reply_inreplyto);
Msg->reply_inreplyto = NewStrBufPlain(NULL, StrLength(HdrLine));
+ Msg->reply_inreplyto_hash = ThreadIdHash(HdrLine);
StrBuf_RFC822_2_Utf8(Msg->reply_inreplyto,
HdrLine,
WCC->DefaultCharset,
CheckConvertBufs(WCC);
FreeStrBuf(&Msg->reply_references);
Msg->reply_references = NewStrBufPlain(NULL, StrLength(HdrLine));
+ Msg->reply_references_hash = ThreadIdHash(HdrLine);
StrBuf_RFC822_2_Utf8(Msg->reply_references,
HdrLine,
WCC->DefaultCharset,
}
-message_summary *ReadOneMessageSummary(StrBuf *RawMessage, const char *DefaultSubject, StrBuf *FoundCharset, long MsgNum)
+int ReadOneMessageSummary(message_summary *Msg, StrBuf *FoundCharset, StrBuf *Buf)
{
void *vHdr;
headereval *Hdr;
- message_summary *Msg;
- StrBuf *Buf;
const char *buf;
const char *ebuf;
int nBuf;
long len;
- Buf = NewStrBuf();
-
- serv_printf("MSG0 %ld|1", MsgNum); /* ask for headers only */
+ serv_printf("MSG0 %ld|1", Msg->msgnum); /* ask for headers only */
StrBuf_ServGetln(Buf);
- if (GetServerStatus(Buf, NULL) == 1) {
- FreeStrBuf(&Buf);
- return NULL;
+ if (GetServerStatus(Buf, NULL) != 1) {
+ return 0;
}
- Msg = (message_summary*)malloc(sizeof(message_summary));
- memset(Msg, 0, sizeof(message_summary));
while (len = StrBuf_ServGetln(Buf),
(len >= 0) &&
((len != 3) ||
}
else syslog(LOG_INFO, "Don't know how to handle Message Headerline [%s]", ChrPtr(Buf));
}
- return Msg;
+ return 1;
}
void tmplput_MAIL_SUMM_N(StrBuf *Target, WCTemplputParams *TP)
void tmplput_MAIL_SUMM_PERMALINK(StrBuf *Target, WCTemplputParams *TP)
{
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
- char perma_link[1024];
-
- strcpy(perma_link, "/readfwd?go=");
- urlesc(&perma_link[12], sizeof(perma_link) - 12, (char *)ChrPtr(WC->CurRoom.name) );
- sprintf(&perma_link[strlen(perma_link)], "?start_reading_at=%ld#%ld", Msg->msgnum, Msg->msgnum);
- StrBufAppendPrintf(Target, "%s", perma_link);
+ StrBuf *perma_link;
+ const StrBuf *View;
+
+ perma_link = NewStrBufPlain(HKEY("/readfwd?go="));
+ StrBufUrlescAppend(perma_link, WC->CurRoom.name, NULL);
+ View = SBSTR("view");
+ if (View != NULL) {
+ StrBufAppendBufPlain(perma_link, HKEY("?view="), 0);
+ StrBufAppendBuf(perma_link, View, 0);
+ }
+ StrBufAppendBufPlain(perma_link, HKEY("?start_reading_at="), 0);
+ StrBufAppendPrintf(perma_link, "%ld#%ld", Msg->msgnum, Msg->msgnum);
+ StrBufAppendBuf(Target, perma_link, 0);
+ FreeStrBuf(&perma_link);
}
FreeStrBuf(&Mime->Data);
Mime->Data = NewStrBufPlain(md_as_html, -1);
}
-// free(md_as_html);
mkd_cleanup(doc);
}
}