summaryrefslogtreecommitdiffstats
path: root/mbbsd/cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd/cache.c')
-rw-r--r--mbbsd/cache.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/mbbsd/cache.c b/mbbsd/cache.c
index 288c38cf..e76110b8 100644
--- a/mbbsd/cache.c
+++ b/mbbsd/cache.c
@@ -520,12 +520,20 @@ touchdircache(int bid)
void
load_fileheader_cache(int bid, char *direct)
{
- int num = getbtotal(bid);
- int n = num - DIRCACHESIZE + 1;
+ int num = getbtotal(bid), n_bottom = getbottomtotal(bid);
+ int n = num - DIRCACHESIZE + n_bottom + 1;
+ int dirsize = DIRCACHESIZE-n_bottom;
if (SHM->Bbusystate != 1 && COMMON_TIME - SHM->busystate_b[bid - 1] >= 10) {
SHM->busystate_b[bid - 1] = COMMON_TIME;
+ if(n_bottom)
+ {
+ char path[256];
+ setbfile(path, currboard, ".BOTTOM");
+ get_records(path, &SHM->dircache[bid - 1][dirsize],
+ sizeof(fileheader_t), 1, n_bottom);
+ }
get_records(direct, SHM->dircache[bid - 1],
- sizeof(fileheader_t), n < 1 ? 1 : n, DIRCACHESIZE);
+ sizeof(fileheader_t), n < 1 ? 1 : n, dirsize);
SHM->busystate_b[bid - 1] = 0;
} else {
safe_sleep(1);