]> code.citadel.org Git - citadel.git/blobdiff - webcit/msg_renderers.c
* Enhance the older/newer logic. It's still not quite right.
[citadel.git] / webcit / msg_renderers.c
index 94c25dd32d5edf580a26cc4506873d83de63aea6..1766f9ed2ecff226af7f69feb0b53d597ad7cb64 100644 (file)
@@ -468,7 +468,10 @@ void render_MAIL(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset
 {
        const StrBuf *TemplateMime;
 
-       Mime->Data = NewStrBufPlain(NULL, Mime->length);
+       if (Mime->Data == NULL) 
+               Mime->Data = NewStrBufPlain(NULL, Mime->length);
+       else 
+               FlushStrBuf(Mime->Data);
        read_message(Mime->Data, HKEY("view_submessage"), Mime->msgnum, Mime->PartNum, &TemplateMime);
 /*
        if ( (!IsEmptyStr(mime_submessages)) && (!section[0]) ) {
@@ -532,10 +535,13 @@ void render_MIME_VNote(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundC
                        vnote_free(v);
                        Mime->Data = Buf;
                }
-               else
-                       Mime->Data = NewStrBuf();
+               else {
+                       if (Mime->Data == NULL)
+                               Mime->Data = NewStrBuf();
+                       else
+                               FlushStrBuf(Mime->Data);
+               }
        }
-
 }
 
 void render_MIME_ICS(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
@@ -679,7 +685,10 @@ int Conditional_MAIL_SUMM_H_NODE(StrBuf *Target, WCTemplputParams *TP)
 
 void examine_text(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
 {
-       Msg->MsgBody->Data = NewStrBufPlain(NULL, SIZ);
+       if (Msg->MsgBody->Data == NULL)
+               Msg->MsgBody->Data = NewStrBufPlain(NULL, SIZ);
+       else
+               FlushStrBuf(Msg->MsgBody->Data);
 }
 
 void examine_msg4_partnum(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
@@ -1120,6 +1129,11 @@ void servcmd_readgt(char *buf, long bufsize)
        snprintf(buf, bufsize, "MSGS GT|%s", bstr("gt"));
 }
 
+void servcmd_readlt(char *buf, long bufsize)
+{
+       snprintf(buf, bufsize, "MSGS LT|%s", bstr("lt"));
+}
+
 void servcmd_readnew(char *buf, long bufsize)
 {
        snprintf(buf, bufsize, "MSGS NEW");
@@ -1132,12 +1146,13 @@ void servcmd_readold(char *buf, long bufsize)
 
 
 readloop_struct rlid[] = {
-       { {HKEY("do_search")}, servcmd_do_search},
-       { {HKEY("headers")},   servcmd_headers},
-       { {HKEY("readfwd")},   servcmd_readfwd},
-       { {HKEY("readnew")},   servcmd_readnew},
-       { {HKEY("readold")},   servcmd_readold},
-       { {HKEY("readgt")},    servcmd_readgt}
+       { {HKEY("do_search")},  servcmd_do_search       },
+       { {HKEY("headers")},    servcmd_headers         },
+       { {HKEY("readfwd")},    servcmd_readfwd         },
+       { {HKEY("readnew")},    servcmd_readnew         },
+       { {HKEY("readold")},    servcmd_readold         },
+       { {HKEY("readgt")},     servcmd_readgt          },
+       { {HKEY("readlt")},     servcmd_readlt          }
 };
 
 /* Spit out the new summary view. This is basically a static page, so clients can cache the layout, all the dirty work is javascript :) */