Reverts commit c6aec42f213ec284e34648f3d69bcf927dccddb1 because putting the opening...
[citadel.git] / webcit / blogview_renderer.c
index d49788e57b5fc306d2816c9131edde813ca94f0a..5cec69676e69439aa4428ab1b35ee50b30e9cfc4 100644 (file)
@@ -1,4 +1,3 @@
-
 /* 
  * Blog view renderer module for WebCit
  *
@@ -39,7 +38,7 @@ typedef struct _blogpost {
        int num_msgs;           /* Number of msgnums stored in 'msgs' */
        int alloc_msgs;         /* Currently allocated size of array */
        int unread_oments;
-} blogpost;
+}blogpost;
 
 
 /*
@@ -58,17 +57,16 @@ void sitemap_do_blog(void) {
 
        memset(&Stat, 0, sizeof Stat);
        memset(&oneBP, 0, sizeof(blogpost));
-       memset(&SubTP, 0, sizeof(WCTemplputParams));
+        memset(&SubTP, 0, sizeof(WCTemplputParams));    
        StackContext(NULL, &SubTP, &oneBP, CTX_BLOGPOST, 0, NULL);
 
        Stat.maxload = INT_MAX;
        Stat.lowest_found = (-1);
        Stat.highest_found = (-1);
        num_msgs = load_msg_ptrs("MSGS ALL", NULL, NULL, &Stat, NULL, NULL, NULL, NULL, 0);
-       if (num_msgs < 1)
-               return;
+       if (num_msgs < 1) return;
 
-       for (i = 0; i < num_msgs; ++i) {
+       for (i=0; i<num_msgs; ++i) {
                Msg = GetMessagePtrAt(i, WCC->summ);
                if (Msg != NULL) {
                        ReadOneMessageSummary(Msg, FoundCharset, Buf);
@@ -91,21 +89,21 @@ void sitemap_do_blog(void) {
  * (Call with NULL arguments to make this function wcprintf() the permalink
  * instead of writing it to the template)
  */
