summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-09-08 01:56:22 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-09-08 01:56:22 +0800
commitf6fabc3faa9e9886cdfd21899bc11544e3c8c131 (patch)
tree7d1102c42196f999e59a2de8f45f17aba6cbada8
parent832362c47fd3aa11394ebeedeb8ee9111294adc7 (diff)
downloadpttbbs-f6fabc3faa9e9886cdfd21899bc11544e3c8c131.tar
pttbbs-f6fabc3faa9e9886cdfd21899bc11544e3c8c131.tar.gz
pttbbs-f6fabc3faa9e9886cdfd21899bc11544e3c8c131.tar.bz2
pttbbs-f6fabc3faa9e9886cdfd21899bc11544e3c8c131.tar.lz
pttbbs-f6fabc3faa9e9886cdfd21899bc11544e3c8c131.tar.xz
pttbbs-f6fabc3faa9e9886cdfd21899bc11544e3c8c131.tar.zst
pttbbs-f6fabc3faa9e9886cdfd21899bc11544e3c8c131.zip
pager=waterball made readable
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3139 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--include/modes.h9
-rw-r--r--mbbsd/chat.c8
-rw-r--r--mbbsd/mbbsd.c8
-rw-r--r--mbbsd/register.c2
-rw-r--r--mbbsd/talk.c55
-rw-r--r--mbbsd/var.c10
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