}
+void tmplput_MAIL_SUMM_PERMALINK(StrBuf *Target, WCTemplputParams *TP)
+{
+ message_summary *Msg = (message_summary*) CTX;
+ char perma_link[1024];
+ char encoded_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);
+
+
+ CtdlEncodeBase64(encoded_link, perma_link, strlen(perma_link), 0);
+ StrBufAppendPrintf(Target, "/B64%s", encoded_link);
+}
+
int Conditional_MAIL_MIME_ALL(StrBuf *Target, WCTemplputParams *TP)
{
RegisterNamespace("MAIL:SUMM:DATEFULL", 0, 0, tmplput_MAIL_SUMM_DATE_FULL, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:DATENO", 0, 0, tmplput_MAIL_SUMM_DATE_NO, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:N", 0, 0, tmplput_MAIL_SUMM_N, NULL, CTX_MAILSUM);
+ RegisterNamespace("MAIL:SUMM:PERMALINK", 0, 0, tmplput_MAIL_SUMM_PERMALINK, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:FROM", 0, 2, tmplput_MAIL_SUMM_FROM, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:TO", 0, 2, tmplput_MAIL_SUMM_TO, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:SUBJECT", 0, 4, tmplput_MAIL_SUMM_SUBJECT, NULL, CTX_MAILSUM);
<?!("COND:ROOM:TYPE_IS", 13, #"VIEW_BBS")><a name="<?MAIL:SUMM:N>"></a><??("X", 13)>
<??("COND:ROOM:TYPE_IS", 12, #"VIEW_WIKI")><!-- skip headers for wiki rooms -->
<div class="message_header">
-<?!("COND:ROOM:TYPE_IS", 14, #"VIEW_BBS")><a href="/readfwd?go=<?CURRENT_ROOM("U")>?start_reading_at=<?MAIL:SUMM:N>#<?MAIL:SUMM:N>">[#]</a><??("X", 14)>
+<?!("COND:ROOM:TYPE_IS", 14, #"VIEW_BBS")><a href="<?MAIL:SUMM:PERMALINK>">[#]</a><??("X", 14)>
<span><?MAIL:SUMM:DATEFULL></span>
<?_("from ")>
<??("COND:MAIL:ANON",1)>