From 6b49f6bc1bf86a9bfa61e34afda72387126e2f53 Mon Sep 17 00:00:00 2001 From: ptt Date: Mon, 5 Apr 2004 21:45:45 +0000 Subject: push bottom git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1701 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/bbs.c | 5 +++-- mbbsd/cache.c | 17 ++++++++++++++--- mbbsd/read.c | 1 + 3 files changed, 18 insertions(+), 5 deletions(-) (limited to 'mbbsd') 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,7 +698,20 @@ 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) { @@ -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); } } -- cgit v1.2.3