summaryrefslogtreecommitdiffstats
path: root/mbbsd/cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd/cache.c')
-rw-r--r--mbbsd/cache.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/mbbsd/cache.c b/mbbsd/cache.c
index 494f3f27..6124d361 100644
--- a/mbbsd/cache.c
+++ b/mbbsd/cache.c
@@ -518,7 +518,7 @@ touchdircache(int bid)
#if DIRCACHESIZE
void
-load_fileheader_cache(int bid, char *direct)
+load_fileheader_bottom_cache(int bid, char *direct)
{
int num = getbtotal(bid), n_bottom = getbottomtotal(bid);
int n = num - DIRCACHESIZE + n_bottom + 1;
@@ -528,15 +528,27 @@ load_fileheader_cache(int bid, char *direct)
n=1;
dirsize=num;
}
- if (SHM->Bbusystate != 1 && COMMON_TIME - SHM->busystate_b[bid - 1] >= 10) {
- SHM->busystate_b[bid - 1] = COMMON_TIME;
- if(n_bottom)
- {
+ if(n_bottom)
+ {
char path[256];
- setbfile(path, currboard, ".BOTTOM");
+ sprintf(path, "%s.%s", direct, ".bottom");
get_records(path, &SHM->dircache[bid - 1][dirsize],
sizeof(fileheader_t), 1, n_bottom);
- }
+ }
+}
+void
+load_fileheader_cache(int bid, char *direct)
+{
+ int num = getbtotal(bid), n_bottom = getbottomtotal(bid);
+ int n = num - DIRCACHESIZE + n_bottom + 1;
+ int dirsize = DIRCACHESIZE-n_bottom;
+ if (n<1)
+ {
+ n=1;
+ dirsize=num;
+ }
+ if (SHM->Bbusystate != 1 && COMMON_TIME - SHM->busystate_b[bid - 1] >= 10) {
+ SHM->busystate_b[bid - 1] = COMMON_TIME;
get_records(direct, SHM->dircache[bid - 1],
sizeof(fileheader_t), n, dirsize);
SHM->busystate_b[bid - 1] = 0;
@@ -551,7 +563,7 @@ get_fileheader_cache(int bid, char *direct, fileheader_t * headers,
{
int ret, n, num;
- num = getbtotal(bid);
+ num = getbtotal(bid)+getbottomtotal(bid);
ret = num - recbase + 1,
n = (num - DIRCACHESIZE + 1);