For what it's worth, I've done more debugging and have an update. It turned out that folders.html was missing a lot of folders if I set reverse_folders = 1 in my hmrc, but missing just a few (the ones earliest in date) if i set it to 0. So i set out to find out why, and noticed that new subdirs seemed to be inserted into the folders list properly if they came at the beginning or end of the list, but the ones that were inserted between two list entries were the ones giving me problems.
Looking at struct.c/new_subdir(), I see something that looks amiss. Here's the original source snippet:
if (insert_point == NULL) insert_point = sd; if (insert_point == NULL) folders = new_sd; else if (date < folders->a_date) { new_sd->next_subdir = folders; folders = new_sd;
/* this bit */ new_sd->next_subdir = insert_point->next_subdir; insert_point->next_subdir = new_sd; new_sd->prior_subdir = insert_point;
It looks to me like at the spot where new_sd is inserted, all of the relevant next_subdir and prior_subdir values are updated except for new_sd->next_subdir->prior_subdir, which should point to new_sd, but instead keeps its original value. So then when a reverse_folders is done, and it traverses the ->prior_subdir entries, some subdirs get skipped over, which was what i was seeing originally.
My C is quite rusty, but I tried adding code that updates this value along with the rest, recompiled and my folder problems disappeared. Hopefully I haven't broken anything else as a side effect :)
Just fyi - and thanks for this incredibly useful app...
This archive was generated by hypermail 2.3.0 : Sat 13 Mar 2010 03:46:12 AM GMT GMT