diff options
Diffstat (limited to 'mbbsd/cache.c')
-rw-r--r-- | mbbsd/cache.c | 14 |
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); |