summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pttbbs/mbbsd/angel.c18
-rw-r--r--pttbbs/mbbsd/cal.c1
-rw-r--r--pttbbs/mbbsd/talk.c4
3 files changed, 17 insertions, 6 deletions
diff --git a/pttbbs/mbbsd/angel.c b/pttbbs/mbbsd/angel.c
index bd3e08b0..533b884d 100644
--- a/pttbbs/mbbsd/angel.c
+++ b/pttbbs/mbbsd/angel.c
@@ -96,14 +96,24 @@ angel_load_my_fullnick(char *buf, int szbuf)
{
char fn[PATHLEN];
FILE *fp = NULL;
+ static char mynick[IDLEN + 1] = "";
+ static time4_t touched = 0;
+ time4_t modtime = 0;
*buf = 0;
setuserfile(fn, FN_ANGELMSG);
- if ((fp = fopen(fn, "rt")))
- {
- angel_parse_nick_fp(fp, buf, szbuf);
- fclose(fp);
+ modtime = dasht(fn);
+ if (modtime != touched) {
+ touched = modtime;
+ *mynick = 0;
+ // reload file
+ if ((fp = fopen(fn, "rt")))
+ {
+ angel_parse_nick_fp(fp, mynick, sizeof(mynick));
+ fclose(fp);
+ }
}
+ strlcpy(buf, mynick, szbuf);
strlcat(buf, "小天使", szbuf);
}
diff --git a/pttbbs/mbbsd/cal.c b/pttbbs/mbbsd/cal.c
index 0cf6472b..1b108a30 100644
--- a/pttbbs/mbbsd/cal.c
+++ b/pttbbs/mbbsd/cal.c
@@ -427,6 +427,7 @@ give_money_ui(const char *userid)
vgets(yn, sizeof(yn), VGET_LOWERCASE);
switch(yn[0]) {
case 'y':
+ // TODO replace with angel_load_my_fullnick.
myid = "小天使";
break;
case 'n':
diff --git a/pttbbs/mbbsd/talk.c b/pttbbs/mbbsd/talk.c
index d4c74f55..8a105097 100644
--- a/pttbbs/mbbsd/talk.c
+++ b/pttbbs/mbbsd/talk.c
@@ -940,8 +940,8 @@ my_write(pid_t pid, const char *prompt, const char *id, int flag, userinfo_t * p
uin->msgs[write_pos].pid = currpid;
#ifdef PLAY_ANGEL
if (flag == WATERBALL_ANSWER || flag == WATERBALL_CONFIRM_ANSWER)
- strlcpy(uin->msgs[write_pos].userid, "小天使",
- sizeof(uin->msgs[write_pos].userid));
+ angel_load_my_fullnick(uin->msgs[write_pos].userid,
+ sizeof(uin->msgs[write_pos].userid));
else
#endif
strlcpy(uin->msgs[write_pos].userid, cuser.userid,