+ WC->bptlid = bp->top_level_id; /* This is used in templates; do not remove it */
+
+ /* Always show the top level post, unless we somehow ended up with an empty list */
+ if (bp->num_msgs > 0) {
+ read_message(WC->WBuf, HKEY("view_blog_post"), bp->msgs[0], NULL, &Mime);
+ }
+
+ if (with_comments) {
+ /* Show any existing comments, then offer the comment box */
+ wc_printf("<a class=\"blog_show_comments_link\" name=\"comments\"></a>\n");
+ wc_printf(_("%d comments"), bp->num_msgs - 1);
+ wc_printf(" | <a class=\"blog_permalink_link\" href=\"");
+ tmplput_blog_permalink(NULL, NULL);
+ wc_printf("\">%s</a>", _("permalink"));
+ wc_printf("</div>\n");
+ for (i=1; i<bp->num_msgs; ++i) {
+ read_message(WC->WBuf, HKEY("view_blog_comment"), bp->msgs[i], NULL, &Mime);
+ }
+ do_template("view_blog_comment_box");
+ }
+
+ else {
+ /* Show only the number of comments */
+ wc_printf("<a class=\"blog_show_comments_link\" href=\"readfwd?p=%d?go=", bp->top_level_id);
+ urlescputs(ChrPtr(WC->CurRoom.name));
+ wc_printf("#comments\">");
+ wc_printf(_("%d comments"), bp->num_msgs - 1);
+ wc_printf(" %d %s", bp->unread_oments, _("new"));
+ wc_printf("</a> | <a class=\"blog_permalink_link\" href=\"");
+ tmplput_blog_permalink(NULL, NULL);
+ wc_printf("\">%s</a>", _("permalink"));
+ wc_printf("<hr>\n</div>\n");
+ }
+}
+
+
+/*
+ * Destructor for "struct blogpost"
+ */
+void blogpost_destroy(struct blogpost *bp) {
+ if (bp->alloc_msgs > 0) {
+ free(bp->msgs);
+ }
+ free(bp);
+}