summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mbbsd/admin.c5
-rw-r--r--mbbsd/bbs.c18
-rw-r--r--mbbsd/cache.c8
-rw-r--r--mbbsd/cal.c16
-rw-r--r--mbbsd/chicken.c50
-rw-r--r--mbbsd/edit.c13
-rw-r--r--mbbsd/fav.c4
-rw-r--r--mbbsd/mail.c9
-rw-r--r--mbbsd/mbbsd.c20
-rw-r--r--mbbsd/read.c2
-rw-r--r--mbbsd/stuff.c39
11 files changed, 76 insertions, 108 deletions
diff --git a/mbbsd/admin.c b/mbbsd/admin.c
index 2175f764..6e98ff2e 100644
--- a/mbbsd/admin.c
+++ b/mbbsd/admin.c
@@ -1065,12 +1065,9 @@ scan_register_form(char *regfile, int automode, int neednum)
strlcpy(muser.realname, fdata[2], sizeof(muser.realname));
strlcpy(muser.address, fdata[4], sizeof(muser.address));
strlcpy(muser.email, fdata[6], sizeof(muser.email));
- snprintf(genbuf, sizeof(genbuf),
- "%s:%s:%s", fdata[5], fdata[3], uid);
strncpy(muser.justify, genbuf, REGLEN);
sethomefile(buf, muser.userid, "justify");
- strncat(genbuf, "\n", sizeof(genbuf));
- log_file(buf, genbuf, 1);
+ log_file(buf, 1, "%s:%s:%s\n", fdata[5], fdata[3], uid);
passwd_update(unum, &muser);
if ((fout = fopen(logfile, "a"))) {
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c
index c78f270b..194bb972 100644
--- a/mbbsd/bbs.c
+++ b/mbbsd/bbs.c
@@ -30,12 +30,9 @@ mail_by_link(char *owner, char *title, char *path)
void
anticrosspost()
{
- char buf[200];
-
- snprintf(buf, sizeof(buf),
- "\033[1;33;46m%s \033[37;45mcross post 文章 \033[37m %s\033[m\n",
- cuser.userid, ctime(&now));
- log_file("etc/illegal_money", buf, 1);
+ log_file("etc/illegal_money", 1,
+ "\033[1;33;46m%s \033[37;45mcross post 文章 \033[37m %s\033[m\n",
+ cuser.userid, ctime(&now));
post_violatelaw(cuser.userid, "Ptt系統警察", "Cross-post", "罰單處份");
cuser.userlevel |= PERM_VIOLATELAW;
@@ -1409,7 +1406,7 @@ do_add_recommend(char *direct, fileheader_t *fhdr, int ent, char *buf)
3.若推的時候前文被刪, 將加到後文的推文數
*/
setdirpath(path, direct, fhdr->filename);
- if( log_file(path, buf, 0) == -1 ){ // 不 CREATE
+ if( log_file(path, 0, buf) == -1 ){ // 不 CREATE
vmsg("推薦/競標失敗");
return -1;
}
@@ -2620,12 +2617,9 @@ ReadSelect()
static void
log_board(char *mode, time_t usetime)
{
- char buf[256];
-
if (usetime > 30) {
- snprintf(buf, sizeof(buf), "USE %-20.20s Stay: %5ld (%s) %s\n",
- mode, usetime, cuser.userid, ctime(&now));
- log_file(FN_USEBOARD, buf, 1);
+ log_file(FN_USEBOARD, 1, "USE %-20.20s Stay: %5ld (%s) %s\n",
+ mode, usetime, cuser.userid, ctime(&now));
}
}
#endif
diff --git a/mbbsd/cache.c b/mbbsd/cache.c
index 8a43cfd6..f77bd2a7 100644
--- a/mbbsd/cache.c
+++ b/mbbsd/cache.c
@@ -471,13 +471,9 @@ setutmpmode(unsigned int mode)
{
if (currstat != mode)
currutmp->mode = currstat = mode;
-
/* 追蹤使用者 */
if (HAS_PERM(PERM_LOGUSER)) {
- char msg[200];
- snprintf(msg, sizeof(msg), "%s setutmpmode to %s(%d) at %s",
- cuser.userid, modestring(currutmp, 0), mode, Cdate(&COMMON_TIME));
- log_user(msg);
+ log_user("setutmpmode to %s(%d)", modestring(currutmp, 0), mode);
}
}
#endif
@@ -628,7 +624,7 @@ setbottomtotal(int bid)
n = get_num_records(genbuf, sizeof(fileheader_t));
if(n>5)
{
- log_file("fix_bottom", genbuf, 1);
+ log_file("fix_bottom", 1, "%s n:%d\n", genbuf, n);
unlink(genbuf);
SHM->n_bottom[bid-1]=0;
}
diff --git a/mbbsd/cal.c b/mbbsd/cal.c
index 3430ae75..a2b1ae48 100644
--- a/mbbsd/cal.c
+++ b/mbbsd/cal.c
@@ -59,13 +59,12 @@ unlockutmpmode()
int
vice(int money, char *item)
{
- char buf[128], vice[12];
+ char buf[128];
unsigned int viceserial = (currutmp->lastact % 1000000) * 100 + rand() % 100;
demoney(-money);
setuserfile(buf, VICE_NEW);
- sprintf(vice,"%8.8d\n", viceserial);
- log_file(buf, vice, 1);
+ log_file(buf, 1, "%8.8d\n", viceserial);
snprintf(buf, sizeof(buf),
"%s 花了%d$ 編號[%08d]", item, money, viceserial);
mail_id(cuser.userid, buf, "etc/vice.txt", "Ptt經濟部");
@@ -360,14 +359,14 @@ int
p_give()
{
int money, tax;
- char id[IDLEN + 1], genbuf[90];
+ char id[IDLEN + 1], money_buf[20];
move(1, 0);
usercomplete("這位幸運兒的id:", id);
if (!id[0] || !strcmp(cuser.userid, id) ||
- !getdata(2, 0, "要給多少錢:", genbuf, 7, LCECHO))
+ !getdata(2, 0, "要給多少錢:", money_buf, 7, LCECHO))
return 0;
- money = atoi(genbuf);
+ money = atoi(money_buf);
reload_money();
if (money > 0 && cuser.money >= money) {
tax = give_tax(money);
@@ -375,9 +374,8 @@ p_give()
return 0; /* 繳完稅就沒錢給了 */
deumoney(searchuser(id), money - tax);
demoney(-money);
- snprintf(genbuf, sizeof(genbuf), "%s\t給%s\t%d\t%s",
- cuser.userid, id, money - tax, ctime(&now));
- log_file(FN_MONEY, genbuf, 1);
+ log_file(FN_MONEY,1, "%s\t給%s\t%d\t%s",
+ cuser.userid, id, money - tax, ctime(&now));
mail_redenvelop(cuser.userid, id, money - tax, getans("要自行書寫紅包袋嗎?[y/N]"));
}
return 0;
diff --git a/mbbsd/chicken.c b/mbbsd/chicken.c
index e285856d..78268e49 100644
--- a/mbbsd/chicken.c
+++ b/mbbsd/chicken.c
@@ -102,8 +102,7 @@ static int
new_chicken()
{
chicken_t *mychicken = &cuser.mychicken;
- char buf[150];
- int price;
+ int price, i;
clear();
move(2, 0);
@@ -116,13 +115,13 @@ new_chicken()
"(k)忍者 $85 (l)阿扁 $200 (m)馬英九 $200 (n)就可人$100 "
"[o]羅莉 $77\n"
"[0]自己 $0\n");
- getdata_str(7, 0, "請選擇你要養的動物:", buf, 3, LCECHO, "0");
+ i = getans("請選擇你要養的動物:");
- buf[0] -= 'a';
- if (buf[0] < 0 || buf[0] > NUM_KINDS - 1)
+ i -= 'a';
+ if (i < 0 || i > NUM_KINDS - 1)
return 0;
- mychicken->type = buf[0];
+ mychicken->type = i;
reload_money();
price = egg_price[(int)mychicken->type];
@@ -135,11 +134,10 @@ new_chicken()
getdata(8, 0, "幫牠取個好名字:", mychicken->name,
sizeof(mychicken->name), DOECHO);
- snprintf(buf, sizeof(buf),
- "\033[31m%s \033[m養了一隻叫\033[33m %s \033[m的 "
- "\033[32m%s\033[m 於 %s\n", cuser.userid,
- mychicken->name, chicken_type[(int)mychicken->type], ctime(&now));
- log_file(CHICKENLOG, buf, 1);
+ log_file(CHICKENLOG, 1,
+ "\033[31m%s \033[m養了一隻叫\033[33m %s \033[m的 "
+ "\033[32m%s\033[m 於 %s\n", cuser.userid,
+ mychicken->name, chicken_type[(int)mychicken->type], ctime(&now));
mychicken->lastvisit = mychicken->birthday = mychicken->cbirth = now;
mychicken->food = 0;
mychicken->weight = time_change[(int)mychicken->type][WEIGHT] / 3;
@@ -440,20 +438,17 @@ static void
ch_kill()
{
chicken_t *mychicken = &cuser.mychicken;
- char buf[150], ans[4];
+ int ans;
- snprintf(buf, sizeof(buf), "棄養這%s要被罰 100 元, 是否要棄養?(y/N)",
- chicken_type[(int)mychicken->type]);
- getdata_str(23, 0, buf, ans, sizeof(ans), DOECHO, "N");
- if (ans[0] == 'y') {
+ ans = getans("棄養要被罰 100 元, 是否要棄養?(y/N)");
+ if (ans == 'y') {
vice(100, "棄養寵物費");
more(CHICKEN_PIC "/deadth", YEA);
- snprintf(buf, sizeof(buf),
+ log_file(CHICKENLOG, 1,
"\033[31m%s \033[m把 \033[33m%s\033[m\033[32m %s "
"\033[m宰了 於 %s\n", cuser.userid, mychicken->name,
chicken_type[(int)mychicken->type], ctime(&now));
- log_file(CHICKENLOG, buf, 1);
mychicken->name[0] = 0;
}
}
@@ -482,8 +477,7 @@ ch_sell()
int money = (age * food_price[(int)mychicken->type] * 3
+ (mychicken->hp_max * 10 + mychicken->weight) /
time_change[(int)mychicken->type][HP_MAX]) * 3 / 2 -
- mychicken->sick;
- char buf[150], ans[4];
+ mychicken->sick, ans;
if (money < 0)
money = 0;
@@ -505,15 +499,13 @@ ch_sell()
pressanykey();
return 0;
}
- snprintf(buf, sizeof(buf), "這隻%d歲%s可以賣 %d 元, 是否要賣?(y/N)", age,
- chicken_type[(int)mychicken->type], money);
- getdata_str(23, 0, buf, ans, sizeof(ans), DOECHO, "N");
- if (ans[0] == 'y') {
- snprintf(buf, sizeof(buf), "\033[31m%s\033[m 把 \033[33m%s\033[m "
- "\033[32m%s\033[m 用 \033[36m%d\033[m 賣了 於 %s\n",
- cuser.userid, mychicken->name,
- chicken_type[(int)mychicken->type], money, ctime(&now));
- log_file(CHICKENLOG, buf, 1);
+ ans = getans("這隻%d歲%s可以賣 %d 元, 是否要賣?(y/N)", age,
+ chicken_type[(int)mychicken->type], money);
+ if (ans == 'y') {
+ log_file(CHICKENLOG, 1, "\033[31m%s\033[m 把 \033[33m%s\033[m "
+ "\033[32m%s\033[m 用 \033[36m%d\033[m 賣了 於 %s\n",
+ cuser.userid, mychicken->name,
+ chicken_type[(int)mychicken->type], money, ctime(&now));
mychicken->lastvisit = mychicken->name[0] = 0;
passwd_update(usernum, &cuser);
more(CHICKEN_PIC "/sell", YEA);
diff --git a/mbbsd/edit.c b/mbbsd/edit.c
index ac03696c..d8f376fc 100644
--- a/mbbsd/edit.c
+++ b/mbbsd/edit.c
@@ -1696,19 +1696,6 @@ vedit(char *fpath, int saveheader, int *islocal)
count = 0;
tin = interval;
}
- /* 連續240個interval一樣 , 分明是在斂財
- if (count >= 240) {
- char buf[200];
- snprintf(buf, sizeof(buf), "\033[1;33;46m%s\033[37m在\033[37;45m%s\n"
- "\033[37m板違法賺錢 , %s\033[m", cuser.userid,
- currboard, ctime(&now));
- log_file("etc/illegal_money", buf, 1);
- money = 0;
- post_violatelaw(cuser.userid, "Ptt 系統警察", "違法賺錢", "扣除不法所得");
- mail_violatelaw(cuser.userid, "Ptt 系統警察", "違法賺錢", "扣除不法所得");
- demoney(10000);
- abort_bbs(0);
- } */
if (raw_mode)
switch (ch) {
case Ctrl('S'):
diff --git a/mbbsd/fav.c b/mbbsd/fav.c
index 8d1381cb..fddccbb8 100644
--- a/mbbsd/fav.c
+++ b/mbbsd/fav.c
@@ -456,10 +456,8 @@ int fav_save(void)
write_favrec(fd, fp);
close(fd);
if (dashs(buf) == 4) {
- char buf3[128];
time_t now = time(NULL);
- sprintf(buf3, "%s %s", cuser.userid, ctime(&now));
- log_file(BBSHOME"/dirty.hack", buf3, 1);
+ log_file(BBSHOME"/dirty.hack", 1, "%s %s", cuser.userid, ctime(&now));
return -1;
}
Rename(buf, buf2);
diff --git a/mbbsd/mail.c b/mbbsd/mail.c
index 4e2b9389..053796a9 100644
--- a/mbbsd/mail.c
+++ b/mbbsd/mail.c
@@ -1594,13 +1594,8 @@ doforward(char *direct, fileheader_t * fh, int mode)
refresh();
/* 追蹤使用者 */
- if (HAS_PERM(PERM_LOGUSER)) {
- char msg[200];
-
- snprintf(msg, sizeof(msg), "%s mailforward to %s at %s",
- cuser.userid, address, Cdate(&now));
- log_user(msg);
- }
+ if (HAS_PERM(PERM_LOGUSER))
+ log_user("mailforward to %s ",address);
if (mode == 'Z') {
snprintf(fname, sizeof(fname),
TAR_PATH " cfz /tmp/home.%s.tgz home/%c/%s; "
diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c
index 8cef890c..804b2af3 100644
--- a/mbbsd/mbbsd.c
+++ b/mbbsd/mbbsd.c
@@ -98,36 +98,22 @@ reapchild(int sig)
}
void
-log_user(char *msg)
-{
- char filename[200], buf[200];
-
- snprintf(filename, sizeof(filename), BBSHOME "/home/%c/%s/USERLOG",
- cuser.userid[0], cuser.userid);
- snprintf(buf, sizeof(buf), "%s\n", msg);
- log_file(filename, msg, 1);
-}
-
-
-void
log_usies(char *mode, char *mesg)
{
- char genbuf[200];
if (!mesg)
- snprintf(genbuf, sizeof(genbuf),
+ log_file(FN_USIES, 1,
"%s %s %-12s Stay:%d (%s)\n",
Cdate(&now), mode, cuser.userid ,
(int)(now - login_start_time) / 60, cuser.username);
else
- snprintf(genbuf, sizeof(genbuf),
+ log_file(FN_USIES, 1,
"%s %s %-12s %s\n",
Cdate(&now), mode, cuser.userid, mesg);
- log_file(FN_USIES, genbuf, 1);
/* 追蹤使用者 */
if (HAS_PERM(PERM_LOGUSER))
- log_user(genbuf);
+ log_user("logout");
}
diff --git a/mbbsd/read.c b/mbbsd/read.c
index c6c35aea..a53be8b0 100644
--- a/mbbsd/read.c
+++ b/mbbsd/read.c
@@ -352,7 +352,7 @@ select_read(keeploc_t * locmem, int sr_mode)
currmode & MODE_SELECT ? "增加條件 標題:":"搜尋標題:",
keyword, TTLEN, DOECHO))
return READ_REDRAW;
- log_file("keyword_search_log", keyword, 1);
+ log_file("keyword_search_log", 1, "%s:%s", currboard, keyword);
}
else if(sr_mode & RS_TITLE)
strcpy(keyword, subject(fh->title));
diff --git a/mbbsd/stuff.c b/mbbsd/stuff.c
index 7ffc4f92..be260cf3 100644
--- a/mbbsd/stuff.c
+++ b/mbbsd/stuff.c
@@ -425,11 +425,16 @@ vmsg_lines(const int lines, const char msg[])
return ch;
}
-char getans(char *prompt)
+char getans(const char *fmt,...)
{
- char ans[5];
+ char msg[256];
+ char ans[5];
+ va_list ap;
+ va_start(ap, fmt);
+ vsnprintf(msg , 128, fmt, ap);
+ va_end(ap);
- getdata(b_lines, 0, prompt, ans, sizeof(ans), LCECHO);
+ getdata(b_lines, 0, msg, ans, sizeof(ans), LCECHO);
return ans[0];
}
@@ -439,7 +444,7 @@ getkey(const char *fmt,...)
char msg[256], i;
va_list ap;
va_start(ap, fmt);
- i = vsnprintf(msg , 100, fmt, ap);
+ i = vsnprintf(msg , 128, fmt, ap);
va_end(ap);
return vmsg_lines(b_lines, msg);
}
@@ -450,7 +455,7 @@ vmsg(const char *fmt,...)
char msg[256] = "\033[1;36;44m ◆ ", i;
va_list ap;
va_start(ap, fmt);
- i = vsnprintf(msg + 14, 100, fmt, ap);
+ i = vsnprintf(msg + 14, 128, fmt, ap);
va_end(ap);
for(i = i + 14; i < 71; i++)
msg[(int)i] = ' ';
@@ -578,13 +583,33 @@ printdash(char *mesg)
outch('\n');
}
-int log_file(char *fn, char *buf, int ifcreate)
+int
+log_user(const char *fmt, ...)
+{
+ char msg[256], filename[256];
+ va_list ap;
+
+ va_start(ap, fmt);
+ vsnprintf(msg , 128, fmt, ap);
+ va_end(ap);
+
+ sethomefile(filename, cuser.userid, "USERLOG");
+ return log_file(filename, 1, "%s: %s %s", cuser.userid, msg, Cdate(&now));
+}
+
+int log_file(char *fn, int ifcreate, const char *fmt,...)
{
int fd;
+ char msg[256];
+ va_list ap;
+ va_start(ap, fmt);
+ vsnprintf(msg , 128, fmt, ap);
+ va_end(ap);
+
if( (fd = open(fn, O_APPEND | O_WRONLY | (ifcreate ? O_CREAT : 0),
(ifcreate ? 0664 : 0))) < 0 )
return -1;
- if( write(fd, buf, strlen(buf)) < 0 ){
+ if( write(fd, msg, strlen(msg)) < 0 ){
close(fd);
return -1;
}