summaryrefslogtreecommitdiffstats
path: root/mbbsd/talk.c
diff options
context:
space:
mode:
authorin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2002-03-09 18:34:58 +0800
committerin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2002-03-09 18:34:58 +0800
commit333ccae794114252eeba90e2288ffd7b6fd0c9db (patch)
treeafb5e20e3349b1c481140843d5618b75d072f3e8 /mbbsd/talk.c
parent3813eb2b959227e88aacbda9da2c5e05d4839870 (diff)
downloadpttbbs-333ccae794114252eeba90e2288ffd7b6fd0c9db.tar
pttbbs-333ccae794114252eeba90e2288ffd7b6fd0c9db.tar.gz
pttbbs-333ccae794114252eeba90e2288ffd7b6fd0c9db.tar.bz2
pttbbs-333ccae794114252eeba90e2288ffd7b6fd0c9db.tar.lz
pttbbs-333ccae794114252eeba90e2288ffd7b6fd0c9db.tar.xz
pttbbs-333ccae794114252eeba90e2288ffd7b6fd0c9db.tar.zst
pttbbs-333ccae794114252eeba90e2288ffd7b6fd0c9db.zip
ofo's water show 'x' for dead users
my_write() input uin if already got it git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk/pttbbs@11 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/talk.c')
-rw-r--r--mbbsd/talk.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/mbbsd/talk.c b/mbbsd/talk.c
index 3012b2d2..b5c99aad 100644
--- a/mbbsd/talk.c
+++ b/mbbsd/talk.c
@@ -1,4 +1,4 @@
-/* $Id: talk.c,v 1.1 2002/03/07 15:13:48 in2 Exp $ */
+/* $Id: talk.c,v 1.2 2002/03/09 10:34:58 in2 Exp $ */
#include <stdio.h>
#include <string.h>
#include <errno.h>
@@ -466,7 +466,9 @@ void water_scr(water_t **currwater, int which, char type)
int colors[] = {33, 37, 33, 37, 33};
move(8 + which, 28);prints(" ");
move(8 + which, 28);
- prints("\033[1;37;45m %-14s \033[0m", currwater[which]->userid);
+ prints("\033[1;37;45m %c %-14s \033[0m",
+ currwater[which]->alive ? ' ' : 'x',
+ currwater[which]->userid);
for( i = 0 ; i < 5 ; ++i ){
move(16 + i, 4);
prints(" ");
@@ -489,7 +491,9 @@ void water_scr(water_t **currwater, int which, char type)
prints("123456789012345678901234567890");
// refresh();
move(8 + which, 28);
- prints("\033[1;37;44m %-13s¡@\033[0m", currwater[which]->userid);
+ prints("\033[1;37;44m %c %-13s¡@\033[0m",
+ currwater[which]->alive ? ' ' : 'x',
+ currwater[which]->userid);
// refresh();
}
}
@@ -517,8 +521,14 @@ void my_write2(void)
for( i = 0 ; i < 5 ; ++i )
if( currwater[i] == NULL || currwater[i]->pid == 0 )
break;
- else
+ else{
+ if( currwater[i]->uin == NULL )
+ currwater[i]->uin =
+ (userinfo_t *)search_ulist_pid(currwater[i]->pid);
+ currwater[i]->alive = (strcmp(currwater[i]->userid,
+ currwater[i]->uin->userid) == 0);
water_scr(currwater, i, 0);
+ }
move(15, 4);
prints("\033[0m \033[1;35m¡º\033[1;36m¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w"
"¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w\033[1;35m¡º\033[0m ");
@@ -575,7 +585,7 @@ void my_write2(void)
80-strlen(tw->userid)-6, DOECHO) )
break;
- my_write(tw->pid, msg, tw->userid, 4);
+ my_write(tw->pid, msg, tw->userid, 4, tw->uin);
break;
}
} while( !done );
@@ -595,7 +605,7 @@ void my_write2(void)
5. ¥á¤ô²y flag = 0
6. my_write2 flag = 4 (pre-edit) but confirm
*/
-int my_write(pid_t pid, char *prompt, char *id, int flag) {
+int my_write(pid_t pid, char *prompt, char *id, int flag, userinfo_t *puin) {
int len, currstat0 = currstat, fri_stat;
char msg[80], destid[IDLEN + 1];
char genbuf[200], buf[200], c0 = currutmp->chatid[0];
@@ -603,7 +613,7 @@ int my_write(pid_t pid, char *prompt, char *id, int flag) {
time_t now;
struct tm *ptime;
userinfo_t *uin;
- uin = (userinfo_t *)search_ulist_pid(pid);
+ uin = (puin != NULL) ? puin : (userinfo_t *)search_ulist_pid(pid);
strcpy(destid, id);
if(!uin && !(flag == 0 && water_which->count> 0)) {
@@ -2107,7 +2117,7 @@ static void pickup_user() {
(HAS_PERM(PERM_SYSOP) ||
(uentp->pager != 3 &&
(uentp->pager != 4 || fri_stat & HFM))))
- my_write(uentp->pid, genbuf, uentp->userid, HAS_PERM(PERM_SYSOP) ? 3 : 1);
+ my_write(uentp->pid, genbuf, uentp->userid, HAS_PERM(PERM_SYSOP) ? 3 : 1, NULL);
}
}
break;
@@ -2206,7 +2216,7 @@ static void pickup_user() {
{
cursor_show(num + 3 - head, 0);
sprintf(genbuf, "Call-In %s ¡G", uentp->userid);
- my_write(uentp->pid, genbuf, uentp->userid, 0);
+ my_write(uentp->pid, genbuf, uentp->userid, 0, NULL);
}
}
else if (ch == 'l')