summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/proto.h2
-rw-r--r--include/pttstruct.h4
-rw-r--r--mbbsd/bbs.c5
-rw-r--r--mbbsd/cache.c17
-rw-r--r--mbbsd/read.c1
5 files changed, 23 insertions, 6 deletions
diff --git a/include/proto.h b/include/proto.h
index 46eab16c..8d90a1b0 100644
--- a/include/proto.h
+++ b/include/proto.h
@@ -114,6 +114,7 @@ int apply_boards(int (*func)(boardheader_t *));
int haspostperm(char *bname);
void inbtotal(int bid, int add);
void setbtotal(int bid);
+void setbottomtotal(int bid);
unsigned int safe_sleep(unsigned int seconds);
int apply_ulist(int (*fptr)(userinfo_t *));
userinfo_t *search_ulistn(int uid, int unum);
@@ -665,6 +666,7 @@ int passwd_apply(int (*fptr)(int, userec_t *));
void passwd_lock();
void passwd_unlock();
int passwd_update_money(int num);
+int passwd_query_money(int num);
int initcuser(char *userid);
int freecuser();
diff --git a/include/pttstruct.h b/include/pttstruct.h
index c8944e02..20260ad1 100644
--- a/include/pttstruct.h
+++ b/include/pttstruct.h
@@ -377,10 +377,12 @@ typedef struct {
boardheader_t *HBcache[HOTBOARDCACHE];
#endif
#if DIRCACHESIZE
- fileheader_t dircache[MAX_BOARD][DIRCACHESIZE];
+ // Ptt: dricache À³³§ï令¨¥ucache ¼öö­Ìªùù¬Ýݪ©©Á×קKmemory®öö¶O
+ fileheader_t dircache[MAX_BOARD][DIRCACHESIZE];
#endif
time_t busystate_b[MAX_BOARD];
int total[MAX_BOARD];
+ unsigned char n_bottom[MAX_BOARD]; /* number of bottom */
int hbfl[MAX_BOARD][MAX_FRIEND + 1];
time_t lastposttime[MAX_BOARD];
time_t Buptime;
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c
index 013616d1..8c7b432b 100644
--- a/mbbsd/bbs.c
+++ b/mbbsd/bbs.c
@@ -2325,8 +2325,8 @@ push_bottom(int ent, fileheader_t * fhdr, char *direct)
setbfile(buf, currboard, ".BOTTOM");
num = get_num_records(buf, sizeof(fileheader_t));
if(getans(fhdr->filemode & FILE_BOTTOM ?
- "¨ú®ø­«­n¤½½?(y/N)":
- "¥[¤J­«­n¤½§i?(y/N)")!='y') return READ_REDRAW;
+ "¨ú®ø¸m©³¤½½§i?(y/N)":
+ "¥[¤J¸m©³¤½§i?(y/N)")!='y') return READ_REDRAW;
fhdr->filemode ^= FILE_BOTTOM;
if(fhdr->filemode & FILE_BOTTOM)
{
@@ -2349,6 +2349,7 @@ push_bottom(int ent, fileheader_t * fhdr, char *direct)
delete_record(buf, sizeof(fileheader_t), i+1);
}
}
+ setbottomtotal(currbid);
substitute_record(direct, fhdr, sizeof(fileheader_t), ent);
return READ_REDRAW;
}
diff --git a/mbbsd/cache.c b/mbbsd/cache.c
index 21319c8e..465a4195 100644
--- a/mbbsd/cache.c
+++ b/mbbsd/cache.c
@@ -698,8 +698,21 @@ getbtotal(int bid)
{
return SHM->total[bid - 1];
}
+int
+getbottomtotal(int bid)
+{
+ return SHM->n_bottom[bid-1];
+}
void
+setbottomtotal(int bid)
+{
+ boardheader_t *bh = getbcache(bid);
+ char genbuf[256];
+ setbfile(genbuf, bh->brdname, ".BOTTOM");
+ SHM->n_bottom[bid-1]=get_num_records(genbuf, sizeof(fileheader_t));
+}
+void
setbtotal(int bid)
{
boardheader_t *bh = getbcache(bid);
@@ -707,9 +720,7 @@ setbtotal(int bid)
char genbuf[256];
int num, fd;
- snprintf(genbuf, sizeof(genbuf),
- "boards/%c/%s/.DIR", bh->brdname[0], bh->brdname);
-
+ setbfile(genbuf, bh->brdname, ".DIR");
if ((fd = open(genbuf, O_RDWR)) < 0)
return; /* .DIR±¾¤F */
fstat(fd, &st);
diff --git a/mbbsd/read.c b/mbbsd/read.c
index f6b64313..fb3e15d2 100644
--- a/mbbsd/read.c
+++ b/mbbsd/read.c
@@ -819,6 +819,7 @@ i_read(int cmdmode, char *direct, void (*dotitle) (), void (*doentry) (), onekey
if (bidcache > 0 && !(currmode & (MODE_SELECT | MODE_DIGEST))){
if( (last_line = getbtotal(currbid)) == 0 ){
setbtotal(currbid);
+ setbottomtotal(currbid);
last_line = get_num_records(currdirect, FHSZ);
}
}