diff options
-rw-r--r-- | include/proto.h | 2 | ||||
-rw-r--r-- | mbbsd/board.c | 15 | ||||
-rw-r--r-- | mbbsd/brc.c | 15 |
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); } |