From e39abfe890e662c4789e3e8f51394c0991172618 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Sun, 14 Dec 2008 21:07:35 +0000 Subject: [PATCH] * some tiny cleanups... --- webcit/messages.c | 31 +++++++++----------------- webcit/msg_renderers.c | 49 +++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 45 deletions(-) diff --git a/webcit/messages.c b/webcit/messages.c index 9d14b3c38..93bedd321 100644 --- a/webcit/messages.c +++ b/webcit/messages.c @@ -56,8 +56,6 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in headereval *Hdr; void *vHdr; char buf[SIZ]; -// char mime_submessages[256] = ""; - char reply_references[1024] = ""; int Done = 0; int state=0; long len; @@ -112,6 +110,7 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in StrBufCutLeft(Buf, StrLength(HdrToken) + 1); lprintf(1, ":: [%s] = [%s]\n", ChrPtr(HdrToken), ChrPtr(Buf)); + /* look up one of the examine_* functions to parse the content */ if (GetHash(MsgHeaderHandler, SKEY(HdrToken), &vHdr) && (vHdr != NULL)) { Hdr = (headereval*)vHdr; @@ -136,6 +135,7 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in if (StrLength(HdrToken) > 0) { StrBufCutLeft(Buf, StrLength(HdrToken) + 1); lprintf(1, ":: [%s] = [%s]\n", ChrPtr(HdrToken), ChrPtr(Buf)); + /* the examine*'s know how to do with mime headers too... */ if (GetHash(MsgHeaderHandler, SKEY(HdrToken), &vHdr) && (vHdr != NULL)) { Hdr = (headereval*)vHdr; @@ -165,11 +165,13 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in if (Msg->AllAttach == NULL) Msg->AllAttach = NewHash(1,NULL); + /* now we put the body mimepart we read above into the mimelist */ Put(Msg->AllAttach, SKEY(Msg->MsgBody->PartNum), Msg->MsgBody, DestroyMime); /* strip the bare contenttype, so we ommit charset etc. */ StrBufExtract_token(Buf, Msg->MsgBody->ContentType, 0, ';'); StrBufTrim(Buf); + /* look up the renderer, that will convert this mimeitem into the htmlized form */ if (GetHash(MimeRenderHandler, SKEY(Buf), &vHdr) && (vHdr != NULL)) { RenderMimeFunc Render; @@ -184,7 +186,7 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in int rrtok = num_tokens(ChrPtr(Msg->reply_references), '|'); int rrlen = StrLength(Msg->reply_references); if ( ((rrtok >= 3) && (rrlen > 900)) || (rrtok > 10) ) { - remove_token(reply_references, 1, '|');////todo + StrBufRemove_token(Msg->reply_references, 1, '|'); } } @@ -220,6 +222,8 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, in StrBufAppendBuf(Msg->reply_to, Msg->from, 0); } } + + /* now check if we need to translate some mimeparts, and remove the duplicate */ it = GetNewHashPos(Msg->AllAttach, 0); while (GetNextHashPos(Msg->AllAttach, it, &len, &Key, &vMime) && (vMime != NULL)) { @@ -379,26 +383,16 @@ int load_msg_ptrs(char *servcmd, int with_headers) wcsession *WCC = WC; message_summary *Msg; StrBuf *Buf, *Buf2; - ///char buf[1024]; - ///time_t datestamp; - //char fullname[128]; - //char nodename[128]; - //char inetaddr[128]; - //char subject[1024]; - ///char *ptr; - int nummsgs; - ////int sbjlen; + int nummsgs = 0; int maxload = 0; long len; int n; - ////int num_summ_alloc = 0; if (WCC->summ != NULL) { if (WCC->summ != NULL) DeleteHash(&WCC->summ); } WCC->summ = NewHash(1, Flathash); - nummsgs = 0; maxload = 10000; Buf = NewStrBuf(); @@ -560,7 +554,6 @@ void readloop(long oper) char buf[SIZ]; char old_msgs[SIZ]; int a = 0; - ///int b = 0; int nummsgs; long startmsg = 0; int maxmsgs = 0; @@ -676,7 +669,7 @@ void readloop(long oper) output_headers(1, 1, 1, 0, 0, 0); - /* + /* TODO: how can we best sort this in? if (WCC->is_mobile) { maxmsgs = 20; snprintf(cmd, sizeof(cmd), "MSGS %s|%s||1", @@ -685,14 +678,12 @@ void readloop(long oper) ); SortBy = eRDate; } - + */ /* * Are we doing a summary view? If so, we need to know old messages * and new messages, so we can do that pretty boldface thing for the * new messages. */ - - nummsgs = load_msg_ptrs(cmd, (is_summary || WCC->is_mobile)); if (nummsgs == 0) { if (care_for_empty_list) { @@ -1188,12 +1179,10 @@ void display_enter(void) char buf[SIZ]; long now; const StrBuf *display_name = NULL; - /////wc_attachment *att; int recipient_required = 0; int subject_required = 0; int recipient_bad = 0; int is_anonymous = 0; - wcsession *WCC = WC; now = time(NULL); diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c index c10c7cd98..97e0b66f9 100644 --- a/webcit/msg_renderers.c +++ b/webcit/msg_renderers.c @@ -70,7 +70,7 @@ void RegisterMimeRenderer(const char *HeaderName, long HdrNLen, RenderMimeFunc M /*----------------------------------------------------------------------------*/ /* - * qsort() compatible function to compare two longs in descending order. + * comparator for two longs in descending order. */ int longcmp_r(const void *s1, const void *s2) { long l1; @@ -85,7 +85,7 @@ int longcmp_r(const void *s1, const void *s2) { } /* - * qsort() compatible function to compare two longs in descending order. + * comparator for longs; descending order. */ int qlongcmp_r(const void *s1, const void *s2) { long l1 = (long) s1; @@ -98,7 +98,7 @@ int qlongcmp_r(const void *s1, const void *s2) { /* - * qsort() compatible function to compare two message summary structs by ascending subject. + * comparator for message summary structs by ascending subject. */ int summcmp_subj(const void *s1, const void *s2) { message_summary *summ1; @@ -110,7 +110,7 @@ int summcmp_subj(const void *s1, const void *s2) { } /* - * qsort() compatible function to compare two message summary structs by descending subject. + * comparator for message summary structs by descending subject. */ int summcmp_rsubj(const void *s1, const void *s2) { message_summary *summ1; @@ -122,7 +122,7 @@ int summcmp_rsubj(const void *s1, const void *s2) { } /* - * qsort() compatible function to compare two message summary structs by ascending sender. + * comparator for message summary structs by ascending sender. */ int summcmp_sender(const void *s1, const void *s2) { message_summary *summ1; @@ -134,7 +134,7 @@ int summcmp_sender(const void *s1, const void *s2) { } /* - * qsort() compatible function to compare two message summary structs by descending sender. + * comparator for message summary structs by descending sender. */ int summcmp_rsender(const void *s1, const void *s2) { message_summary *summ1; @@ -146,7 +146,7 @@ int summcmp_rsender(const void *s1, const void *s2) { } /* - * qsort() compatible function to compare two message summary structs by ascending date. + * comparator for message summary structs by ascending date. */ int summcmp_date(const void *s1, const void *s2) { message_summary *summ1; @@ -161,7 +161,7 @@ int summcmp_date(const void *s1, const void *s2) { } /* - * qsort() compatible function to compare two message summary structs by descending date. + * comparator for message summary structs by descending date. */ int summcmp_rdate(const void *s1, const void *s2) { message_summary *summ1; @@ -180,6 +180,10 @@ int summcmp_rdate(const void *s1, const void *s2) { 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? +} void examine_nhdr(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { @@ -277,8 +281,6 @@ void tmplput_MAIL_SUMM_CCCC(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, } - - void examine_room(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { if ((StrLength(HdrLine) > 0) && @@ -534,11 +536,6 @@ void tmplput_MAIL_SUMM_NATTACH(StrBuf *Target, int nArgs, WCTemplateToken *Token } - - - - - void examine_hnod(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { FreeStrBuf(&Msg->hnod); @@ -566,13 +563,9 @@ void examine_text(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) void examine_msg4_partnum(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { Msg->MsgBody->PartNum = NewStrBufDup(HdrLine); - StrBufTrim(Msg->MsgBody->PartNum);/////TODO: striplt == trim? + StrBufTrim(Msg->MsgBody->PartNum); } -void examine_content_encoding(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) -{ -////TODO: do we care? -} void examine_content_lengh(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { @@ -1015,9 +1008,11 @@ InitModule_MSGRENDERERS summcmp_rsender, CTX_MAILSUM); + /* iterate over all known mails in WC->summ */ RegisterIterator("MAIL:SUMM:MSGS", 0, NULL, iterate_get_mailsumm_All, NULL,NULL, CTX_MAILSUM, CTX_NONE); + /* render parts of the message struct */ RegisterNamespace("MAIL:SUMM:DATESTR", 0, 0, tmplput_MAIL_SUMM_DATE_STR, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:DATENO", 0, 0, tmplput_MAIL_SUMM_DATE_NO, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:N", 0, 0, tmplput_MAIL_SUMM_N, CTX_MAILSUM); @@ -1042,11 +1037,12 @@ InitModule_MSGRENDERERS RegisterConditional(HKEY("COND:MAIL:SUMM:OTHERNODE"), 0, Conditional_MAIL_SUMM_OTHERNODE, CTX_MAILSUM); RegisterConditional(HKEY("COND:MAIL:ANON"), 0, Conditional_ANONYMOUS_MESSAGE, CTX_MAILSUM); + + /* do we have mimetypes to iterate over? */ RegisterConditional(HKEY("COND:MAIL:MIME:ATTACH"), 0, Conditional_MAIL_MIME_ALL, CTX_MAILSUM); RegisterConditional(HKEY("COND:MAIL:MIME:ATTACH:SUBMESSAGES"), 0, Conditional_MAIL_MIME_SUBMESSAGES, CTX_MAILSUM); RegisterConditional(HKEY("COND:MAIL:MIME:ATTACH:LINKS"), 0, Conditional_MAIL_MIME_ATTACHLINKS, CTX_MAILSUM); RegisterConditional(HKEY("COND:MAIL:MIME:ATTACH:ATT"), 0, Conditional_MAIL_MIME_ATTACH, CTX_MAILSUM); - RegisterIterator("MAIL:MIME:ATTACH", 0, NULL, iterate_get_mime_All, NULL, NULL, CTX_MIME_ATACH, CTX_MAILSUM); RegisterIterator("MAIL:MIME:ATTACH:SUBMESSAGES", 0, NULL, iterate_get_mime_Submessages, @@ -1056,6 +1052,7 @@ InitModule_MSGRENDERERS RegisterIterator("MAIL:MIME:ATTACH:ATT", 0, NULL, iterate_get_mime_Attachments, NULL, NULL, CTX_MIME_ATACH, CTX_MAILSUM); + /* Parts of a mime attachent */ RegisterNamespace("MAIL:MIME:NAME", 0, 2, tmplput_MIME_Name, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:FILENAME", 0, 2, tmplput_MIME_FileName, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:PARTNUM", 0, 2, tmplput_MIME_PartNum, CTX_MIME_ATACH); @@ -1065,23 +1062,26 @@ InitModule_MSGRENDERERS RegisterNamespace("MAIL:MIME:CHARSET", 0, 2, tmplput_MIME_Charset, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:LENGTH", 0, 2, tmplput_MIME_Length, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:DATA", 0, 2, tmplput_MIME_Data, CTX_MIME_ATACH); + /* load the actual attachment into WC->attachments; no output!!! */ RegisterNamespace("MAIL:MIME:LOADDATA", 0, 0, tmplput_MIME_LoadData, CTX_MIME_ATACH); + /* iterate the WC->attachments; use the above tokens for their contents */ RegisterIterator("MSG:ATTACHNAMES", 0, NULL, iterate_get_registered_Attachments, NULL, NULL, CTX_MIME_ATACH, CTX_NONE); + /* mime renderers translate an attachment into webcit viewable html text */ RegisterMimeRenderer(HKEY("message/rfc822"), render_MAIL); RegisterMimeRenderer(HKEY("text/x-vcard"), render_MIME_VCard); RegisterMimeRenderer(HKEY("text/vcard"), render_MIME_VCard); RegisterMimeRenderer(HKEY("text/calendar"), render_MIME_ICS); RegisterMimeRenderer(HKEY("application/ics"), render_MIME_ICS); - RegisterMimeRenderer(HKEY("text/x-citadel-variformat"), render_MAIL_variformat); RegisterMimeRenderer(HKEY("text/plain"), render_MAIL_text_plain); RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain); RegisterMimeRenderer(HKEY("text/html"), render_MAIL_html); RegisterMimeRenderer(HKEY(""), render_MAIL_UNKNOWN); + /* these headers are citserver replies to MSG4 and friends. one evaluator for each */ RegisterMsgHdr(HKEY("nhdr"), examine_nhdr, 0); RegisterMsgHdr(HKEY("type"), examine_type, 0); RegisterMsgHdr(HKEY("from"), examine_from, 0); @@ -1097,13 +1097,14 @@ InitModule_MSGRENDERERS RegisterMsgHdr(HKEY("time"), examine_time, 0); RegisterMsgHdr(HKEY("part"), examine_mime_part, 0); RegisterMsgHdr(HKEY("text"), examine_text, 1); + /* these are the content-type headers we get infront of a message; put it into the same hash since it doesn't clash. */ RegisterMsgHdr(HKEY("X-Citadel-MSG4-Partnum"), examine_msg4_partnum, 0); RegisterMsgHdr(HKEY("Content-type"), examine_content_type, 0); RegisterMsgHdr(HKEY("Content-length"), examine_content_lengh, 0); - RegisterMsgHdr(HKEY("Content-transfer-encoding"), examine_content_encoding, 0); + RegisterMsgHdr(HKEY("Content-transfer-encoding"), examine_content_encoding, 0); /* do we care? */ RegisterMsgHdr(HKEY("charset"), examine_charset, 0); - /* Don't care... */ + /* Don't care about these... */ RegisterMsgHdr(HKEY("pref"), examine_pref, 0); RegisterMsgHdr(HKEY("suff"), examine_suff, 0); RegisterMsgHdr(HKEY("path"), examine_path, 0); -- 2.39.2