From d71b13162bd106b2720a2d5993c118ba16661595 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Fri, 3 Jun 2011 01:06:05 -0400 Subject: [PATCH] Load pointers to blogposts into an array that we can sort --- webcit/blogview_renderer.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/webcit/blogview_renderer.c b/webcit/blogview_renderer.c index a303396d9..d125e2ccd 100644 --- a/webcit/blogview_renderer.c +++ b/webcit/blogview_renderer.c @@ -235,8 +235,8 @@ int blogview_sortfunc(const void *s1, const void *s2) { /* - * We have to move the render code into this function because it needs to be sorted, - * and possibly culled to a specific number of messages or date range... + * All blogpost entries are now in the hash list. + * Sort them, (FIXME cull by date range if needed,) and render what we want to see. */ int blogview_render(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { @@ -246,19 +246,38 @@ int blogview_render(SharedMessageStatus *Stat, void **ViewSpecific, long oper) void *Data; long len; struct blogpost *bp; + int i; + struct blogpost **blogposts = NULL; + int num_blogposts = 0; + int num_blogposts_alloc = 0; it = GetNewHashPos(BLOG, 0); while (GetNextHashPos(BLOG, it, &len, &Key, &Data)) { bp = (struct blogpost *) Data; - wc_printf("Top level ID is %d\n", bp->top_level_id); - if (bp->num_msgs > 0) { - wc_printf("; top level msgnum is %ld", bp->msgs[0]); + + if (num_blogposts >= num_blogposts_alloc) { + if (num_blogposts_alloc == 0) { + num_blogposts_alloc = 100; + } + else { + num_blogposts_alloc *= 2; + } + blogposts = realloc(blogposts, (num_blogposts_alloc * sizeof (struct blogpost *))); } - wc_printf("
\n"); - blogpost_render(bp); + blogposts[num_blogposts++] = bp; } DeleteHashPos(&it); + + if (num_blogposts > 0) { + for (i=0; itop_level_id); + wc_printf("; top level msgnum is %ld", blogposts[i]->msgs[0]); + blogpost_render(blogposts[i]); + } + free(blogposts); + } + return(0); } -- 2.30.2