From f6fabc3faa9e9886cdfd21899bc11544e3c8c131 Mon Sep 17 00:00:00 2001 From: piaip Date: Wed, 7 Sep 2005 17:56:22 +0000 Subject: pager=waterball made readable git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3139 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- include/modes.h | 9 +++++++++ mbbsd/chat.c | 8 ++++++-- mbbsd/mbbsd.c | 8 ++++---- mbbsd/register.c | 2 +- mbbsd/talk.c | 55 ++++++++++++++++++++++++++++++++++++++++--------------- mbbsd/var.c | 10 ++++++---- 6 files changed, 66 insertions(+), 26 deletions(-) diff --git a/include/modes.h b/include/modes.h index 1af93afb..5166c1b6 100644 --- a/include/modes.h +++ b/include/modes.h @@ -181,4 +181,13 @@ enum {STRIP_ALL = 0, ONLY_COLOR, NO_RELOAD}; #define WATERBALL_CONFIRM_ANSWER 8 #endif +/* chat.c, talk.c: pager modes */ +#define PAGER_OFF (0) +#define PAGER_ON (1) +#define PAGER_DISABLE (2) +#define PAGER_ANTIWB (3) +#define PAGER_FRIENDONLY (4) + +#define PAGER_MODES (5) + #endif diff --git a/mbbsd/chat.c b/mbbsd/chat.c index 8e4b2af5..e736e387 100644 --- a/mbbsd/chat.c +++ b/mbbsd/chat.c @@ -202,9 +202,13 @@ chat_pager(char *unused) { char genbuf[200]; - char *msgs[] = {"關閉", "打開", "拔掉", "防水", "好友"}; + char *msgs[PAGER_MODES] = { + /* Ref: please match PAGER* in modes.h */ + "關閉", "打開", "拔掉", "防水", "好友" + }; + snprintf(genbuf, sizeof(genbuf), "◆ 您的呼叫器:[%s]", - msgs[currutmp->pager = (currutmp->pager + 1) % 5]); + msgs[currutmp->pager = (currutmp->pager + 1) % PAGER_MODES]); printchatline(genbuf); } diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c index 52f56977..1bac7469 100644 --- a/mbbsd/mbbsd.c +++ b/mbbsd/mbbsd.c @@ -167,7 +167,7 @@ u_exit(const char *mode) cuser.badsale = currutmp->badsale; auto_backup(); - setflags(PAGER_FLAG, currutmp->pager != 1); + setflags(PAGER_FLAG, currutmp->pager != PAGER_ON); setflags(CLOAK_FLAG, currutmp->invisible); save_brdbuf(); brc_finalize(); @@ -442,7 +442,7 @@ write_request(int sig) } } else { if (currutmp->mode != 0 && - currutmp->pager != 0 && + currutmp->pager != PAGER_OFF && cuser.userlevel != 0 && currutmp->msgcount != 0 && currutmp->mode != TALK && @@ -837,7 +837,7 @@ setup_utmp(int mode) uinfo.chc_tie = cuser.chc_tie; uinfo.chess_elo_rating = cuser.chess_elo_rating; uinfo.invisible = cuser.invisible % 2; - uinfo.pager = cuser.pager % 5; + uinfo.pager = cuser.pager % PAGER_MODES; uinfo.goodpost = cuser.goodpost; uinfo.badpost = cuser.badpost; uinfo.goodsale = cuser.goodsale; @@ -956,7 +956,7 @@ static void init_guest_info(void) strlcpy(cuser.realname, name[(int)i], sizeof(cuser.realname)); strlcpy(cuser.address, addr[(int)i], sizeof(cuser.address)); cuser.sex = i % 8; - currutmp->pager = 2; + currutmp->pager = PAGER_DISABLE; } #if FOREIGN_REG_DAY > 0 diff --git a/mbbsd/register.c b/mbbsd/register.c index f75088c4..55b817b6 100644 --- a/mbbsd/register.c +++ b/mbbsd/register.c @@ -270,7 +270,7 @@ new_register(void) newuser.uflag2 = 0; newuser.firstlogin = newuser.lastlogin = now; newuser.money = 0; - newuser.pager = 1; + newuser.pager = PAGER_ON; #ifdef DBCSAWARE if(u_detectDBCSAwareEvilClient()) diff --git a/mbbsd/talk.c b/mbbsd/talk.c index 316739a2..12d526bf 100644 --- a/mbbsd/talk.c +++ b/mbbsd/talk.c @@ -55,7 +55,8 @@ iswritable_stat(const userinfo_t * uentp, int fri_stat) if (!HasUserPerm(PERM_LOGINOK)) return 0; - return (uentp->pager != 3 && (fri_stat & HFM || uentp->pager != 4)); + return (uentp->pager != PAGER_ANTIWB && + (fri_stat & HFM || uentp->pager != PAGER_FRIENDONLY)); } int @@ -664,7 +665,7 @@ my_write2(void) int my_write(pid_t pid, const char *prompt, const char *id, int flag, userinfo_t * puin) { - int len, currstat0 = currstat, fri_stat; + int len, currstat0 = currstat, fri_stat = -1; char msg[80], destid[IDLEN + 1]; char genbuf[200], buf[200], c0 = currutmp->chatid[0]; unsigned char mode0 = currutmp->mode; @@ -696,6 +697,24 @@ my_write(pid_t pid, const char *prompt, const char *id, int flag, userinfo_t * p ) { /* 一般水球 */ watermode = 0; + + /* should we alert if we're in disabled mode? */ + switch(currutmp->pager) + { + case PAGER_DISABLE: + case PAGER_ANTIWB: + move(1, 0); clrtoeol(); + outs(ANSI_COLOR(1;31) "你的呼叫器目前不接受別人丟水球,對方可能無法回話。" ANSI_RESET); + break; + case PAGER_FRIENDONLY: + fri_stat = friend_stat(currutmp, uin); + if(fri_stat & HFM) + break; + move(1, 0); clrtoeol(); + outs(ANSI_COLOR(1;31) "你的呼叫器目前只接受好友丟水球,對方可能無法回話。" ANSI_RESET); + break; + } + if (!(len = getdata(0, 0, prompt, msg, 56, DOECHO))) { currutmp->chatid[0] = c0; currutmp->mode = mode0; @@ -703,6 +722,7 @@ my_write(pid_t pid, const char *prompt, const char *id, int flag, userinfo_t * p watermode = -1; return 0; } + if (watermode > 0) { int i; @@ -732,8 +752,10 @@ my_write(pid_t pid, const char *prompt, const char *id, int flag, userinfo_t * p || flag == WATERBALL_CONFIRM_ANGEL || flag == WATERBALL_CONFIRM_ANSWER #endif - )) { + )) + { snprintf(buf, sizeof(buf), "丟給 %s : %s [Y/n]?", destid, msg); + getdata(0, 0, buf, genbuf, 3, LCECHO); if (genbuf[0] == 'n') { currutmp->chatid[0] = c0; @@ -757,7 +779,10 @@ my_write(pid_t pid, const char *prompt, const char *id, int flag, userinfo_t * p currstat = currstat0; return 0; } - fri_stat = friend_stat(currutmp, uin); + if(fri_stat < 0) + fri_stat = friend_stat(currutmp, uin); + // else, fri_stat was already calculated. */ + if (flag != WATERBALL_ALOHA) { /* aloha 的水球不用存下來 */ /* 存到自己的水球檔 */ if (!fp_writelog) { @@ -786,9 +811,9 @@ my_write(pid_t pid, const char *prompt, const char *id, int flag, userinfo_t * p * Avoiding new users don't know what pager is. */ #endif !HasUserPerm(PERM_SYSOP) && - (uin->pager == 3 || - uin->pager == 2 || - (uin->pager == 4 && + (uin->pager == PAGER_ANTIWB || + uin->pager == PAGER_DISABLE || + (uin->pager == PAGER_FRIENDONLY && !(fri_stat & HFM)))) #ifdef PLAY_ANGEL || ((flag == WATERBALL_ANGEL || flag == WATERBALL_CONFIRM_ANGEL) @@ -802,7 +827,7 @@ my_write(pid_t pid, const char *prompt, const char *id, int flag, userinfo_t * p unsigned char pager0 = uin->pager; uin->msgcount = write_pos + 1; - uin->pager = 2; + uin->pager = PAGER_DISABLE; uin->msgs[write_pos].pid = currpid; #ifdef PLAY_ANGEL if (flag == WATERBALL_ANSWER || flag == WATERBALL_CONFIRM_ANSWER) @@ -1497,10 +1522,10 @@ my_talk(userinfo_t * uin, int fri_stat, char defact) ((!uin->pager) && !(fri_stat & HFM)))) { outs("對方關掉呼叫器了"); } else if (!HasUserPerm(PERM_SYSOP) && - (((fri_stat & HRM) && !(fri_stat & HFM)) || uin->pager == 2)) { + (((fri_stat & HRM) && !(fri_stat & HFM)) || uin->pager == PAGER_DISABLE)) { outs("對方拔掉呼叫器了"); } else if (!HasUserPerm(PERM_SYSOP) && - !(fri_stat & HFM) && uin->pager == 4) { + !(fri_stat & HFM) && uin->pager == PAGER_FRIENDONLY) { outs("對方只接受好友的呼叫"); } else if (!(pid = uin->pid) /* || (kill(pid, 0) == -1) */ ) { //resetutmpent(); @@ -1772,7 +1797,7 @@ descript(int show_mode, const userinfo_t * uentp, int diff) case 1: return friend_descript(uentp, description, sizeof(description)); case 0: - return (((uentp->pager != 2 && uentp->pager != 3 && diff) || + return (((uentp->pager != PAGER_DISABLE && uentp->pager != PAGER_ANTIWB && diff) || HasUserPerm(PERM_SYSOP)) ? #ifdef WHERE uentp->from_alias ? SHM->home_desc[uentp->from_alias] : @@ -2242,7 +2267,7 @@ call_in(const userinfo_t * uentp, int fri_stat) { if (iswritable_stat(uentp, fri_stat)) { char genbuf[60]; - snprintf(genbuf, sizeof(genbuf), "Call-In %s :", uentp->userid); + snprintf(genbuf, sizeof(genbuf), "丟 %s 水球: ", uentp->userid); my_write(uentp->pid, genbuf, uentp->userid, WATERBALL_GENERAL, NULL); return 1; } @@ -2593,8 +2618,8 @@ userlist(void) frstate = currutmp->friend_online[i] >> 24) && kill(uentp->pid, 0) != -1 && - uentp->pager != 3 && - (uentp->pager != 4 || frstate & HFM) && + uentp->pager != PAGER_ANTIWB && + (uentp->pager != PAGER_FRIENDONLY || frstate & HFM) && !(frstate & IRH)) { my_write(uentp->pid, genbuf, uentp->userid, WATERBALL_PREEDIT, NULL); @@ -2860,7 +2885,7 @@ t_users(void) int t_pager(void) { - currutmp->pager = (currutmp->pager + 1) % 5; + currutmp->pager = (currutmp->pager + 1) % PAGER_MODES; return 0; } diff --git a/mbbsd/var.c b/mbbsd/var.c index 16f3096f..26078085 100644 --- a/mbbsd/var.c +++ b/mbbsd/var.c @@ -608,11 +608,9 @@ const commands_t cmdlist[] = { "00Admin 【 系統維護區 】"}, {Announce, 0, "AAnnounce 【 精華公佈欄 】"}, #ifdef DEBUG - /* this is the real code name */ {Boards, 0, "FFavorite 【 我的最不愛 】"}, #else - /* this is for normal users */ - {Boards, 0, "FFavorite 【 我的最愛 】"}, + {Boards, 0, "FFavorite 【 我 的 最愛 】"}, #endif {root_board,0, "CClass 【 分組討論區 】"}, {Mail, PERM_BASIC, "MMail 【 私人信件區 】"}, @@ -621,7 +619,11 @@ const commands_t cmdlist[] = { {Xyz, 0, "XXyz 【 系統工具區 】"}, {Play_Play, PERM_BASIC, "PPlay 【 娛樂與休閒 】"}, {Name_Menu, PERM_LOGINOK, "NNamelist 【 編特別名單 】"}, - {Goodbye, 0, "GGoodbye 離開,再見……"}, +#ifdef DEBUG + {Goodbye, 0, "GGoodbye 再見再見再見再見"}, +#else + {Goodbye, 0, "GGoodbye 離開,再見… "}, +#endif {NULL, 0, NULL} }; #endif -- cgit v1.2.3