diff options
Diffstat (limited to 'mbbsd')
-rw-r--r-- | mbbsd/board.c | 32 | ||||
-rw-r--r-- | mbbsd/mbbsd.c | 11 | ||||
-rw-r--r-- | mbbsd/talk.c | 4 |
3 files changed, 21 insertions, 26 deletions
diff --git a/mbbsd/board.c b/mbbsd/board.c index af997121..75503b23 100644 --- a/mbbsd/board.c +++ b/mbbsd/board.c @@ -1,4 +1,4 @@ -/* $Id: board.c,v 1.29 2002/06/04 13:08:33 in2 Exp $ */ +/* $Id: board.c,v 1.30 2002/06/05 02:42:29 ptt Exp $ */ #include "bbs.h" #define BRC_STRLEN 15 /* Length of board name */ #define BRC_MAXSIZE 24576 @@ -653,26 +653,30 @@ static void dozap(int num){ zapbuf[ptr->bid-1] = (ptr->myattr&BRD_ZAP?0:login_start_time); } -void setutmpbid(int bid) +void delutmpbid(int bid, userinfo_t *utmp) { - int id=currutmp->brc_id; userinfo_t *u; - if(id) - { - if (brdshm->busystate!=1 && now-brdshm->busystate_b[id-1]>=10) + if (brdshm->busystate!=1 && now-brdshm->busystate_b[bid-1]>=10) { - brdshm->busystate_b[id-1]=now; - u=bcache[id-1].u; - if(u!=(void*)currutmp) + brdshm->busystate_b[bid-1]=now; + u=bcache[bid-1].u; + if(u!=(void*)utmp) { - for(;u && u->nextbfriend != (void*)currutmp; u=u->nextbfriend); - if(u) u->nextbfriend = currutmp->nextbfriend; + for(;u && u->nextbfriend != (void*)utmp; u=u->nextbfriend); + if(u) u->nextbfriend = utmp->nextbfriend; } else - bcache[id-1].u=currutmp->nextbfriend; - if(bcache[id-1].nuser>0) bcache[id-1].nuser--; - brdshm->busystate_b[id-1]=0; + bcache[bid-1].u=utmp->nextbfriend; + if(bcache[bid-1].nuser>0) bcache[bid-1].nuser--; + brdshm->busystate_b[bid-1]=0; } +} + +void setutmpbid(int bid) +{ + if(currutmp->brc_id) + { + delutmpbid(currutmp->brc_id, currutmp); } if(bid) { diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c index 036976f6..a933b6f3 100644 --- a/mbbsd/mbbsd.c +++ b/mbbsd/mbbsd.c @@ -1,4 +1,4 @@ -/* $Id: mbbsd.c,v 1.32 2002/06/04 13:08:33 in2 Exp $ */ +/* $Id: mbbsd.c,v 1.33 2002/06/05 02:42:29 ptt Exp $ */ #include "bbs.h" #define SOCKET_QLEN 4 @@ -724,7 +724,6 @@ setup_utmp (int mode) uinfo.pid = currpid = getpid (); uinfo.uid = usernum; uinfo.mode = currstat = mode; - uinfo.msgcount = 0; uinfo.mailalert = load_mailalert (cuser.userid); if (!(cuser.numlogins % 20) && cuser.userlevel & PERM_BM) check_BM (); /* Ptt 自動取下離職板主權力 */ @@ -732,26 +731,18 @@ setup_utmp (int mode) uinfo.userlevel = cuser.userlevel; uinfo.sex = cuser.sex % 8; uinfo.lastact = time (NULL); - - postrecord.times = 0; /* 計算crosspost數 */ - strcpy (uinfo.userid, cuser.userid); strcpy (uinfo.realname, cuser.realname); strcpy (uinfo.username, cuser.username); strncpy (uinfo.from, fromhost, 23); - uinfo.five_win = cuser.five_win; uinfo.five_lose = cuser.five_lose; uinfo.five_tie = cuser.five_tie; - uinfo.invisible = cuser.invisible % 2; uinfo.pager = cuser.pager%5; uinfo.mind = cuser.mind; - uinfo.brc_id = 0; #ifdef WHERE uinfo.from_alias = where (fromhost); -#else - uinfo.from_alias = 0; #endif #ifndef FAST_LOGIN setuserfile (buf, "remoteuser"); diff --git a/mbbsd/talk.c b/mbbsd/talk.c index 8b1ee687..3e078ef4 100644 --- a/mbbsd/talk.c +++ b/mbbsd/talk.c @@ -1,4 +1,4 @@ -/* $Id: talk.c,v 1.66 2002/06/05 02:24:25 ptt Exp $ */ +/* $Id: talk.c,v 1.67 2002/06/05 02:42:29 ptt Exp $ */ #include "bbs.h" #define QCAST int (*)(const void *, const void *) @@ -1469,7 +1469,7 @@ int pickup_maxpages(int pickupway, int nfriends) else number = utmpshm->number+ (pickupway == 0 ? nfriends : 0); - return (number-1) / MAXPICKUP; + return (number-1) / MAXPICKUP +1; } static int pickup_myfriend(pickup_t *friends, |