summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/proto.h2
-rw-r--r--mbbsd/board.c15
-rw-r--r--mbbsd/brc.c15
3 files changed, 14 insertions, 18 deletions
diff --git a/include/proto.h b/include/proto.h
index 2bcd16e1..bc4d8353 100644
--- a/include/proto.h
+++ b/include/proto.h
@@ -100,7 +100,7 @@ int TopBoards(void);
/* brc */
int brc_initialize(void);
void brc_finalize(void);
-int brc_initial_board(const char *boardname);
+int brc_initial_board(int bid);
// v3 api: add 'modified' tag
int brc_unread(int bid, const char *fname, time4_t modified);
diff --git a/mbbsd/board.c b/mbbsd/board.c
index 626e9c32..7550f709 100644
--- a/mbbsd/board.c
+++ b/mbbsd/board.c
@@ -74,8 +74,8 @@ inline boardheader_t *getparent(const boardheader_t *fh)
* -2 permission denied
* -3 error
* @note enter board:
- * 1. setup brc (currbid, currboard, currbrdattr)
- * 2. set currbid, currBM, currmode, currdirect
+ * 1. setup brc
+ * 2. set currbid, currboard, currbrdattr, currBM, currmode, currdirect
* 3. utmp brc_id
*/
int enter_board(const char *boardname)
@@ -107,7 +107,10 @@ int enter_board(const char *boardname)
/* really enter board */
brc_update();
- brc_initial_board(bname);
+ brc_initial_board(bid);
+ currbid = bid;
+ currboard = bcache[currbid - 1].brdname;
+ currbrdattr = bcache[currbid - 1].brdattr;
setutmpbid(currbid);
set_board();
@@ -1088,7 +1091,7 @@ unread_position(char *dirfile, boardstat_t * ptr)
total = B_TOTAL(ptr);
num = total + 1;
if ((ptr->myattr & NBRD_UNREAD) && (fd = open(dirfile, O_RDWR)) > 0) {
- if (!brc_initial_board(B_BH(ptr)->brdname)) {
+ if (!brc_initial_board(ptr->bid)) {
num = 1;
} else {
num = total - 1;
@@ -1702,10 +1705,10 @@ choose_board(int newflag)
assert(0<=ptr->bid-1 && ptr->bid-1<MAX_BOARD);
if (!(B_BH(ptr)->brdattr & BRD_GROUPBOARD)) { /* «Dsub class */
if (HasBoardPerm(B_BH(ptr))) {
- brc_initial_board(B_BH(ptr)->brdname);
+ brc_initial_board(ptr->bid);
if (newflag) {
- setbdir(buf, currboard);
+ setbdir(buf, B_BH(ptr)->brdname);
tmp = unread_position(buf, ptr);
head = tmp - t_lines / 2;
getkeep(buf, head > 1 ? head : 1, tmp + 1);
diff --git a/mbbsd/brc.c b/mbbsd/brc.c
index c7413612..15371f29 100644
--- a/mbbsd/brc.c
+++ b/mbbsd/brc.c
@@ -436,23 +436,16 @@ brc_read_record(int bid, int *num, brc_rec *list){
* @return number of records in \a boardname
*/
int
-brc_initial_board(const char *boardname)
+brc_initial_board(int bid)
{
brc_initialize();
- if (strcmp(currboard, boardname) == 0) {
- assert(currbid == brc_currbid);
+ if (bid == brc_currbid)
return brc_num;
- }
brc_update(); /* write back first */
- currbid = getbnum(boardname);
- if( currbid == 0 )
- currbid = getbnum(DEFAULT_BOARD);
- assert(0<=currbid-1 && currbid-1<MAX_BOARD);
- brc_currbid = currbid;
- currboard = bcache[currbid - 1].brdname;
- currbrdattr = bcache[currbid - 1].brdattr;
+ assert(0<=bid-1 && bid-1<MAX_BOARD);
+ brc_currbid = bid;
return brc_read_record(brc_currbid, &brc_num, brc_list);
}