-void tmplput_blog_toplevel_id(StrBuf * Target, WCTemplputParams * TP) {
-       blogpost *bp = (blogpost *) CTX(CTX_BLOGPOST);
+void tmplput_blog_toplevel_id(StrBuf *Target, WCTemplputParams *TP) {
+       blogpost *bp = (blogpost*) CTX(CTX_BLOGPOST);
        char buf[SIZ];
        snprintf(buf, SIZ, "%d", bp->top_level_id);
        StrBufAppendTemplateStr(Target, TP, buf, 0);
 }
 
-void tmplput_blog_comment_count(StrBuf * Target, WCTemplputParams * TP) {
-       blogpost *bp = (blogpost *) CTX(CTX_BLOGPOST);
+void tmplput_blog_comment_count(StrBuf *Target, WCTemplputParams *TP) {
+       blogpost *bp = (blogpost*) CTX(CTX_BLOGPOST);
        char buf[SIZ];
-       snprintf(buf, SIZ, "%d", bp->num_msgs - 1);
+       snprintf(buf, SIZ, "%d", bp->num_msgs -1);
        StrBufAppendTemplateStr(Target, TP, buf, 0);
 }
-void tmplput_blog_comment_unread_count(StrBuf * Target, WCTemplputParams * TP) {
-       blogpost *bp = (blogpost *) CTX(CTX_BLOGPOST);
+void tmplput_blog_comment_unread_count(StrBuf *Target, WCTemplputParams *TP) {
+       blogpost *bp = (blogpost*) CTX(CTX_BLOGPOST);
        char buf[SIZ];
        snprintf(buf, SIZ, "%d", bp->unread_oments);
        StrBufAppendTemplateStr(Target, TP, buf, 0);
@@ -116,13 +114,14 @@ void tmplput_blog_comment_unread_count(StrBuf * Target, WCTemplputParams * TP) {
 /*
  * Render a single blog post and (optionally) its comments
  */
-void blogpost_render(blogpost * bp, int with_comments, WCTemplputParams * TP) {
+void blogpost_render(blogpost *bp, int with_comments, WCTemplputParams *TP)
+{
        wcsession *WCC = WC;
        WCTemplputParams SubTP;
        const StrBuf *Mime;
        int i;
 
-       memset(&SubTP, 0, sizeof(WCTemplputParams));
+        memset(&SubTP, 0, sizeof(WCTemplputParams));
        StackContext(TP, &SubTP, bp, CTX_BLOGPOST, 0, NULL);
 
        /* Always show the top level post, unless we somehow ended up with an empty list */
@@ -134,7 +133,7 @@ void blogpost_render(blogpost * bp, int with_comments, WCTemplputParams * TP) {
                /* Show any existing comments, then offer the comment box */
                DoTemplate(HKEY("view_blog_show_commentlink"), WCC->WBuf, &SubTP);
 
-               for (i = 1; i < bp->num_msgs; ++i) {
+               for (i=1; i<bp->num_msgs; ++i) {
                        read_message(WC->WBuf, HKEY("view_blog_comment"), bp->msgs[i], NULL, &Mime, &SubTP);
                }
                DoTemplate(HKEY("view_blog_comment_box"), WCC->WBuf, &SubTP);
@@ -151,7 +150,7 @@ void blogpost_render(blogpost * bp, int with_comments, WCTemplputParams * TP) {
 /*
  * Destructor for "blogpost"
  */
-void blogpost_destroy(blogpost * bp) {
+void blogpost_destroy(blogpost *bp) {
        if (bp->alloc_msgs > 0) {
                free(bp->msgs);
        }
@@ -162,30 +161,34 @@ void blogpost_destroy(blogpost * bp) {
 /*
  * Entry point for message read operations.
  */
-int blogview_GetParamsGetServerCall(SharedMessageStatus * Stat,
-                                   void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) {
-       BLOG *BL = (BLOG *) malloc(sizeof(BLOG));
+int blogview_GetParamsGetServerCall(SharedMessageStatus *Stat, 
+                                   void **ViewSpecific, 
+                                   long oper, 
+                                   char *cmd, 
+                                   long len,
+                                   char *filter,
+                                   long flen)
+{
+       BLOG *BL = (BLOG*) malloc(sizeof(BLOG)); 
        BL->BLOGPOSTS = NewHash(1, lFlathash);
-
+       
        /* are we looking for a specific post? */
        BL->p = lbstr("p");
        BL->gotonext = havebstr("gotonext");
        BL->Charset = NewStrBuf();
        BL->Buf = NewStrBuf();
        BL->FilterTag = sbstr("FilterTag");
-       BL->firstp = lbstr("firstp");   /* start reading at... */
-       BL->maxp = lbstr("maxp");       /* max posts to show... */
-       if (BL->maxp < 1)
-               BL->maxp = 5;   /* default; move somewhere else? */
+       BL->firstp = lbstr("firstp");   /* start reading at... */
+       BL->maxp   = lbstr("maxp");         /* max posts to show... */
+       if (BL->maxp < 1) BL->maxp = 5;     /* default; move somewhere else? */
        putlbstr("maxp", BL->maxp);
        *ViewSpecific = BL;
 
-       Stat->startmsg = (-1);  /* not used here */
-       Stat->sortit = 1;       /* not used here */
-       Stat->num_displayed = DEFAULT_MAXMSGS;  /* not used here */
-       if (Stat->maxmsgs == 0)
-               Stat->maxmsgs = DEFAULT_MAXMSGS;
-
+       Stat->startmsg = (-1);                                  /* not used here */
+       Stat->sortit = 1;                                       /* not used here */
+       Stat->num_displayed = DEFAULT_MAXMSGS;                  /* not used here */
+       if (Stat->maxmsgs == 0) Stat->maxmsgs = DEFAULT_MAXMSGS;
+       
        /* perform a "read all" call to fetch the message list -- we'll cut it down later */
        snprintf(cmd, len, "MSGS ALL||2|8\n");
 
@@ -195,45 +198,54 @@ int blogview_GetParamsGetServerCall(SharedMessageStatus * Stat,
 }
 
 
-int blogview_IdentifyBlogposts(StrBuf * Line,
-                              const char **pos, message_summary * Msg, StrBuf * ConversionBuffer, void **ViewSpecific) {
-       BLOG *BL = (BLOG *) * ViewSpecific;
+int blogview_IdentifyBlogposts (StrBuf *Line, 
+                               const char **pos, 
+                               message_summary *Msg, 
+                               StrBuf *ConversionBuffer,
+                               void **ViewSpecific)
+{
+       BLOG *BL = (BLOG*) *ViewSpecific;
        blogpost *bp = NULL;
 
        /* Stop processing if the viewer is only interested in a single post and
         * that message ID is neither the id nor the refs.
         */
-       if ((BL->p != 0) && (BL->p != Msg->reply_inreplyto_hash) && (BL->p != Msg->reply_references_hash)) {
+       if ((BL->p != 0) &&
+           (BL->p != Msg->reply_inreplyto_hash) &&
+           (BL->p != Msg->reply_references_hash)) {
                return 0;
        }
 
-       if ((Msg->reply_references_hash == 0) &&
-           (BL->FilterTag != NULL) && (strstr(ChrPtr(Msg->EnvTo), ChrPtr(BL->FilterTag)) == NULL)) {
+       if ((Msg->reply_references_hash == 0) && 
+           (BL->FilterTag != NULL) && 
+           (strstr(ChrPtr(Msg->EnvTo) , ChrPtr(BL->FilterTag)) == NULL)) {
                /* filtering for tags, blogpost doesn't fit. */
                return 0;
        }
-
+           
        /*
         * build up a hashtable of the blogposts.
         */
        if (Msg->reply_references_hash == 0) {
                bp = malloc(sizeof(blogpost));
 
-               if (bp == NULL)
-                       return 0;
+               if (bp == NULL) return 0;
 
-               memset(bp, 0, sizeof(blogpost));
+               memset(bp, 0, sizeof (blogpost));
 
-               bp->top_level_id = Msg->reply_inreplyto_hash;
+               bp->top_level_id = Msg->reply_inreplyto_hash;
                bp->alloc_msgs = 1000;
                bp->msgs = malloc(bp->alloc_msgs * sizeof(long));
-               memset(bp->msgs, 0, (bp->alloc_msgs * sizeof(long)));
+               memset(bp->msgs, 0, (bp->alloc_msgs * sizeof(long)) );
 
                /* the first one is the blogpost itself, all subequent are comments. */
                bp->msgs[0] = Msg->msgnum;
                bp->num_msgs = 1;
 
-               Put(BL->BLOGPOSTS, LKEY(Msg->reply_inreplyto_hash), bp, (DeleteHashDataFunc) blogpost_destroy);
+               Put(BL->BLOGPOSTS,
+                   LKEY(Msg->reply_inreplyto_hash),
+                   bp,
+                   (DeleteHashDataFunc)blogpost_destroy);
        }
        /*
         * Comments will be handled on the next iteration.
@@ -246,15 +258,22 @@ int blogview_IdentifyBlogposts(StrBuf * Line,
 /*
  * This function is called for every message in the list.
  */
-int blogview_LoadMsgFromServer(SharedMessageStatus * Stat, void **ViewSpecific, message_summary * Msg, int is_new, int i) {
+int blogview_LoadMsgFromServer(SharedMessageStatus *Stat, 
+                             void **ViewSpecific, 
+                             message_summary* Msg, 
+                             int is_new, 
+                             int i)
+{
        blogpost *bp = NULL;
-       BLOG *BL = (BLOG *) * ViewSpecific;
+       BLOG *BL = (BLOG*) *ViewSpecific;
 
        if (Msg->reply_references_hash != 0) {
                /* 
                 * this is a comment. try to assign it to a blogpost.
                 */
-               GetHash(BL->BLOGPOSTS, LKEY(Msg->reply_references_hash), (void *) &bp);
+               GetHash(BL->BLOGPOSTS,
+                       LKEY(Msg->reply_references_hash),
+                       (void *)&bp);
 
                /*
                 * Now we have a 'blogpost' to which we can add the comment.  It's either the
@@ -265,7 +284,8 @@ int blogview_LoadMsgFromServer(SharedMessageStatus * Stat, void **ViewSpecific,
                        if (bp->num_msgs >= bp->alloc_msgs) {
                                bp->alloc_msgs *= 2;
                                bp->msgs = realloc(bp->msgs, (bp->alloc_msgs * sizeof(long)));
-                               memset(&bp->msgs[bp->num_msgs], 0, ((bp->alloc_msgs - bp->num_msgs) * sizeof(long)));
+                               memset(&bp->msgs[bp->num_msgs], 0,
+                                      ((bp->alloc_msgs - bp->num_msgs) * sizeof(long)) );
                        }
                        bp->msgs[bp->num_msgs++] = Msg->msgnum;
                        if ((Msg->Flags & MSGFLAG_READ) != 0) {
@@ -288,15 +308,13 @@ int blogview_LoadMsgFromServer(SharedMessageStatus * Stat, void **ViewSpecific,
  * Sort a list of 'struct blogpost' pointers by newest-to-oldest msgnum.
  * With big thanks to whoever wrote http://www.c.happycodings.com/Sorting_Searching/code14.html
  */
-static int blogview_sortfunc(const void *a, const void *b) {
+static int blogview_sortfunc(const void *a, const void *b) { 
        blogpost const *one = GetSearchPayload(a);
        blogpost const *two = GetSearchPayload(b);
 
-       if (one->msgs[0] > two->msgs[0])
-               return (-1);
-       if (one->msgs[0] < two->msgs[0])
-               return (+1);
-       return (0);
+       if ( one->msgs[0] > two->msgs[0] ) return(-1);
+       if ( one->msgs[0] < two->msgs[0] ) return(+1);
+       return(0);
 }
 
 
@@ -304,9 +322,10 @@ static int blogview_sortfunc(const void *a, const void *b) {
  * All blogpost entries are now in the hash list.
  * Sort them, select the desired range, and render what we want to see.
  */
-int blogview_render(SharedMessageStatus * Stat, void **ViewSpecific, long oper) {
+int blogview_render(SharedMessageStatus *Stat, void **ViewSpecific, long oper)
+{
        wcsession *WCC = WC;
-       BLOG *BL = (BLOG *) * ViewSpecific;
+       BLOG *BL = (BLOG*) *ViewSpecific;
        HashPos *it;
        const char *Key;
        blogpost *thisBlogpost;
@@ -327,8 +346,8 @@ int blogview_render(SharedMessageStatus * Stat, void **ViewSpecific, long oper)
                /* Nothing to do... */
                return 0;
        }
-       memset(&SubTP, 0, sizeof(WCTemplputParams));
-       memset(&StopSubTP, 0, sizeof(WCTemplputParams));
+        memset(&SubTP, 0, sizeof(WCTemplputParams));    
+        memset(&StopSubTP, 0, sizeof(WCTemplputParams));    
        memset(&oneBP, 0, sizeof(blogpost));
 
        /* Comments are shown if we are only viewing a single blog post */
@@ -351,7 +370,7 @@ int blogview_render(SharedMessageStatus * Stat, void **ViewSpecific, long oper)
                        }
                }
                if (unread_count == 1) {
-                       blogpost_render(unread_bp, 1, NULL);    /// TODO other than null?
+                       blogpost_render(unread_bp, 1, NULL);/// TODO other than null?
 
                        DeleteHashPos(&it);
                        return 0;
@@ -375,13 +394,13 @@ int blogview_render(SharedMessageStatus * Stat, void **ViewSpecific, long oper)
                                firstPOffset = count;
                                break;
                        }
-                       count++;
+                       count ++;
                }
        }
 
-       if ((num_blogposts > BL->maxp) || (firstPOffset != 0)) {
+       if ((num_blogposts > BL->maxp) || (firstPOffset != 0)){
                PrevNext = NewStrBuf();
-               if (firstPOffset > 0) {
+               if (firstPOffset  > 0) {
                        const char *k;
                        long len;
                        long posPrev = 0;
@@ -416,7 +435,7 @@ int blogview_render(SharedMessageStatus * Stat, void **ViewSpecific, long oper)
                /* allow the user to select a starting point in the list */
                if (totalCount < firstPOffset) {
                        /* skip all till we found the first valid: */
-                       totalCount++;
+                       totalCount ++;
                        continue;
                }
                if (count >= BL->maxp) {
@@ -426,19 +445,20 @@ int blogview_render(SharedMessageStatus * Stat, void **ViewSpecific, long oper)
                StackContext(NULL, &SubTP, thisBlogpost, CTX_BLOGPOST, 0, NULL);
                blogpost_render(thisBlogpost, with_comments, &SubTP);
                UnStackContext(&SubTP);
-               count++;
-               totalCount++;
+               count ++;
+               totalCount ++;
        }
        StrBufAppendBuf(WCC->WBuf, PrevNext, 0);
        FreeStrBuf(&PrevNext);
        DeleteHashPos(&it);
 
-       return (0);
+       return(0);
 }
 
 
-int blogview_Cleanup(void **ViewSpecific) {
-       BLOG *BL = (BLOG *) * ViewSpecific;
+int blogview_Cleanup(void **ViewSpecific)
+{
+       BLOG *BL = (BLOG*) *ViewSpecific;
 
        FreeStrBuf(&BL->Buf);
        FreeStrBuf(&BL->Charset);
@@ -449,8 +469,11 @@ int blogview_Cleanup(void **ViewSpecific) {
 }
 
 
-void InitModule_BLOGVIEWRENDERERS(void) {
-       const char *browseListFields[] = {
+void 
+InitModule_BLOGVIEWRENDERERS
+(void)
+{
+       const char* browseListFields[] = {
                "msgn",
                "nvto",
                "wefw",
@@ -458,12 +481,17 @@ void InitModule_BLOGVIEWRENDERERS(void) {
        };
        RegisterCTX(CTX_BLOGPOST);
 
-       RegisterReadLoopHandlerset(VIEW_BLOG,
-                                  blogview_GetParamsGetServerCall,
-                                  NULL,
-                                  NULL,
-                                  blogview_IdentifyBlogposts,
-                                  blogview_LoadMsgFromServer, blogview_render, blogview_Cleanup, browseListFields);
+       RegisterReadLoopHandlerset(
+               VIEW_BLOG,
+               blogview_GetParamsGetServerCall,
+               NULL,
+               NULL,
+               blogview_IdentifyBlogposts, 
+               blogview_LoadMsgFromServer,
+               blogview_render,
+               blogview_Cleanup,
+               browseListFields
+       );
 
        RegisterNamespace("BLOG:TOPLEVEL:MSGID", 0, 0, tmplput_blog_toplevel_id, NULL, CTX_BLOGPOST);
        RegisterNamespace("BLOG:COMMENTS:COUNT", 0, 0, tmplput_blog_comment_count, NULL, CTX_BLOGPOST);