summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwens <wens@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2010-10-04 18:46:32 +0800
committerwens <wens@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2010-10-04 18:46:32 +0800
commitb73f62e5b604a33649300833d742d752cd5912ad (patch)
tree78895017e58ab7be452d2028665161b57df9abd1
parent4296c4cf834ab51c224830e61e37f6f6f266224f (diff)
downloadpttbbs-b73f62e5b604a33649300833d742d752cd5912ad.tar
pttbbs-b73f62e5b604a33649300833d742d752cd5912ad.tar.gz
pttbbs-b73f62e5b604a33649300833d742d752cd5912ad.tar.bz2
pttbbs-b73f62e5b604a33649300833d742d752cd5912ad.tar.lz
pttbbs-b73f62e5b604a33649300833d742d752cd5912ad.tar.xz
pttbbs-b73f62e5b604a33649300833d742d752cd5912ad.tar.zst
pttbbs-b73f62e5b604a33649300833d742d752cd5912ad.zip
Reorganize code flow
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@5107 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/util/account.c88
1 files changed, 41 insertions, 47 deletions
diff --git a/pttbbs/util/account.c b/pttbbs/util/account.c
index 093f57b8..c199690b 100644
--- a/pttbbs/util/account.c
+++ b/pttbbs/util/account.c
@@ -273,19 +273,22 @@ main(int argc, char **argv)
char buf[256], buf1[256];
FILE *fp, *fp1;
int act[27]; /* 次數/累計時間/pointer */
- time4_t now;
- struct tm *ptime;
+ time_t now;
+ struct tm tm_now, tm_adjusted;
attach_SHM();
nice(10);
chdir(BBSHOME);
- now = time(NULL) - ADJUST_M * 60; /* back to ancent */
- ptime = localtime4(&now);
+
+ now = time(NULL);
+ localtime_r(&now, &tm_now);
+ now -= ADJUST_M * 60;
+ localtime_r(&now, &tm_adjusted);
memset(act, 0, sizeof(act));
printf("次數/累計時間\n");
- parse_usies(log_file, ptime, act);
+ parse_usies(log_file, &tm_adjusted, act);
peak_hour_login = peak_hour = 0;
day_login = 0;
@@ -297,27 +300,16 @@ main(int argc, char **argv)
}
}
- if (!ptime->tm_hour) {
- keeplog("etc/today", BN_RECORD, "上站人次統計", NULL);
- keeplog(FN_MONEY, BN_SECURITY, "本日金錢往來記錄", NULL);
- keeplog("etc/illegal_money", BN_SECURITY, "本日違法賺錢記錄", NULL);
- keeplog("etc/osong.log", BN_SECURITY, "本日點歌記錄", NULL);
- keeplog("etc/chicken", BN_RECORD, "雞場報告", NULL);
- }
-
/* -------------------------------------------------------------- */
printf("上站人次統計\n");
- output_today(ptime, act, peak_hour_login, day_login);
+ output_today(&tm_adjusted, act, peak_hour_login, day_login);
/* -------------------------------------------------------------- */
printf("歷史事件處理\n");
/* Ptt 歷史事件處理 */
- update_history(ptime, peak_hour, peak_hour_login, day_login);
-
- now += ADJUST_M * 60; /* back to future */
- ptime = localtime4(&now);
+ update_history(&tm_adjusted, peak_hour, peak_hour_login, day_login);
- if (ptime->tm_hour) {
+ if (tm_now.tm_hour) {
/* rotate one line in today_is */
/* XXX totally meaningless, it is only relative sequence since rotate, not mapping to real time */
puts("多個節日處理");
@@ -336,27 +328,31 @@ main(int argc, char **argv)
}
}
- if (ptime->tm_hour == 0) {
+ if (tm_now.tm_hour == 0) {
system("/bin/cp etc/today etc/yesterday");
/* system("rm -f note.dat"); */
- /* Ptt */
+ keeplog("etc/today", BN_RECORD, "上站人次統計", NULL);
+ keeplog(FN_MONEY, BN_SECURITY, "本日金錢往來記錄", NULL);
+ keeplog("etc/illegal_money", BN_SECURITY, "本日違法賺錢記錄", NULL);
+ keeplog("etc/osong.log", BN_SECURITY, "本日點歌記錄", NULL);
+ keeplog("etc/chicken", BN_RECORD, "雞場報告", NULL);
+
+ // Re-output today's user stats, because keeplog removes it
+ output_today(&tm_adjusted, act, peak_hour_login, day_login);
+
snprintf(buf, sizeof(buf), "[公安報告] 使用者上線監控 [%02d/%02d:%02d]",
- ptime->tm_mon + 1, ptime->tm_mday, ptime->tm_hour);
+ tm_now.tm_mon + 1, tm_now.tm_mday, tm_now.tm_hour);
keeplog("usies", "Security", buf, "usies");
printf("[公安報告] 使用者上線監控\n");
- /* Ptt 歷史事件處理 */
- now -= ADJUST_M * 60; /* back to ancent */
- ptime = localtime4(&now);
-
sprintf(buf, "-%02d%02d%02d",
- ptime->tm_year % 100, ptime->tm_mon + 1, ptime->tm_mday);
- gzip(log_file, "usies", buf);
- printf("壓縮使用者上線監控\n");
+ tm_adjusted.tm_year % 100, tm_adjusted.tm_mon + 1, tm_adjusted.tm_mday);
- now += ADJUST_M * 60; /* back to future */
- ptime = localtime4(&now);
+ printf("壓縮使用者上線監控\n");
+ gzip(log_file, "usies", buf);
+ gzip("innd/bbslog", "innbbsd", buf);
+ gzip("etc/mailog", "mailog", buf);
/* Ptt 節日處理 */
printf("節日處理\n");
@@ -369,7 +365,7 @@ main(int argc, char **argv)
if (isdigit(buf[0])) {
if (isdigit(buf[1])) {
da = 10 * (buf[0] - '0') + (buf[1] - '0');
- if (ptime->tm_mday == da && ptime->tm_mon + 1 == mo) {
+ if (tm_now.tm_mday == da && tm_now.tm_mon + 1 == mo) {
i = 1;
fprintf(fp1, "%-14.14s", &buf1[6]);
}
@@ -379,8 +375,8 @@ main(int argc, char **argv)
buf[1] = toupper(buf[1]);
while (wday < 7 && buf[1] != *(wday_str + wday))
wday++;
- if (ptime->tm_mon + 1 == mo && ptime->tm_wday == wday &&
- (ptime->tm_mday - 1) / 7 + 1 == (buf[0] - '0')) {
+ if (tm_now.tm_mon + 1 == mo && tm_now.tm_wday == wday &&
+ (tm_now.tm_mday - 1) / 7 + 1 == (buf[0] - '0')) {
i = 1;
fprintf(fp1, "%-14.14s", &buf1[6]);
}
@@ -410,7 +406,7 @@ main(int argc, char **argv)
if ((fp = fopen("etc/Welcome.date", "r"))) {
char temp[50];
while (fscanf(fp, "%d %d %s\n", &mo, &da, buf1) == 3) {
- if (ptime->tm_mday == da && ptime->tm_mon + 1 == mo) {
+ if (tm_now.tm_mday == da && tm_now.tm_mon + 1 == mo) {
strcpy(temp, buf1);
sprintf(buf1, "cp -f etc/Welcomes/%s etc/Welcome", temp);
system(buf1);
@@ -419,30 +415,28 @@ main(int argc, char **argv)
}
fclose(fp);
}
- printf("歡迎畫面處理\n");
- if (ptime->tm_wday == 0) {
+
+ if (tm_now.tm_wday == 0)
keeplog("etc/week", BN_RECORD, "本週熱門話題", NULL);
- gzip("bbslog", "bntplink", buf);
- gzip("innd/bbslog", "innbbsd", buf);
- gzip("etc/mailog", "mailog", buf);
- }
- if (ptime->tm_mday == 1)
+ if (tm_now.tm_mday == 1)
keeplog("etc/month", BN_RECORD, "本月熱門話題", NULL);
- if (ptime->tm_yday == 1)
+ if (tm_now.tm_yday == 1)
keeplog("etc/year", BN_RECORD, "年度熱門話題", NULL);
- } else if (ptime->tm_hour == 3 && ptime->tm_wday == 6) {
- char *fn1 = "tmp";
- char *fn2 = "suicide";
+ } else if (tm_now.tm_hour == 3 && tm_now.tm_wday == 6) {
+ const char const fn1[] = "tmp";
+ const char const fn2[] = "suicide";
+
rename(fn1, fn2);
mkdir(fn1, 0755);
sprintf(buf, "tar cfz adm/%s-%02d%02d%02d.tgz %s",
- fn2, ptime->tm_year % 100, ptime->tm_mon + 1, ptime->tm_mday, fn2);
+ fn2, tm_now.tm_year % 100, tm_now.tm_mon + 1, tm_now.tm_mday, fn2);
system(buf);
sprintf(buf, "/bin/rm -fr %s", fn2);
system(buf);
}
+
/* Ptt reset Ptt's share memory */
printf("重設cache 與fcache\n");