summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/perm.h4
-rw-r--r--include/proto.h25
-rw-r--r--include/pttstruct.h2
-rw-r--r--mbbsd/admin.c14
-rw-r--r--mbbsd/announce.c16
-rw-r--r--mbbsd/bbcall.c274
-rw-r--r--mbbsd/bbs.c104
-rw-r--r--mbbsd/board.c22
-rw-r--r--mbbsd/brc.c4
-rw-r--r--mbbsd/cache.c41
-rw-r--r--mbbsd/cal.c46
-rw-r--r--mbbsd/calendar.c2
-rw-r--r--mbbsd/card.c14
-rw-r--r--mbbsd/chat.c8
-rw-r--r--mbbsd/chc.c12
-rw-r--r--mbbsd/chicken.c67
-rw-r--r--mbbsd/dice.c18
-rw-r--r--mbbsd/edit.c32
-rw-r--r--mbbsd/fav.c4
-rw-r--r--mbbsd/friend.c4
-rw-r--r--mbbsd/gamble.c6
-rw-r--r--mbbsd/gomo.c58
-rw-r--r--mbbsd/guess.c26
-rw-r--r--mbbsd/indict.c2
-rw-r--r--mbbsd/kaede.c12
-rw-r--r--mbbsd/lovepaper.c4
-rw-r--r--mbbsd/mail.c104
-rw-r--r--mbbsd/mbbsd.c161
-rw-r--r--mbbsd/menu.c8
-rw-r--r--mbbsd/othello.c16
-rw-r--r--mbbsd/page.c4
-rw-r--r--mbbsd/passwd.c4
-rw-r--r--mbbsd/read.c4
-rw-r--r--mbbsd/register.c32
-rw-r--r--mbbsd/stuff.c30
-rw-r--r--mbbsd/syspost.c12
-rw-r--r--mbbsd/talk.c68
-rw-r--r--mbbsd/user.c171
-rw-r--r--mbbsd/var.c2
-rw-r--r--mbbsd/vote.c4
-rw-r--r--mbbsd/voteboard.c22
-rw-r--r--mbbsd/xyz.c12
42 files changed, 567 insertions, 908 deletions
diff --git a/include/perm.h b/include/perm.h
index 93232bdb..2d676bae 100644
--- a/include/perm.h
+++ b/include/perm.h
@@ -49,8 +49,8 @@
#define PERM_FORWARD (PERM_BASIC) /* to do the forwarding */
#define PERM_INTERNET (PERM_LOGINOK) /* 身份認證過關的才能寄信到 Internet */
-#define HAS_PERM(x) ((x) ? cuser->userlevel & (x) : 1)
-#define HAVE_PERM(x) (cuser->userlevel&(x))
+#define HAS_PERM(x) ((x) ? cuser.userlevel & (x) : 1)
+#define HAVE_PERM(x) (cuser.userlevel&(x))
#define PERM_HIDE(u) ((u)->userlevel & PERM_SYSOP && \
(u)->userlevel & PERM_DENYPOST)
diff --git a/include/proto.h b/include/proto.h
index b4bdab92..b3fed5a6 100644
--- a/include/proto.h
+++ b/include/proto.h
@@ -45,9 +45,6 @@ int inc_goodsale(int uid, int num);
int inc_badsale(int uid, int num);
void set_assess(int uid, unsigned char num, int type);
-/* bbcall */
-int main_bbcall(void);
-
/* bbs */
void make_blist(void);
int invalid_brdname(char *brd);
@@ -99,7 +96,13 @@ void brc_trunc(int bid, time_t ftime);
void brc_addlist(const char* fname);
/* cache */
-int moneyof(int uid);
+#define demoney(money) deumoney(usernum, money)
+#define search_ulist(uid) search_ulistn(uid, 1)
+#define getbcache(bid) (bcache + bid - 1)
+#define moneyof(uid) SHM->money[uid - 1]
+#define getbtotal(bid) SHM->total[bid - 1]
+#define getbottomtotal(bid) SHM->n_bottom[bid-1]
+
int getuser(char *userid);
void setuserid(int num, char *userid);
int searchuser(char *userid);
@@ -110,7 +113,6 @@ void addbrd_touchcache(void);
void setapath(char *buf, char *boardname);
void setutmpmode(unsigned int mode);
void setadir(char *buf, char *path);
-boardheader_t *getbcache(int bid);
int apply_boards(int (*func)(boardheader_t *));
int haspostperm(char *bname);
void inbtotal(int bid, int add);
@@ -120,7 +122,6 @@ unsigned int safe_sleep(unsigned int seconds);
int apply_ulist(int (*fptr)(userinfo_t *));
userinfo_t *search_ulistn(int uid, int unum);
void purge_utmp(userinfo_t *uentp);
-userinfo_t *search_ulist(int uid);
int count_multi(void);
void resolve_utmp(void);
void attach_uhash(void);
@@ -138,11 +139,8 @@ int count_logins(int uid, int show);
void remove_from_uhash(int n);
void add_to_uhash(int n, char *id);
int setumoney(int uid, int money);
-int getbtotal(int bid);
-int getbottomtotal(int bid);
userinfo_t *search_ulist_pid(int pid);
userinfo_t *search_ulist_userid(char *userid);
-int moneyof(int uid);
void hbflreload(int bid);
int hbflcheck(int bid, int uid);
int updatemdcache(const char *cpath, const char *fpath);
@@ -164,8 +162,7 @@ int give_tax(int money);
int vice(int money, char* item);
int inumoney(char *tuser, int money);
int cal(void);
-#define reload_money() cuser->money=moneyof(usernum)
-int demoney(int money);
+#define reload_money() cuser.money=moneyof(usernum)
int deumoney(int uid, int money);
int lockutmpmode(int unmode, int state);
int unlockutmpmode(void);
@@ -480,6 +477,9 @@ void initscr(void);
void out_lines(char *str, int line);
/* stuff */
+#define isprint2(ch) ((ch & 0x80) || isprint(ch))
+#define not_alpha(ch) (ch < 'A' || (ch > 'Z' && ch < 'a') || ch > 'z')
+#define not_alnum(ch) (ch < '0' || (ch > '9' && ch < 'A') || (ch > 'Z' && ch < 'a') || ch > 'z')
time_t gettime(int line, time_t dt, char* head);
void setcalfile(char *buf, char *userid);
void stand_title(char *title);
@@ -508,20 +508,17 @@ void setbfile(char *buf, char *boardname, char *fname);
void setbnfile(char *buf, char *boardname, char *fname, int n);
int dashl(char *fname);
char *subject(char *title);
-int not_alnum(char ch);
void setdirpath(char *buf, char *direct, char *fname);
int str_checksum(char *str);
void show_help(char *helptext[]);
int belong(char *filelist, char *key);
char *Cdatedate(time_t *clock);
-int isprint2(char ch);
void sethomeman(char *buf, char *userid);
off_t dashs(char *fname);
void cursor_clear(int row, int column);
void cursor_show(int row, int column);
void printdash(char *mesg);
char *Cdatelite(time_t *clock);
-int not_alpha(char ch);
int valid_ident(char *ident);
int userid_is_BM(char *userid, char *list);
int is_uBM(char *list, char *id);
diff --git a/include/pttstruct.h b/include/pttstruct.h
index 48c35d49..80cef86c 100644
--- a/include/pttstruct.h
+++ b/include/pttstruct.h
@@ -114,7 +114,7 @@ typedef struct userec_t {
#define WATER_ORIG 0x0
#define WATER_NEW 0x1
#define WATER_OFO 0x2
-#define WATERMODE(mode) ((cuser->uflag2 & WATER_MASK) == mode)
+#define WATERMODE(mode) ((cuser.uflag2 & WATER_MASK) == mode)
#define FAVNOHILIGHT 0x10 /* false if hilight favorite */
#define FAVNEW_FLAG 0x20 /* true if add new board into one's fav */
#define FOREIGN 0x100 /* true if a foreign */
diff --git a/mbbsd/admin.c b/mbbsd/admin.c
index dfa825b4..f6d35a6c 100644
--- a/mbbsd/admin.c
+++ b/mbbsd/admin.c
@@ -23,7 +23,7 @@ m_loginmsg()
{
SHM->loginmsg.pid=currutmp->pid; /*站長不多 就不管race condition */
strcpy(SHM->loginmsg.last_call_in, msg);
- strcpy(SHM->loginmsg.userid, cuser->userid);
+ strcpy(SHM->loginmsg.userid, cuser.userid);
}
return 0;
}
@@ -357,7 +357,7 @@ m_mod_board(char *bname)
system(genbuf);
memset(&bh, 0, sizeof(bh));
snprintf(bh.title, sizeof(bh.title),
- "%s 看板 %s 刪除", bname, cuser->userid);
+ "%s 看板 %s 刪除", bname, cuser.userid);
post_msg("Security", bh.title, "請注意刪除的合法性", "[系統安全局]");
substitute_record(fn_board, &bh, sizeof(bh), bid);
reset_board(bid);
@@ -887,7 +887,7 @@ scan_register_form(char *regfile, int automode, int neednum)
int n = 0, unum = 0;
int nSelf = 0, nAuto = 0;
- uid = cuser->userid;
+ uid = cuser.userid;
snprintf(fname, sizeof(fname), "%s.tmp", regfile);
move(2, 0);
if (dashf(fname)) {
@@ -936,7 +936,7 @@ scan_register_form(char *regfile, int automode, int neednum)
uid = autoid;
if ((!automode || !auto_scan(fdata, ans))) {
- uid = cuser->userid;
+ uid = cuser.userid;
move(1, 0);
prints("帳號位置 :%d\n", unum);
@@ -1019,7 +1019,7 @@ scan_register_form(char *regfile, int automode, int neednum)
sethomepath(buf1, muser.userid);
stampfile(buf1, &mhdr);
- strlcpy(mhdr.owner, cuser->userid, sizeof(mhdr.owner));
+ strlcpy(mhdr.owner, cuser.userid, sizeof(mhdr.owner));
strlcpy(mhdr.title, "[註冊失敗]", TTLEN);
mhdr.filemode = 0;
sethomedir(title, muser.userid);
@@ -1106,10 +1106,10 @@ scan_register_form(char *regfile, int automode, int neednum)
* &xfile); strcpy(xfile.owner, "系統"); strcpy(xfile.title, "[報告]
* 審核記錄"); xptr = fopen(xfpath, "w"); fprintf(xptr, "\n時間:%s %s
* 審了 %d 份註冊單\n AutoScan 審了 %d 份註冊單\n 共計 %d 份。", buf,
- * cuser->userid, nSelf, nAuto, nSelf+nAuto); fclose(xptr); setbdir(fname,
+ * cuser.userid, nSelf, nAuto, nSelf+nAuto); fclose(xptr); setbdir(fname,
* xboard); append_record(fname, &xfile, sizeof(xfile));
* outgo_post(&xfile, xboard); touchbtotal(getbnum(xboard));
- * cuser->numposts++;
+ * cuser.numposts++;
*/
/*********************************************/
pressanykey();
diff --git a/mbbsd/announce.c b/mbbsd/announce.c
index dba8c1d7..21696789 100644
--- a/mbbsd/announce.c
+++ b/mbbsd/announce.c
@@ -299,7 +299,7 @@ a_newitem(menu_t * pm, int mode)
break;
}
- strlcpy(item.owner, cuser->userid, sizeof(item.owner));
+ strlcpy(item.owner, cuser.userid, sizeof(item.owner));
a_additem(pm, &item);
}
@@ -364,7 +364,7 @@ a_pasteitem(menu_t * pm, int mode)
igetch();
return;
}
- strlcpy(item.owner, *copyowner ? copyowner : cuser->userid,
+ strlcpy(item.owner, *copyowner ? copyowner : cuser.userid,
sizeof(item.owner));
strlcpy(item.title, copytitle, sizeof(item.title));
a_additem(pm, &item);
@@ -441,7 +441,7 @@ a_pastetagpost(menu_t * pm, int mode)
char dirname[200], buf[200];
if (TagBoard == 0){
- sethomedir(dirname, cuser->userid);
+ sethomedir(dirname, cuser.userid);
}
else{
bh = getbcache(TagBoard);
@@ -455,7 +455,7 @@ a_pastetagpost(menu_t * pm, int mode)
while (tagnum--) {
EnumTagFhdr(&fhdr, dirname, ent++);
if (TagBoard == 0)
- sethomefile(buf, cuser->userid, fhdr.filename);
+ sethomefile(buf, cuser.userid, fhdr.filename);
else
setbfile(buf, bh->brdname, fhdr.filename);
@@ -565,7 +565,7 @@ a_delete(menu_t * pm)
setbpath(buf, "deleted");
stampfile(buf, &backup);
- strlcpy(backup.owner, cuser->userid, sizeof(backup.owner));
+ strlcpy(backup.owner, cuser.userid, sizeof(backup.owner));
strlcpy(backup.title,
pm->header[pm->now - pm->page].title + 2,
sizeof(backup.title));
@@ -590,7 +590,7 @@ a_delete(menu_t * pm)
"rm -rf %s;/bin/mv -f %s %s", buf, fpath, buf);
system(cmd);
- strlcpy(backup.owner, cuser->userid, sizeof(backup.owner));
+ strlcpy(backup.owner, cuser.userid, sizeof(backup.owner));
strlcpy(backup.title,
pm->header[pm->now - pm->page].title + 2,
sizeof(backup.title));
@@ -846,7 +846,7 @@ a_menu(char *maintitle, char *path, int lastlevel)
fhdr.filename,
sizeof(me.header[me.now - me.page].filename));
strlcpy(me.header[me.now - me.page].owner,
- cuser->userid,
+ cuser.userid,
sizeof(me.header[me.now - me.page].owner));
setadir(fpath, path);
substitute_record(fpath, me.header + me.now - me.page,
@@ -1189,7 +1189,7 @@ void BlogMain(int num)
sprintf(fpath, "man/boards/%c/%s", currboard[0], currboard);
stampdir(fpath, &item);
strlcpy(item.title, "◆ Blog", sizeof(item.title));
- strlcpy(item.owner, cuser->userid, sizeof(item.owner));
+ strlcpy(item.owner, cuser.userid, sizeof(item.owner));
sprintf(adir, "man/boards/%c/%s/.DIR", currboard[0], currboard);
append_record(adir, &item, FHSZ);
diff --git a/mbbsd/bbcall.c b/mbbsd/bbcall.c
deleted file mode 100644
index 93fe499d..00000000
--- a/mbbsd/bbcall.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/* $Id: bbcall.c,v 1.9 2003/06/28 08:44:03 kcwu Exp $ */
-#include "bbs.h"
-
-#define SERVER_0941 "www.chips.com.tw"
-#define SERVER_0943 "www.pager.com.tw"
-#define SERVER_0948 "www.fitel.net.tw"
-#define SERVER_0947 "www.hoyard.com.tw"
-#define SERVER_0945 "203.73.181.254"
-
-#define CGI_0948 "/cgi-bin/Webpage.dll"
-#define CGI_0941 "/cgi-bin/paging1.pl"
-#define CGI_0947 "/scripts/fp_page1.dll"
-#define CGI_0945 "/Scripts/fiss/PageForm.exe"
-#define CGI_0943 "/tpn/tpnasp/dowebcall.asp"
-
-#define CGI_RAILWAY "http://www.railway.gov.tw/cgi-bin/timetk.cgi"
-
-#define REFER_0943 "http://www.pager.com.tw/tpn/webcall/webcall.asp"
-#define REFER_0948 "http://www.fitel.net.tw/html/svc03.htm"
-#define REFER_0941 "http://www.chips.com.tw:9100/WEB2P/page_1.htm"
-#define REFER_0947 "http://web1.hoyard.com.tw/freeway/freewayi.html"
-#define REFER_0945 "http://203.73.181.254/call.HTM"
-
-static void
-pager_msg_encode(char *field, char *buf)
-{
- char *cc = field;
- unsigned char *p;
-
- for (p = (unsigned char *)buf; *p; p++) {
- if ((*p >= '0' && *p <= '9') ||
- (*p >= 'A' && *p <= 'Z') ||
- (*p >= 'a' && *p <= 'z') ||
- *p == ' ')
- *cc++ = *p == ' ' ? '+' : (char)*p;
- else {
- sprintf(cc, "%%%02X", (int)*p);
- cc += 3;
- }
- }
- *cc = 0;
-}
-
-static void
-Gettime(int flag, int *Year, int *Month, int *Day, int *Hour,
- int *Minute)
-{
- char ans[5];
-
- do {
- getdata(10, 0, "年[20-]:", ans, 3, LCECHO);
- *Year = atoi(ans);
- } while (*Year < 00 || *Year > 02);
- do {
- getdata(10, 15, "月[1-12]:", ans, 3, LCECHO);
- } while (!IsSNum(ans) || (*Month = atoi(ans)) > 12 || *Month < 1);
- do {
- getdata(10, 30, "日[1-31]:", ans, 3, LCECHO);
- } while (!IsSNum(ans) || (*Day = atoi(ans)) > 31 || *Day < 1);
- do {
- getdata(10, 45, "時[0-23]:", ans, 3, LCECHO);
- } while (!IsSNum(ans) || (*Hour = atoi(ans)) > 23 || *Hour < 0);
- do {
- getdata(10, 60, "分[0-59]:", ans, 3, LCECHO);
- } while (!IsSNum(ans) || (*Minute = atoi(ans)) > 59 || *Minute < 0);
- if (flag == 1)
- *Year -= 11;
-}
-
-#define hpressanykey(a) {move(22, 0); prints(a); pressanykey();}
-
-static int
-Connect(char *s, char *server)
-{
- FILE *fp = fopen(BBSHOME "/log/bbcall.log", "a");
- int sockfd;
- char result[2048];
- struct sockaddr_in serv_addr;
- struct hostent *hp;
-
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if (sockfd < 0)
- return 0;
-
- memset((char *)&serv_addr, 0, sizeof(serv_addr));
- serv_addr.sin_family = AF_INET;
-
- if ((hp = gethostbyname(server)) == NULL)
- return 0;
-
- memcpy(&serv_addr.sin_addr, hp->h_addr, hp->h_length);
-
- if (!strcmp(server, SERVER_0941))
- serv_addr.sin_port = htons(9100);
- else
- serv_addr.sin_port = htons(80);
-
- if (connect(sockfd, (struct sockaddr *) & serv_addr, sizeof serv_addr)) {
- hpressanykey("無法與伺服器取得連結,傳呼失敗");
- return 0;
- } else {
- mprints(20, 0, "\033[1;33m伺服器已經連接上,請稍候"
- ".....................\033[m");
- refresh();
- }
-
- write(sockfd, s, strlen(s));
- shutdown(sockfd, 1);
-
- while (read(sockfd, result, sizeof(result)) > 0) {
- fprintf(fp, "%s\n", result);
- fflush(fp);
- if (strstr(result, "正確") ||
- strstr(result, "等待") ||
- strstr(result, "再度") ||
- strstr(result, "完 成 回 應") ||
- strstr(result, "預約中") ||
- strstr(result, "傳送中")) {
- close(sockfd);
- hpressanykey("順利送出傳呼");
- return 0;
- }
- memset(result, 0, sizeof(result));
- }
- fclose(fp);
- close(sockfd);
- hpressanykey("無法順利送出傳呼");
- return 0;
-}
-
-#define PARA \
-"Connection: Keep-Alive\r\n"\
-"User-Agent: Lynx/2.6 libwww-FM/2.14\r\n"\
-"Content-type: application/x-www-form-urlencoded\r\n"\
-"Accept: text/html, text/plain, application/x-wais-source, "\
-"application/html, */*;q=0.001\r\n"\
-"Accept-Encoding: gzip\r\n"\
-"Accept-Language: en\r\n"\
-"Accept-Charset: iso-8859-1,*,utf-8\r\n"
-
-static void halpha0943(char* CoId) {
- char tmpbuf[64],ans[2];
- char ID[8];
- char Msg[64], atrn[512], sendform[1024];
- int Year = 99, Month = 1, Day = 15, Hour = 13, Minute = 8;
-
- snprintf(tmpbuf, sizeof(tmpbuf),
- "\033[1;37m請輸入您要傳呼的號碼\033[m : %s-", CoId);
- if(!getdata(7,0, tmpbuf, ID, sizeof(ID), LCECHO) ||
- !getdata(8,0, "\033[1;37m請輸入傳呼訊息\033[m:", tmpbuf, 63, LCECHO)) {
- hpressanykey("放棄傳呼");
- return;
- }
- pager_msg_encode(Msg,tmpbuf);
- getdata(9, 0, "\033[1;37m如果你要馬上送請按 '1' "
- "如果要定時送請按 '2': \033[m", ans, sizeof(ans), LCECHO);
-
- if(ans[0] != '1')
- Gettime(0, &Year, &Month, &Day, &Hour, &Minute);
-
- snprintf(atrn, sizeof(atrn),
- "CoId=%s&ID=%s&Year=19%02d&Month=%02d&Day=%02d"
- "&Hour=%02d&Minute=%02d&Msg=%s",
- CoId, ID,Year,Month,Day,Hour,Minute,Msg);
- snprintf(sendform, sizeof(sendform), "POST %s HTTP/1.0\nReferer: "
- "%s\n%sContent-length:%d\n\n%s",
- CGI_0943, REFER_0943, PARA, strlen(atrn), atrn);
- Connect(sendform, SERVER_0943);
- return ;
-}
-
-static void hcall0941() {
- char ans[2];
- char PAGER_NO[8], TRAN_MSG[18], TIME[8];
- char trn[512], sendform[512];
- int year = 98, month = 12, day = 4, hour = 13, min = 8;
-
- if(!getdata(7, 0, "\033[1;37 請您輸入您要傳呼的號碼 : 0941- \033[m",
- PAGER_NO, sizeof(PAGER_NO), LCECHO) ||
- !getdata(8, 0, "\033[1;37m請輸入傳呼訊息\033[m:", trn, 17, LCECHO)) {
- hpressanykey("放棄傳呼");
- return;
- }
- pager_msg_encode(TRAN_MSG,trn);
- getdata(9,0, "\033[1;37m如果你要馬上送請按 '1' "
- "如果要定時送請按 '2': \033[m", ans, sizeof(ans), LCECHO);
- if(ans[0] != '1') {
- strlcpy(TIME, "DELAY", sizeof(TIME));
- Gettime(0, &year, &month, &day, &hour, &min);
- } else
- strlcpy(TIME, "NOW", sizeof(TIME));
- snprintf(trn, sizeof(trn),
- "PAGER_NO=%s&TRAN_MSG=%s&MSG_TYPE=NUMERIC&%s=1"
- "&year=19%02d&month=%02d&day=%02d&hour=%02d&min=%02d",
- PAGER_NO, TRAN_MSG, TIME,year,month,day,hour,min);
-
- snprintf(sendform, sizeof(sendform),
- "POST %s HTTP/1.0\nReferer: %s\n%s"
- "Content-length:%d\n\n%s",
- CGI_0941, REFER_0941, PARA, strlen(trn), trn);
-
- Connect(sendform, SERVER_0941);
- return ;
-}
-
-static void hcall0948() {
- int year = 87, month = 12, day = 19, hour = 12, min = 0, ya = 0;
- char svc_no[8], message[64], trn[256], sendform[512], ans[3];
-
- move(7,0);
- clrtoeol();
-
- if(!getdata(7, 0, "\033[1;37m請輸入您要傳呼的號碼\033[m:0948-",
- svc_no, sizeof(svc_no), LCECHO) ||
- !getdata(8, 0, "\033[1;37m請輸入傳呼訊息\033[m:", trn, 61, LCECHO)) {
- hpressanykey("放棄傳呼");
- return;
- }
- pager_msg_encode(message, trn);
- getdata(9, 0, "\033[1;37m如果你要馬上送請按 '1' "
- "如果要定時送請按 '2'\033[m: ", ans, sizeof(ans), LCECHO);
- if(ans[0] != '1') {
- Gettime(1, &year, &month, &day, &hour, &min);
- ya = 1;
- }
-
- snprintf(trn, sizeof(trn),
- "MfcISAPICommand=SinglePage&svc_no=%s&reminder=%d"
- "&year=%02d&month=%02d&day=%02d&hour=%02d&min=%02d&message=%s",
- svc_no, ya, year, month, day, hour, min, message);
-
- snprintf(sendform, sizeof(sendform),
- "GET %s?%s Http/1.0\n\n", CGI_0948, trn);
-
- Connect(sendform, SERVER_0948);
- return;
-}
-
-int main_bbcall() {
- char ch[2];
-
- clear();
- move(0, 30);
- prints("\033[1;37;45m 逼逼摳機 \033[m");
- move(3, 0);
- prints("\033[1;31m ┌────────────────────"
- "─────────┐\033[m\n");
- prints("\033[1;33m (1)0941 (2)0943 (3)0946 "
- " (4)0948 \033[m\n");
- prints("\033[1;31m └────────────────────"
- "─────────┘\033[m\n");
- getdata(7, 8, "\033[1;37m你的選擇? [1-4]\033[m", ch, sizeof(ch), LCECHO);
-
- switch(ch[0]) {
- case '1':
- hcall0941();
- break;
- case '2':
- halpha0943("0943");
- break;
- case '3':
- halpha0943("0946");
- break;
- case '4':
- hcall0948();
- break;
- }
- return 0;
-}
-
-
-
-
-
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c
index 4343cccb..4f197b3e 100644
--- a/mbbsd/bbs.c
+++ b/mbbsd/bbs.c
@@ -15,13 +15,13 @@ mail_by_link(char *owner, char *title, char *path)
char genbuf[200];
fileheader_t mymail;
- sethomepath(genbuf, cuser->userid);
+ sethomepath(genbuf, cuser.userid);
stampfile(genbuf, &mymail);
strlcpy(mymail.owner, owner, sizeof(mymail.owner));
snprintf(mymail.title, sizeof(mymail.title), title);
unlink(genbuf);
Link(path, genbuf);
- sethomedir(genbuf, cuser->userid);
+ sethomedir(genbuf, cuser.userid);
append_record(genbuf, &mymail, sizeof(mymail));
}
@@ -34,12 +34,12 @@ anticrosspost()
snprintf(buf, sizeof(buf),
"\033[1;33;46m%s \033[37;45mcross post 文章 \033[37m %s\033[m\n",
- cuser->userid, ctime(&now));
+ cuser.userid, ctime(&now));
log_file("etc/illegal_money", buf, 1);
- post_violatelaw(cuser->userid, "Ptt系統警察", "Cross-post", "罰單處份");
- cuser->userlevel |= PERM_VIOLATELAW;
- cuser->vl_count++;
+ post_violatelaw(cuser.userid, "Ptt系統警察", "Cross-post", "罰單處份");
+ cuser.userlevel |= PERM_VIOLATELAW;
+ cuser.vl_count++;
mail_by_link("Ptt警察部隊", "Cross-Post罰單",
BBSHOME "/etc/crosspost.txt");
u_exit("Cross Post");
@@ -56,16 +56,16 @@ save_violatelaw()
clear();
stand_title("繳罰單中心");
- if (!(cuser->userlevel & PERM_VIOLATELAW)) {
+ if (!(cuser.userlevel & PERM_VIOLATELAW)) {
mprints(22, 0, "\033[1;31m你無聊啊? 你又沒有被開罰單~~\033[m");
pressanykey();
return 0;
}
reload_money();
- if (cuser->money < (int)cuser->vl_count * 1000) {
+ if (cuser.money < (int)cuser.vl_count * 1000) {
snprintf(buf, sizeof(buf), "\033[1;31m這是你第 %d 次違反本站法規"
"必須繳出 %d $Ptt ,你只有 %d 元, 錢不夠啦!!\033[m",
- (int)cuser->vl_count, (int)cuser->vl_count * 1000, cuser->money);
+ (int)cuser.vl_count, (int)cuser.vl_count * 1000, cuser.money);
mprints(22, 0, buf);
pressanykey();
return 0;
@@ -83,7 +83,7 @@ save_violatelaw()
return 0;
}
snprintf(buf, sizeof(buf), "這是你第 %d 次違法 必須繳出 %d $Ptt",
- cuser->vl_count, cuser->vl_count * 1000);
+ cuser.vl_count, cuser.vl_count * 1000);
mprints(11, 0, buf);
if (!getdata(10, 0, "要付錢[y/n]:", ok, sizeof(ok), LCECHO) ||
@@ -93,9 +93,9 @@ save_violatelaw()
pressanykey();
return 0;
}
- demoney(-1000 * cuser->vl_count);
- cuser->userlevel &= (~PERM_VIOLATELAW);
- passwd_update(usernum, cuser);
+ demoney(-1000 * cuser.vl_count);
+ cuser.userlevel &= (~PERM_VIOLATELAW);
+ passwd_update(usernum, &cuser);
return 0;
}
@@ -357,7 +357,7 @@ outgo_post(fileheader_t * fh, char *board)
if ((foo = fopen("innd/out.bntp", "a"))) {
fprintf(foo, "%s\t%s\t%s\t%s\t%s\n", board,
- fh->filename, cuser->userid, cuser->username, fh->title);
+ fh->filename, cuser.userid, cuser.username, fh->title);
fclose(foo);
}
}
@@ -395,7 +395,7 @@ cancelpost(fileheader_t * fh, int by_BM, char *newpath)
if ((fout = fopen("innd/cancel.bntp", "a"))) {
fprintf(fout, "%s\t%s\t%s\t%s\t%s\n", currboard, fh->filename,
- cuser->userid, nick, fh->title);
+ cuser.userid, nick, fh->title);
fclose(fout);
}
fclose(fin);
@@ -438,7 +438,7 @@ do_unanonymous_post(char *fpath)
stampfile(genbuf, &mhdr);
unlink(genbuf);
Link(fpath, genbuf);
- strlcpy(mhdr.owner, cuser->userid, sizeof(mhdr.owner));
+ strlcpy(mhdr.owner, cuser.userid, sizeof(mhdr.owner));
strlcpy(mhdr.title, save_title, sizeof(mhdr.title));
mhdr.filemode = 0;
setbdir(title, "UnAnonymous");
@@ -547,7 +547,7 @@ do_general(int isbid)
if (!CheckPostPerm()
#ifdef FOREIGN_REG
// 不是外籍使用者在 PttForeign 板
- && !((cuser->uflag2 & FOREIGN) && strcmp(bp->brdname, "PttForeign") == 0)
+ && !((cuser.uflag2 & FOREIGN) && strcmp(bp->brdname, "PttForeign") == 0)
#endif
) {
vmsg("對不起,您目前無法在此發表文章!");
@@ -670,9 +670,9 @@ do_general(int isbid)
owner = real_name;
ifuseanony = 1;
} else
- owner = cuser->userid;
+ owner = cuser.userid;
#else
- owner = cuser->userid;
+ owner = cuser.userid;
#endif
/* 錢 */
aborted = (aborted > MAX_POST_MONEY * 2) ? MAX_POST_MONEY : aborted / 2;
@@ -715,7 +715,7 @@ do_general(int isbid)
aborted = (aborted > MAX_POST_MONEY) ? MAX_POST_MONEY : aborted;
#endif
if (strcmp(currboard, "Test") && !ifuseanony) {
- prints("這是您的第 %d 篇文章。",++cuser->numposts);
+ prints("這是您的第 %d 篇文章。",++cuser.numposts);
if(postfile.filemode&FILE_BID)
prints("招標文章沒有稿酬。");
else if(currbrdattr&BRD_BAD)
@@ -748,7 +748,7 @@ do_general(int isbid)
unlink(genbuf);
Link(fpath, genbuf);
- strlcpy(postfile.owner, cuser->userid, sizeof(postfile.owner));
+ strlcpy(postfile.owner, cuser.userid, sizeof(postfile.owner));
strlcpy(postfile.title, save_title, sizeof(postfile.title));
sethomedir(genbuf, quote_user);
if (append_record(genbuf, &postfile, sizeof(postfile)) == -1)
@@ -955,7 +955,7 @@ edit_post(int ent, fileheader_t * fhdr, char *direct)
return DONOTHING;
if( !HAS_PERM(PERM_SYSOP) &&
- (!CheckPostPerm() || strcmp(fhdr->owner, cuser->userid) != 0) )
+ (!CheckPostPerm() || strcmp(fhdr->owner, cuser.userid) != 0) )
return DONOTHING;
if( currmode & MODE_SELECT )
@@ -1060,7 +1060,7 @@ cross_post(int ent, fileheader_t * fhdr, char *direct)
}
ent = 1;
- if (HAS_PERM(PERM_SYSOP) || !strcmp(fhdr->owner, cuser->userid)) {
+ if (HAS_PERM(PERM_SYSOP) || !strcmp(fhdr->owner, cuser.userid)) {
getdata(2, 0, "(1)原文轉載 (2)舊轉錄格式?[1] ",
genbuf, 3, DOECHO);
if (genbuf[0] != '2') {
@@ -1092,7 +1092,7 @@ cross_post(int ent, fileheader_t * fhdr, char *direct)
if (author)
strlcpy(xfile.owner, fhdr->owner, sizeof(xfile.owner));
else
- strlcpy(xfile.owner, cuser->userid, sizeof(xfile.owner));
+ strlcpy(xfile.owner, cuser.userid, sizeof(xfile.owner));
strlcpy(xfile.title, xtitle, sizeof(xfile.title));
if (genbuf[0] == 'l') {
xfile.filemode = FILE_LOCAL;
@@ -1120,7 +1120,7 @@ cross_post(int ent, fileheader_t * fhdr, char *direct)
if (!xfile.filemode && !(bp->brdattr & BRD_NOTRAN))
outgo_post(&xfile, xboard);
setbtotal(getbnum(xboard));
- cuser->numposts++;
+ cuser.numposts++;
UPDATE_USEREC;
outs("文章轉錄完成");
pressanykey();
@@ -1386,7 +1386,7 @@ hold_gamble(int ent, fileheader_t * fhdr, char *direct)
move(8 + i, 0);
prints("賭盤設定完成");
snprintf(genbuf, sizeof(genbuf), "[公告] %s 板 開始賭博!", currboard);
- post_msg(currboard, genbuf, msg, cuser->userid);
+ post_msg(currboard, genbuf, msg, cuser.userid);
post_msg("Record", genbuf + 7, msg, "[馬路探子]");
/* Tim 控制CS, 以免正在玩的user把資料已經寫進來 */
rename(fn_ticket_end, fn_ticket);
@@ -1418,7 +1418,7 @@ edit_title(int ent, fileheader_t * fhdr, char *direct)
fileheader_t tmpfhdr = *fhdr;
int dirty = 0;
- if (currmode & MODE_BOARD || !strcmp(cuser->userid, fhdr->owner)) {
+ if (currmode & MODE_BOARD || !strcmp(cuser.userid, fhdr->owner)) {
if (getdata(b_lines - 1, 0, "標題:", genbuf, TTLEN, DOECHO)) {
strlcpy(tmpfhdr.title, genbuf, sizeof(tmpfhdr.title));
dirty++;
@@ -1434,7 +1434,7 @@ edit_title(int ent, fileheader_t * fhdr, char *direct)
dirty++;
}
}
- if (currmode & MODE_BOARD || !strcmp(cuser->userid, fhdr->owner)) {
+ if (currmode & MODE_BOARD || !strcmp(cuser.userid, fhdr->owner)) {
getdata(b_lines - 1, 0, "確定(Y/N)?[n] ", genbuf, 3, DOECHO);
if ((genbuf[0] == 'y' || genbuf[0] == 'Y') && dirty) {
*fhdr = tmpfhdr;
@@ -1574,13 +1574,13 @@ do_bid(int ent, fileheader_t * fhdr, boardheader_t *bp, char *direct, struct t
prints("起標價: %d", bidinfo.high);
next=bidinfo.high;
}
- if(!strcmp(cuser->userid,bidinfo.userid))
+ if(!strcmp(cuser.userid,bidinfo.userid))
{
prints("你是最高得標者!");
pressanykey();
return FULLUPDATE;
}
- if (strcmp(cuser->userid, fhdr->owner) == 0){
+ if (strcmp(cuser.userid, fhdr->owner) == 0){
vmsg("警告! 本人不能出價!");
return FULLUPDATE;
}
@@ -1603,7 +1603,7 @@ do_bid(int ent, fileheader_t * fhdr, boardheader_t *bp, char *direct, struct t
next=bidinfo.high + bidinfo.increment;
- if(mymax< next || (bidinfo.payby==0 && cuser->money<mymax ))
+ if(mymax< next || (bidinfo.payby==0 && cuser.money<mymax ))
{
vmsg("取消下標或標金不足搶標");
return FULLUPDATE;
@@ -1611,8 +1611,8 @@ do_bid(int ent, fileheader_t * fhdr, boardheader_t *bp, char *direct, struct t
snprintf(genbuf, sizeof(genbuf),
"\033[1;31m→ \033[33m%s\033[m\033[33m:%s\033[m%*s %s%-15d標%15s %02d/%02d\n",
- cuser->userid,say,
- 31 - strlen(cuser->userid) - strlen(say), " ",
+ cuser.userid,say,
+ 31 - strlen(cuser.userid) - strlen(say), " ",
money,
next, fromhost,
ptime->tm_mon + 1, ptime->tm_mday);
@@ -1621,19 +1621,19 @@ do_bid(int ent, fileheader_t * fhdr, boardheader_t *bp, char *direct, struct t
{
bidinfo.usermax=mymax;
bidinfo.high=next;
- strcpy(bidinfo.userid,cuser->userid);
+ strcpy(bidinfo.userid,cuser.userid);
}
else if(mymax>bidinfo.usermax)
{
bidinfo.high=bidinfo.usermax+bidinfo.increment;
if(bidinfo.high>mymax) bidinfo.high=mymax;
bidinfo.usermax=mymax;
- strcpy(bidinfo.userid,cuser->userid);
+ strcpy(bidinfo.userid,cuser.userid);
snprintf(genbuf, sizeof(genbuf),
"\033[1;31m→ \033[33m自動競標%s勝出\033[m\033[33m\033[m%*s%s%-15d標 %02d/%02d\n",
- cuser->userid,
- 20 - strlen(cuser->userid) , " ",money,
+ cuser.userid,
+ 20 - strlen(cuser.userid) , " ",money,
bidinfo.high,
ptime->tm_mon + 1, ptime->tm_mday);
do_add_recommend(direct, fhdr, ent, genbuf);
@@ -1686,12 +1686,12 @@ recommend(int ent, fileheader_t * fhdr, char *direct)
}
setdirpath(path, direct, fhdr->filename);
- if (fhdr->recommend == 0 && strcmp(cuser->userid, fhdr->owner) == 0){
+ if (fhdr->recommend == 0 && strcmp(cuser.userid, fhdr->owner) == 0){
vmsg("警告! 本人不能推薦第一次!");
return FULLUPDATE;
}
#ifndef DEBUG
- if (!(currmode & MODE_BOARD) && getuser(cuser->userid) &&
+ if (!(currmode & MODE_BOARD) && getuser(cuser.userid) &&
now - lastrecommend < 40) {
move(b_lines - 1, 0);
prints("離上次推薦時間太近囉, 請多花點時間仔細閱\讀文章!");
@@ -1710,8 +1710,8 @@ recommend(int ent, fileheader_t * fhdr, char *direct)
snprintf(buf, sizeof(buf),
"\033[1;31m→ \033[33m%s\033[m\033[33m:%s\033[m%*s推%15s %02d/%02d\n",
- cuser->userid, path,
- 51 - strlen(cuser->userid) - strlen(path), " ", fromhost,
+ cuser.userid, path,
+ 51 - strlen(cuser.userid) - strlen(path), " ", fromhost,
ptime->tm_mon + 1, ptime->tm_mday);
do_add_recommend(direct, fhdr, ent, buf);
#ifdef ASSESS
@@ -1802,7 +1802,7 @@ del_range(int ent, fileheader_t *fhdr, char *direct)
fileheader_t rsfh;
int i = inum1, now;
if (currstat == RMAIL)
- sethomedir(genbuf, cuser->userid);
+ sethomedir(genbuf, cuser.userid);
else
setbdir(genbuf, currboard);
if ((fd = (open(direct, O_RDONLY, 0))) != -1) {
@@ -1856,10 +1856,10 @@ del_post(int ent, fileheader_t * fhdr, char *direct)
(fhdr->owner[0] == '-'))
return DONOTHING;
- not_owned = strcmp(fhdr->owner, cuser->userid);
+ not_owned = strcmp(fhdr->owner, cuser.userid);
if ((!(currmode & MODE_BOARD) && not_owned) ||
((bp->brdattr & BRD_VOTEBOARD) && !HAS_PERM(PERM_SYSOP)) ||
- !strcmp(cuser->userid, STR_GUEST))
+ !strcmp(cuser.userid, STR_GUEST))
return DONOTHING;
getdata(1, 0, msg_del_ny, genbuf, 3, LCECHO);
@@ -1923,7 +1923,7 @@ del_post(int ent, fileheader_t * fhdr, char *direct)
xuser.userlevel |= PERM_VIOLATELAW;
}
sprintf(genbuf,"劣文退回(%s):%-40.40s", reason, fhdr->title);
- mail_id(xuser.userid, genbuf, newpath, cuser->userid);
+ mail_id(xuser.userid, genbuf, newpath, cuser.userid);
}
}
#undef SIZE
@@ -1936,14 +1936,14 @@ del_post(int ent, fileheader_t * fhdr, char *direct)
deumoney(num, -fhdr->money);
}
if (!not_owned && strcmp(currboard, "Test")) {
- if (cuser->numposts)
- cuser->numposts--;
+ if (cuser.numposts)
+ cuser.numposts--;
if (!(currmode & MODE_DIGEST && currmode & MODE_BOARD)){
move(b_lines - 1, 0);
clrtoeol();
demoney(-fhdr->money);
prints("%s,您的文章減為 %d 篇,支付清潔費 %d 銀", msg_del_ok,
- cuser->numposts, fhdr->money);
+ cuser.numposts, fhdr->money);
refresh();
pressanykey();
}
@@ -2030,7 +2030,7 @@ tar_addqueue(int ent, fileheader_t * fhdr, char *direct)
return FULLUPDATE;
}
fp = fopen(qfn, "w");
- fprintf(fp, "%s\n", cuser->userid);
+ fprintf(fp, "%s\n", cuser.userid);
fprintf(fp, "%s\n", email);
fprintf(fp, "%d,%d\n", bakboard, bakman);
fclose(fp);
@@ -2272,11 +2272,11 @@ board_select()
char genbuf[100];
currmode &= ~MODE_SELECT;
- snprintf(fpath, sizeof(fpath), "SR.%s", cuser->userid);
+ snprintf(fpath, sizeof(fpath), "SR.%s", cuser.userid);
setbfile(genbuf, currboard, fpath);
unlink(genbuf);
if (currstat == RMAIL)
- sethomedir(currdirect, cuser->userid);
+ sethomedir(currdirect, cuser.userid);
else
setbdir(currdirect, currboard);
return NEWDIRECT;
@@ -2718,7 +2718,7 @@ log_board(char *mode, time_t usetime)
if (usetime > 30) {
snprintf(buf, sizeof(buf), "USE %-20.20s Stay: %5ld (%s) %s\n",
- mode, usetime, cuser->userid, ctime(&now));
+ mode, usetime, cuser.userid, ctime(&now));
log_file(FN_USEBOARD, buf, 1);
}
}
diff --git a/mbbsd/board.c b/mbbsd/board.c
index 14a01ced..05fe5b72 100644
--- a/mbbsd/board.c
+++ b/mbbsd/board.c
@@ -204,7 +204,7 @@ static void
load_boards(char *key)
{
boardheader_t *bptr = NULL;
- int type = cuser->uflag & BRDSORT_FLAG ? 1 : 0;
+ int type = cuser.uflag & BRDSORT_FLAG ? 1 : 0;
int i, n;
int state;
char byMALLOC = 0, needREALLOC = 0;
@@ -498,12 +498,12 @@ show_brdlist(int head, int clsflag, int newflag)
prints("%5d %c %sMyFavFolder\033[m 目錄 □%-34s\033[m",
head,
ptr->myattr & NBRD_TAG ? 'D' : ' ',
- !(cuser->uflag2 & FAVNOHILIGHT) ? "\033[1;36m" : "",
+ !(cuser.uflag2 & FAVNOHILIGHT) ? "\033[1;36m" : "",
title);
else
prints("%6d %sMyFavFolder\033[m 目錄 □%-34s\033[m",
get_data_number(get_fav_folder(getfolder(ptr->bid))),
- !(cuser->uflag2 & FAVNOHILIGHT) ? "\033[1;36m" : "",
+ !(cuser.uflag2 & FAVNOHILIGHT) ? "\033[1;36m" : "",
title);
continue;
}
@@ -531,7 +531,7 @@ show_brdlist(int head, int clsflag, int newflag)
else {
prints("%s%-13s\033[m%s%5.5s\033[0;37m%2.2s\033[m"
"%-34.34s",
- ((!(cuser->uflag2 & FAVNOHILIGHT) &&
+ ((!(cuser.uflag2 & FAVNOHILIGHT) &&
getboard(ptr->bid) != NULL))? "\033[1;36m" : "",
B_BH(ptr)->brdname,
color[(unsigned int)
@@ -599,7 +599,7 @@ set_menu_BM(char *BM)
{
if (HAS_PERM(PERM_ALLBOARD) || is_BM(BM)) {
currmode |= MODE_GROUPOP;
- cuser->userlevel |= PERM_SYSSUBOP;
+ cuser.userlevel |= PERM_SYSSUBOP;
}
}
@@ -622,7 +622,7 @@ choose_board(int newflag)
fav_load();
++choose_board_depth;
brdnum = 0;
- if (!cuser->userlevel) /* guest yank all boards */
+ if (!cuser.userlevel) /* guest yank all boards */
yank_flag = 2;
do {
@@ -771,7 +771,7 @@ choose_board(int newflag)
case 'F':
case 'f':
if (class_bid>0 && HAS_PERM(PERM_SYSOP)) {
- bcache[class_bid - 1].firstchild[cuser->uflag & BRDSORT_FLAG ? 1 : 0]
+ bcache[class_bid - 1].firstchild[cuser.uflag & BRDSORT_FLAG ? 1 : 0]
= NULL;
brdnum = -1;
}
@@ -797,7 +797,7 @@ choose_board(int newflag)
fav_sort_by_class();
}
else
- cuser->uflag ^= BRDSORT_FLAG;
+ cuser.uflag ^= BRDSORT_FLAG;
brdnum = -1;
break;
case 'y':
@@ -990,12 +990,12 @@ choose_board(int newflag)
case 'Z':
if (HAS_PERM(PERM_LOGINOK)) {
char genbuf[256];
- sprintf(genbuf, "確定要 %s訂閱\ 新看板? [N/y] ", cuser->uflag2 & FAVNEW_FLAG ? "取消" : "");
+ sprintf(genbuf, "確定要 %s訂閱\ 新看板? [N/y] ", cuser.uflag2 & FAVNEW_FLAG ? "取消" : "");
if (getans(genbuf) != 'y')
break;
- cuser->uflag2 ^= FAVNEW_FLAG;
- if (cuser->uflag2 & FAVNEW_FLAG) {
+ cuser.uflag2 ^= FAVNEW_FLAG;
+ if (cuser.uflag2 & FAVNEW_FLAG) {
subscribe_newfav();
vmsg("切換為訂閱\新看板模式");
}
diff --git a/mbbsd/brc.c b/mbbsd/brc.c
index 71ae8ee1..ede94386 100644
--- a/mbbsd/brc.c
+++ b/mbbsd/brc.c
@@ -209,7 +209,7 @@ brc_insert_record(brcbid_t bid, brcnbrd_t num, time_t* list)
void
brc_update(){
- if (brc_changed && cuser->userlevel && brc_num > 0)
+ if (brc_changed && cuser.userlevel && brc_num > 0)
brc_insert_record(currbid, brc_num, brc_list);
}
@@ -352,7 +352,7 @@ brc_addlist(const char *fname)
int n, i;
time_t ftime;
- if (!cuser->userlevel)
+ if (!cuser.userlevel)
return;
ftime = atoi(&fname[2]);
diff --git a/mbbsd/cache.c b/mbbsd/cache.c
index 2517ee1e..15398ece 100644
--- a/mbbsd/cache.c
+++ b/mbbsd/cache.c
@@ -315,12 +315,6 @@ apply_ulist(int (*fptr) (userinfo_t *))
}
userinfo_t *
-search_ulist(int uid)
-{
- return search_ulistn(uid, 1);
-}
-
-userinfo_t *
search_ulist_pid(int pid)
{
register int i = 0, j, start = 0, end = SHM->UTMPnumber - 1;
@@ -468,18 +462,6 @@ deumoney(int uid, int money)
return setumoney(uid, SHM->money[uid - 1] + money);
}
-int
-demoney(int money)
-{
- return deumoney(usernum, money);
-}
-
-int
-moneyof(int uid)
-{ /* ptt 改進金錢處理效率 */
- return SHM->money[uid - 1];
-}
-
/*
* section - utmp
*/
@@ -494,7 +476,7 @@ setutmpmode(unsigned int 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));
+ cuser.userid, modestring(currutmp, 0), mode, Cdate(&COMMON_TIME));
log_user(msg);
}
}
@@ -634,23 +616,6 @@ apply_boards(int (*func) (boardheader_t *))
}
#endif
-boardheader_t *
-getbcache(int bid)
-{ /* Ptt改寫 */
- return bcache + bid - 1;
-}
-
-int
-getbtotal(int bid)
-{
- return SHM->total[bid - 1];
-}
-int
-getbottomtotal(int bid)
-{
- return SHM->n_bottom[bid-1];
-}
-
void
setbottomtotal(int bid)
{
@@ -731,7 +696,7 @@ haspostperm(char *bname)
char buf[200];
setbfile(buf, bname, fn_water);
- if (belong(buf, cuser->userid))
+ if (belong(buf, cuser.userid))
return 0;
if (!strcasecmp(bname, DEFAULT_BOARD))
@@ -787,7 +752,7 @@ int is_BM_cache(int bid) /* bid starts from 1 */
currutmp->uid == SHM->BMcache[bid][1] ||
currutmp->uid == SHM->BMcache[bid][2] ||
currutmp->uid == SHM->BMcache[bid][3] ){
- cuser->userlevel |= PERM_BM;
+ cuser.userlevel |= PERM_BM;
return 1;
}
return 0;
diff --git a/mbbsd/cal.c b/mbbsd/cal.c
index bfc06eb0..dca13c4d 100644
--- a/mbbsd/cal.c
+++ b/mbbsd/cal.c
@@ -68,7 +68,7 @@ vice(int money, char *item)
log_file(buf, vice, 1);
snprintf(buf, sizeof(buf),
"%s 花了%d$ 編號[%08d]", item, money, viceserial);
- mail_id(cuser->userid, buf, "etc/vice.txt", "Ptt經濟部");
+ mail_id(cuser.userid, buf, "etc/vice.txt", "Ptt經濟部");
return 0;
}
@@ -94,7 +94,7 @@ osong(char *defaultid)
lockreturn0(OSONG, LOCK_MULTI);
/* Jaky 一人一天點一首 */
- if (!strcmp(buf, Cdatedate(&cuser->lastsong)) && !HAS_PERM(PERM_SYSOP)) {
+ if (!strcmp(buf, Cdatedate(&cuser.lastsong)) && !HAS_PERM(PERM_SYSOP)) {
move(22, 0);
outs("你今天已經點過囉,明天再點吧....");
refresh();
@@ -103,7 +103,7 @@ osong(char *defaultid)
unlockutmpmode();
return 0;
}
- if (cuser->money < 200) {
+ if (cuser.money < 200) {
move(22, 0);
outs("點歌要200銀唷!....");
refresh();
@@ -113,7 +113,7 @@ osong(char *defaultid)
}
move(12, 0);
clrtobot();
- prints("親愛的 %s 歡迎來到歐桑自動點歌系統\n", cuser->userid);
+ prints("親愛的 %s 歡迎來到歐桑自動點歌系統\n", cuser.userid);
trans_buffer[0] = 0;
if (!defaultid) {
getdata(13, 0, "要點給誰呢:[可直接按 Enter 先選歌]",
@@ -137,7 +137,7 @@ osong(char *defaultid)
getdata_str(14, 0, "想要要對他(她)說..:", say,
sizeof(say), DOECHO, "我愛妳..");
snprintf(save_title, sizeof(save_title),
- "%s:%s", (ano[0] == 'y') ? "匿名者" : cuser->userid, say);
+ "%s:%s", (ano[0] == 'y') ? "匿名者" : cuser.userid, say);
getdata_str(16, 0, "寄到誰的信箱(可用E-mail)?",
receiver, sizeof(receiver), LCECHO, destid);
@@ -165,7 +165,7 @@ osong(char *defaultid)
strlcpy(mail.owner, "點歌機", sizeof(mail.owner));
snprintf(mail.title, sizeof(mail.title),
"◇ %s 點給 %s ",
- (ano[0] == 'y') ? "匿名者" : cuser->userid, destid);
+ (ano[0] == 'y') ? "匿名者" : cuser.userid, destid);
while (fgets(buf, sizeof(buf), fp)) {
char *po;
@@ -183,7 +183,7 @@ osong(char *defaultid)
po[0] = 0;
snprintf(genbuf, sizeof(genbuf),
"%s%s%s", buf,
- (ano[0] == 'y') ? "匿名者" : cuser->userid, po + 7);
+ (ano[0] == 'y') ? "匿名者" : cuser.userid, po + 7);
strlcpy(buf, genbuf, sizeof(buf));
}
while ((po = strstr(buf, "<~Des~>"))) {
@@ -203,7 +203,7 @@ osong(char *defaultid)
if (append_record(OSONGPATH "/.DIR", &mail, sizeof(mail)) != -1) {
- cuser->lastsong = now;
+ cuser.lastsong = now;
/* Jaky 超過 500 首歌就開始砍 */
nsongs = get_num_records(OSONGPATH "/.DIR", sizeof(mail));
if (nsongs > 500) {
@@ -213,7 +213,7 @@ osong(char *defaultid)
vice(200, "點歌");
}
snprintf(save_title, sizeof(save_title),
- "%s:%s", (ano[0] == 'y') ? "匿名者" : cuser->userid, say);
+ "%s:%s", (ano[0] == 'y') ? "匿名者" : cuser.userid, say);
hold_mail(filename, destid);
if (receiver[0]) {
@@ -251,9 +251,9 @@ static int
inmailbox(int m)
{
passwd_query(usernum, &xuser);
- cuser->exmailbox = xuser.exmailbox + m;
- passwd_update(usernum, cuser);
- return cuser->exmailbox;
+ cuser.exmailbox = xuser.exmailbox + m;
+ passwd_update(usernum, &cuser);
+ return cuser.exmailbox;
}
@@ -268,7 +268,7 @@ p_cloak()
buf, sizeof(buf), LCECHO);
if (buf[0] != 'y')
return 0;
- if (cuser->money >= 19) {
+ if (cuser.money >= 19) {
vice(19, "付費隱身");
currutmp->invisible %= 2;
outs((currutmp->invisible ^= 1) ? MSG_CLOAKED : MSG_UNCLOAK);
@@ -288,7 +288,7 @@ p_from()
if (ans[0] != 'y')
return 0;
reload_money();
- if (cuser->money < 49)
+ if (cuser.money < 49)
return 0;
if (getdata_buf(b_lines - 1, 0, "請輸入新故鄉:",
currutmp->from, sizeof(currutmp->from), DOECHO)) {
@@ -304,13 +304,13 @@ p_exmail()
char ans[4], buf[200];
int n;
- if (cuser->exmailbox >= MAX_EXKEEPMAIL) {
+ if (cuser.exmailbox >= MAX_EXKEEPMAIL) {
prints("容量最多增加 %d 封,不能再買了。", MAX_EXKEEPMAIL);
refresh();
return 0;
}
snprintf(buf, sizeof(buf),
- "您曾增購 %d 封容量,還要再買多少?", cuser->exmailbox);
+ "您曾增購 %d 封容量,還要再買多少?", cuser.exmailbox);
getdata_str(b_lines - 2, 0, buf, ans, sizeof(ans), LCECHO, "10");
@@ -319,10 +319,10 @@ p_exmail()
return 0;
if (n < 0)
n = 100;
- if (n + cuser->exmailbox > MAX_EXKEEPMAIL)
- n = MAX_EXKEEPMAIL - cuser->exmailbox;
+ if (n + cuser.exmailbox > MAX_EXKEEPMAIL)
+ n = MAX_EXKEEPMAIL - cuser.exmailbox;
reload_money();
- if (cuser->money < n * 1000)
+ if (cuser.money < n * 1000)
return 0;
vice(n * 1000, "購買信箱");
inmailbox(n);
@@ -379,23 +379,23 @@ p_give()
move(1, 0);
usercomplete("這位幸運兒的id:", id);
- if (!id[0] || !strcmp(cuser->userid, id) ||
+ if (!id[0] || !strcmp(cuser.userid, id) ||
!getdata(2, 0, "要給多少錢:", genbuf, 7, LCECHO))
return 0;
money = atoi(genbuf);
reload_money();
- if (money > 0 && cuser->money >= money) {
+ if (money > 0 && cuser.money >= money) {
tax = give_tax(money);
if (money - tax <= 0)
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));
+ cuser.userid, id, money - tax, ctime(&now));
log_file(FN_MONEY, genbuf, 1);
genbuf[0] = 'n';
getdata(3, 0, "要自行書寫紅包袋嗎?[y/N]", genbuf, 2, LCECHO);
- mail_redenvelop(cuser->userid, id, money - tax, genbuf[0]);
+ mail_redenvelop(cuser.userid, id, money - tax, genbuf[0]);
}
return 0;
}
diff --git a/mbbsd/calendar.c b/mbbsd/calendar.c
index d5c1fe61..5cb644c2 100644
--- a/mbbsd/calendar.c
+++ b/mbbsd/calendar.c
@@ -129,7 +129,7 @@ ReadEvent(int today)
static event_t head;
head.next = NULL;
- setcalfile(buf, cuser->userid);
+ sethomefile(buf, cuser.userid, "calendar");
fp = fopen(buf, "r");
if (fp) {
while (fgets(buf, sizeof(buf), fp)) {
diff --git a/mbbsd/card.c b/mbbsd/card.c
index 806c5429..2ed12260 100644
--- a/mbbsd/card.c
+++ b/mbbsd/card.c
@@ -353,14 +353,14 @@ game_log(int type, int money)
fp = fopen(BBSHOME "/etc/card/jack.log", "a");
if (!fp)
return 0;
- fprintf(fp, "%s win:%d\n", cuser->userid, money);
+ fprintf(fp, "%s win:%d\n", cuser.userid, money);
fclose(fp);
break;
case TEN_HALF:
fp = fopen(BBSHOME "/etc/card/tenhalf.log", "a");
if (!fp)
return 0;
- fprintf(fp, "%s win:%d\n", cuser->userid, money);
+ fprintf(fp, "%s win:%d\n", cuser.userid, money);
fclose(fp);
break;
}
@@ -374,9 +374,9 @@ card_double_ask()
snprintf(buf, sizeof(buf),
"[ %s ]您現在共有 %d P幣, 現在要分組(加收 %d 元)嗎? [y/N]",
- cuser->userid, cuser->money, JACK);
+ cuser.userid, cuser.money, JACK);
reload_money();
- if (cuser->money < JACK)
+ if (cuser.money < JACK)
return 0;
getdata(20, 0, buf, buf2, sizeof(buf2), LCECHO);
if (buf2[0] == 'y' || buf2[0] == 'Y')
@@ -390,7 +390,7 @@ card_ask()
char buf[100], buf2[3];
snprintf(buf, sizeof(buf), "[ %s ]您現在共有 %d P幣, 還要加牌嗎? [y/N]",
- cuser->userid, cuser->money);
+ cuser.userid, cuser.money);
getdata(20, 0, buf, buf2, sizeof(buf2), LCECHO);
if (buf2[0] == 'y' || buf2[0] == 'Y')
return 1;
@@ -541,7 +541,7 @@ g_card_jack()
setutmpmode(JACK_CARD);
while (1) {
reload_money();
- if (cuser->money < JACK) {
+ if (cuser.money < JACK) {
outs("您的錢不夠唷!去多發表些有意義的文章再來~~~");
return 0;
}
@@ -642,7 +642,7 @@ g_ten_helf()
setutmpmode(TENHALF);
while (1) {
reload_money();
- if (cuser->money < TEN_HALF) {
+ if (cuser.money < TEN_HALF) {
outs("您的錢不夠唷!去多發表些有意義的文章再來~~~");
return 0;
}
diff --git a/mbbsd/chat.c b/mbbsd/chat.c
index 66238334..f94cfc5f 100644
--- a/mbbsd/chat.c
+++ b/mbbsd/chat.c
@@ -332,13 +332,13 @@ t_chat()
while (1) {
getdata(b_lines - 1, 0, "請輸入聊天代號:", chatid, 9, DOECHO);
if(!chatid[0])
- strlcpy(chatid, cuser->userid, sizeof(chatid));
+ strlcpy(chatid, cuser.userid, sizeof(chatid));
chatid[8] = '\0';
/*
* 新格式: /! UserID ChatID Password
*/
snprintf(inbuf, sizeof(inbuf), "/! %s %s %s",
- cuser->userid, chatid, cuser->passwd);
+ cuser.userid, chatid, cuser.passwd);
chat_send(cfd, inbuf);
if (recv(cfd, inbuf, 3, 0) != 3) {
close(cfd);
@@ -520,12 +520,12 @@ t_chat()
char title[128];
char genbuf[200];
- sethomepath(genbuf, cuser->userid);
+ sethomepath(genbuf, cuser.userid);
stampfile(genbuf, &mymail);
mymail.filemode = FILE_READ ;
strlcpy(mymail.owner, "[備.忘.錄]", sizeof(mymail.owner));
strlcpy(mymail.title, "會議\033[1;33m記錄\033[m", sizeof(mymail.title));
- sethomedir(title, cuser->userid);
+ sethomedir(title, cuser.userid);
append_record(title, &mymail, sizeof(mymail));
Rename(fpath, genbuf);
} else
diff --git a/mbbsd/chc.c b/mbbsd/chc.c
index b5027c40..17cda17e 100644
--- a/mbbsd/chc.c
+++ b/mbbsd/chc.c
@@ -779,8 +779,8 @@ mainloop(int s, chcusr_t *user1, chcusr_t *user2, board_t board, play_func_t pla
currutmp->chc_tie++;
}
user1->lose--;
- chcusr_put(cuser, user1);
- passwd_update(usernum, cuser);
+ chcusr_put(&cuser, user1);
+ passwd_update(usernum, &cuser);
}
else if (chc_mode & CHC_WATCH) {
strlcpy(chc_warnmsg, "結束觀棋", sizeof(chc_warnmsg));
@@ -808,8 +808,8 @@ chc_init_play_func(chcusr_t *user1, chcusr_t *user2, play_func_t play_func[2])
char userid[2][IDLEN + 1];
if (chc_mode & CHC_PERSONAL) {
- strlcpy(userid[0], cuser->userid, sizeof(userid[0]));
- strlcpy(userid[1], cuser->userid, sizeof(userid[1]));
+ strlcpy(userid[0], cuser.userid, sizeof(userid[0]));
+ strlcpy(userid[1], cuser.userid, sizeof(userid[1]));
play_func[0] = play_func[1] = myplay;
}
else if (chc_mode & CHC_WATCH) {
@@ -819,7 +819,7 @@ chc_init_play_func(chcusr_t *user1, chcusr_t *user2, play_func_t play_func[2])
play_func[0] = play_func[1] = hisplay;
}
else {
- strlcpy(userid[0], cuser->userid, sizeof(userid[0]));
+ strlcpy(userid[0], cuser.userid, sizeof(userid[0]));
strlcpy(userid[1], currutmp->mateid, sizeof(userid[1]));
play_func[chc_my] = myplay;
play_func[chc_my ^ 1] = hisplay;
@@ -958,7 +958,7 @@ chc(int s, int mode)
chc_log("\n--\n\n");
chc_log_poem();
chc_log_close();
- mail_id(cuser->userid, title, file, "[楚河漢界]");
+ mail_id(cuser.userid, title, file, "[楚河漢界]");
}
else
chc_log_close();
diff --git a/mbbsd/chicken.c b/mbbsd/chicken.c
index 56791de4..1685d842 100644
--- a/mbbsd/chicken.c
+++ b/mbbsd/chicken.c
@@ -86,7 +86,7 @@ int
reload_chicken()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
passwd_query(usernum, &xuser);
memcpy(mychicken, &xuser.mychicken, sizeof(chicken_t));
@@ -101,7 +101,7 @@ reload_chicken()
static int
new_chicken()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
char buf[150];
int price;
@@ -126,7 +126,7 @@ new_chicken()
reload_money();
price = egg_price[(int)mychicken->type];
- if (cuser->money < price) {
+ if (cuser.money < price) {
prints("\n 錢不夠買蛋蛋,蛋蛋要 %d 元", price);
refresh();
return 0;
@@ -138,7 +138,7 @@ new_chicken()
snprintf(buf, sizeof(buf),
"\033[31m%s \033[m養了一隻叫\033[33m %s \033[m的 "
- "\033[32m%s\033[m 於 %s\n", cuser->userid,
+ "\033[32m%s\033[m 於 %s\n", cuser.userid,
mychicken->name, chicken_type[(int)mychicken->type], ctime(&now));
log_file(CHICKENLOG, buf, 1);
mychicken->lastvisit = mychicken->birthday = mychicken->cbirth = now;
@@ -283,7 +283,7 @@ show_chicken_data(chicken_t * thechicken, chicken_t * pkchicken)
static void
ch_eat()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
if (mychicken->food) {
mychicken->weight += time_change[(int)mychicken->type][WEIGHT] +
mychicken->hp_max / 5;
@@ -303,7 +303,7 @@ ch_eat()
static void
ch_clean()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
mychicken->clean = 0;
mychicken->tiredstrong +=
time_change[(int)mychicken->type][TIREDSTRONG] / 3;
@@ -316,7 +316,7 @@ ch_guess()
{
char *guess[3] = {"剪刀", "石頭", "布"}, me, ch, win;
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
mychicken->happy += time_change[(int)mychicken->type][HAPPY] * 1.5;
mychicken->satis += time_change[(int)mychicken->type][SATIS];
mychicken->tiredstrong += time_change[(int)mychicken->type][TIREDSTRONG];
@@ -332,7 +332,7 @@ ch_guess()
win = (int)(3.0 * rand() / (RAND_MAX + 1.0)) - 1;
ch = (me + win + 3) % 3;
prints("%s:%s ! %s:%s !.....%s",
- cuser->userid, guess[(int)me], mychicken->name, guess[(int)ch],
+ cuser.userid, guess[(int)me], mychicken->name, guess[(int)ch],
win == 0 ? "平手" : win < 0 ? "耶..贏了 :D!!" : "嗚..我輸了 :~");
pressanykey();
}
@@ -340,7 +340,7 @@ ch_guess()
static void
ch_book()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
mychicken->book += time_change[(int)mychicken->type][BOOK];
mychicken->tiredstrong += time_change[(int)mychicken->type][TIREDSTRONG];
show_file(CHICKEN_PIC "/read", 5, 14, NO_RELOAD);
@@ -350,7 +350,7 @@ ch_book()
static void
ch_kiss()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
mychicken->happy += time_change[(int)mychicken->type][HAPPY];
mychicken->satis += time_change[(int)mychicken->type][SATIS];
mychicken->tiredstrong +=
@@ -362,7 +362,7 @@ ch_kiss()
static void
ch_hit()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
mychicken->attack += time_change[(int)mychicken->type][ATTACK];
mychicken->run += time_change[(int)mychicken->type][RUN];
mychicken->mm_max += time_change[(int)mychicken->type][MM_MAX] / 15;
@@ -393,7 +393,7 @@ ch_buyitem(int money, char *picture, int *item, int haveticket)
if (num < 1)
return;
reload_money();
- if (cuser->money > money * num) {
+ if (cuser.money > money * num) {
*item += num;
if( haveticket )
vice(money * num, "購買寵物,賭盤項目");
@@ -411,7 +411,7 @@ ch_buyitem(int money, char *picture, int *item, int haveticket)
static void
ch_eatoo()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
if (mychicken->oo > 0) {
mychicken->oo--;
mychicken->tiredstrong = 0;
@@ -425,7 +425,7 @@ ch_eatoo()
static void
ch_eatmedicine()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
if (mychicken->medicine > 0) {
mychicken->medicine--;
mychicken->sick = 0;
@@ -442,7 +442,7 @@ ch_eatmedicine()
static void
ch_kill()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
char buf[150], ans[4];
snprintf(buf, sizeof(buf), "棄養這%s要被罰 100 元, 是否要棄養?(y/N)",
@@ -454,7 +454,7 @@ ch_kill()
more(CHICKEN_PIC "/deadth", YEA);
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,
+ "\033[m宰了 於 %s\n", cuser.userid, mychicken->name,
chicken_type[(int)mychicken->type], ctime(&now));
log_file(CHICKENLOG, buf, 1);
mychicken->name[0] = 0;
@@ -464,7 +464,7 @@ ch_kill()
static int
ch_sell()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
/*
* int money = (mychicken->weight -
* time_change[(int)mychicken->type][WEIGHT])
@@ -514,11 +514,11 @@ ch_sell()
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,
+ cuser.userid, mychicken->name,
chicken_type[(int)mychicken->type], money, ctime(&now));
log_file(CHICKENLOG, buf, 1);
mychicken->lastvisit = mychicken->name[0] = 0;
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
more(CHICKEN_PIC "/sell", YEA);
demoney(money);
return 1;
@@ -633,7 +633,7 @@ time_diff(chicken_t * thechicken)
static void
check_sick()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
/* 髒病的 */
if (mychicken->tiredstrong > mychicken->hp * 0.3 && mychicken->clean > 150)
mychicken->sick += (mychicken->clean - 150) / 10;
@@ -651,7 +651,7 @@ check_sick()
static int
deadtype(chicken_t * thechicken)
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
int i;
char buf[150];
@@ -673,12 +673,12 @@ deadtype(chicken_t * thechicken)
snprintf(buf, sizeof(buf),
"\033[31m%s\033[m 所疼愛的\033[33m %s\033[32m %s "
"\033[m掛了 於 %s\n",
- cuser->userid, thechicken->name,
+ cuser.userid, thechicken->name,
chicken_type[(int)thechicken->type],
ctime(&now));
log_file(CHICKENLOG, buf, 1);
mychicken->name[0] = 0;
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
}
return i;
}
@@ -722,7 +722,7 @@ isdeadth(chicken_t * thechicken)
static void
ch_changename()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
char buf[150], newname[20] = "";
getdata_str(b_lines - 1, 0, "嗯..改個好名字吧:", newname, 18, DOECHO,
@@ -732,7 +732,7 @@ ch_changename()
snprintf(buf, sizeof(buf),
"\033[31m%s\033[m 把疼愛的\033[33m %s\033[32m %s "
"\033[m改名為\033[33m %s\033[m 於 %s\n",
- cuser->userid, mychicken->name,
+ cuser.userid, mychicken->name,
chicken_type[(int)mychicken->type],
newname, ctime(&now));
strlcpy(mychicken->name, newname, sizeof(mychicken->name));
@@ -743,7 +743,7 @@ ch_changename()
static int
select_menu()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
char ch;
reload_money();
@@ -758,7 +758,7 @@ select_menu()
"(\033[37mm\033[33m)買藥$10 (\033[37mk\033[33m)棄養 "
"(\033[37ms\033[33m)賣掉 (\033[37mn\033[33m)改名 "
"(\033[37mq\033[33m)離開:\033[m",
- cuser->money,
+ cuser.money,
/*
* chicken_food[(int)mychicken->type],
* chicken_type[(int)mychicken->type],
@@ -852,7 +852,7 @@ recover_chicken(chicken_t * thechicken)
getdata_str(21, 0, " 選擇:(N:坑人嘛/y:請幫幫我)", buf, 3, LCECHO, "N");
if (buf[0] == 'y' || buf[0] == 'Y') {
reload_money();
- if (cuser->money < price * 2) {
+ if (cuser.money < price * 2) {
outmsg("\033[33;44m★靈界守衛\033[37;45m 什麼 錢沒帶夠 "
"沒錢的小鬼 快去籌錢吧 \033[m");
bell();
@@ -877,7 +877,7 @@ recover_chicken(chicken_t * thechicken)
bell();
igetch();
thechicken->lastvisit = 0;
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
return 0;
}
@@ -886,9 +886,8 @@ recover_chicken(chicken_t * thechicken)
int
chicken_main()
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
lockreturn0(CHICKEN, LOCK_MULTI);
- mychicken = &(cuser->mychicken);
reload_chicken();
age = ((now - mychicken->cbirth) / (60 * 60 * 24));
if (!mychicken->name[0] && !recover_chicken(mychicken) && !new_chicken()) {
@@ -902,7 +901,7 @@ chicken_main()
show_chicken_data(mychicken, NULL);
} while (select_menu());
reload_money();
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
unlockutmpmode();
return 0;
}
@@ -910,7 +909,7 @@ chicken_main()
int
chickenpk(int fd)
{
- chicken_t *mychicken = &cuser->mychicken;
+ chicken_t *mychicken = &cuser.mychicken;
char mateid[IDLEN + 1], data[200], buf[200];
int ch = 0;
@@ -1035,7 +1034,7 @@ chickenpk(int fd)
outs(data + 1);
i = strlen(data) + 1;
passwd_update(duid, &ouser);
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
send(fd, data, i, 0);
if (data[0] == 'q' || data[0] == 'd')
break;
diff --git a/mbbsd/dice.c b/mbbsd/dice.c
index 994bc000..b6336d93 100644
--- a/mbbsd/dice.c
+++ b/mbbsd/dice.c
@@ -209,7 +209,7 @@ del(int value[100],int total, dicedata_t * table)
demoney(money);
move(19, 0);
clrtoeol();
- prints("你現在有 %u Ptt$歐", cuser->money);
+ prints("你現在有 %u Ptt$歐", cuser.money);
table[i].mymoney -= money;
show_count(value, index, -money);
break;
@@ -336,7 +336,7 @@ dice_main(void)
more(DICE_TXT, NA);
reload_money();
- if (cuser->money < 10) {
+ if (cuser.money < 10) {
move(19, 0);
prints("\033[1;37m超過十元再來玩吧~~\033[m");
pressanykey();
@@ -362,11 +362,11 @@ dice_main(void)
while (1) {
move(19, 0);
prints("\033[1;32m你現在有\033[1;31m %u \033[1;32mPtt$歐\033[m",
- cuser->money);
+ cuser.money);
getdata(20, 0, "\033[1;37m數字:加選 d:退選 s:開始或離開\033[m: ",
input, 5, LCECHO);
reload_money();
- if (input[0] != 's' && input[0] != 'd' && cuser->money < 10) {
+ if (input[0] != 's' && input[0] != 'd' && cuser.money < 10) {
move(21, 0);
clrtoeol();
prints("\033[1;37m超過十元才能賭~\033[m");
@@ -387,14 +387,14 @@ dice_main(void)
continue;
/* 輸入錢的loop */
while (1) {
- if (cuser->money < 10)
+ if (cuser.money < 10)
break;
getdata(21, 0, "\033[1;32m賭多少錢呢\033[1;37m(大於10 小於500)"
"\033[m: ", input, sizeof(input), LCECHO);
if (!(money = IsLegal(input)) || input[0] == '0')
continue;
reload_money();
- if (money > cuser->money)
+ if (money > cuser.money)
continue;
for (j = 0, sig = 0; j < i; j++)
if (table[j].mybet == index) {
@@ -425,7 +425,7 @@ dice_main(void)
reload_money();
move(19, 0);
prints("\033[1;32m你現在有 \033[1;31m%u\033[1;32m Ptt$歐",
- cuser->money);
+ cuser.money);
if (sig != 2)
show_count(value,index, money);
}
@@ -450,7 +450,7 @@ dice_main(void)
if (table[j].mymoney * ya > 500) { /* 超過500塊錢才做log 減少io */
snprintf(data, sizeof(data),
"%-15s 押%-2d選項%-8d塊錢 中了%d倍 淨賺:%-8d\n",
- cuser->userid, table[j].mybet,
+ cuser.userid, table[j].mybet,
table[j].mymoney, ya, table[j].mymoney * ya);
fputs(data, winfp);
}
@@ -470,7 +470,7 @@ dice_main(void)
move(19, 0);
clrtoeol();
prints("\033[1;32m你現在有 \033[1;31m%u\033[1;32m Ptt$歐\033[m",
- cuser->money);
+ cuser.money);
getdata(23, 0, "\033[1;32m繼續奮鬥[\033[1;37my/n\033[1;32m]\033[m: ",
input, 2, LCECHO);
diff --git a/mbbsd/edit.c b/mbbsd/edit.c
index 1f13f64a..acc7bac0 100644
--- a/mbbsd/edit.c
+++ b/mbbsd/edit.c
@@ -805,8 +805,8 @@ write_header(FILE * fp)
{
if (curredit & EDIT_MAIL || curredit & EDIT_LIST) {
- fprintf(fp, "%s %s (%s)\n", str_author1, cuser->userid,
- cuser->username
+ fprintf(fp, "%s %s (%s)\n", str_author1, cuser.userid,
+ cuser.username
);
} else {
char *ptr;
@@ -819,7 +819,7 @@ write_header(FILE * fp)
} postlog;
memset(&postlog, 0, sizeof(postlog));
- strlcpy(postlog.author, cuser->userid, sizeof(postlog.author));
+ strlcpy(postlog.author, cuser.userid, sizeof(postlog.author));
ifuseanony = 0;
#ifdef HAVE_ANONYMOUS
if (currbrdattr & BRD_ANONYMOUS) {
@@ -837,7 +837,7 @@ write_header(FILE * fp)
} else {
if (!strcmp("r", real_name) || (!defanony && !real_name[0]))
snprintf(postlog.author, sizeof(postlog.author),
- "%s", cuser->userid);
+ "%s", cuser.userid);
else {
snprintf(postlog.author, sizeof(postlog.author),
"%s.", real_name);
@@ -860,17 +860,17 @@ write_header(FILE * fp)
fprintf(fp, "%s %s (%s) %s %s\n", str_author1, postlog.author,
(((!strcmp(real_name, "r") && defanony) ||
- (!real_name[0] && (!defanony))) ? cuser->username :
+ (!real_name[0] && (!defanony))) ? cuser.username :
"猜猜我是誰 ? ^o^"),
local_article ? str_post2 : str_post1, currboard);
} else {
- fprintf(fp, "%s %s (%s) %s %s\n", str_author1, cuser->userid,
- cuser->username,
+ fprintf(fp, "%s %s (%s) %s %s\n", str_author1, cuser.userid,
+ cuser.username,
local_article ? str_post2 : str_post1, currboard);
}
#else /* HAVE_ANONYMOUS */
- fprintf(fp, "%s %s (%s) %s %s\n", str_author1, cuser->userid,
- cuser->username,
+ fprintf(fp, "%s %s (%s) %s %s\n", str_author1, cuser.userid,
+ cuser.username,
local_article ? str_post2 : str_post1, currboard);
#endif /* HAVE_ANONYMOUS */
@@ -890,7 +890,7 @@ addsignature(FILE * fp, int ifuseanony)
static char msg[] = "請選擇簽名檔 (1-9, 0=不加 X=隨機)[X]: ";
char ch;
- if (!strcmp(cuser->userid, STR_GUEST)) {
+ if (!strcmp(cuser.userid, STR_GUEST)) {
fprintf(fp, "\n--\n※ 發信站 :" BBSNAME "(" MYHOSTNAME
") \n◆ From: %s\n", fromhost);
return;
@@ -898,7 +898,7 @@ addsignature(FILE * fp, int ifuseanony)
if (!ifuseanony) {
num = showsignature(fpath, &i);
if (num){
- msg[34] = ch = isdigit(cuser->signature) ? cuser->signature : 'X';
+ msg[34] = ch = isdigit(cuser.signature) ? cuser.signature : 'X';
getdata(0, 0, msg, buf, 4, DOECHO);
if (!buf[0])
@@ -908,7 +908,7 @@ addsignature(FILE * fp, int ifuseanony)
ch = buf[0];
else
ch = '1' + rand() % num;
- cuser->signature = buf[0];
+ cuser.signature = buf[0];
if (ch != '0') {
fpath[i] = ch;
@@ -1071,7 +1071,7 @@ write_file(char *fpath, int saveheader, int *islocal)
ptime = localtime(&now);
fprintf(fp,
"※ 編輯: %-15s 來自: %-20s (%02d/%02d %02d:%02d)\n",
- cuser->userid, fromhost,
+ cuser.userid, fromhost,
ptime->tm_mon + 1, ptime->tm_mday, ptime->tm_hour, ptime->tm_min);
}
fclose(fp);
@@ -1701,12 +1701,12 @@ vedit(char *fpath, int saveheader, int *islocal)
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,
+ "\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 系統警察", "違法賺錢", "扣除不法所得");
+ post_violatelaw(cuser.userid, "Ptt 系統警察", "違法賺錢", "扣除不法所得");
+ mail_violatelaw(cuser.userid, "Ptt 系統警察", "違法賺錢", "扣除不法所得");
demoney(10000);
abort_bbs(0);
} */
diff --git a/mbbsd/fav.c b/mbbsd/fav.c
index aa0fd84d..8d1381cb 100644
--- a/mbbsd/fav.c
+++ b/mbbsd/fav.c
@@ -458,7 +458,7 @@ int fav_save(void)
if (dashs(buf) == 4) {
char buf3[128];
time_t now = time(NULL);
- sprintf(buf3, "%s %s", cuser->userid, ctime(&now));
+ sprintf(buf3, "%s %s", cuser.userid, ctime(&now));
log_file(BBSHOME"/dirty.hack", buf3, 1);
return -1;
}
@@ -881,7 +881,7 @@ void updatenewfav(int mode)
int i, fd, brdnum;
char fname[80], *brd;
- if(!(cuser->uflag2 & FAVNEW_FLAG))
+ if(!(cuser.uflag2 & FAVNEW_FLAG))
return;
setuserfile(fname, FAVNB);
diff --git a/mbbsd/friend.c b/mbbsd/friend.c
index 92eadb22..eea78bdc 100644
--- a/mbbsd/friend.c
+++ b/mbbsd/friend.c
@@ -419,7 +419,7 @@ friend_edit(int type)
sscanf(line, "%s", uident); // XXX check buffer size
sethomefile(genbuf, uident,
type == FRIEND_ALOHA ? "aloha" : "postnotify");
- del_distinct(genbuf, cuser->userid);
+ del_distinct(genbuf, cuser.userid);
}
fclose(fp);
}
@@ -429,7 +429,7 @@ friend_edit(int type)
sscanf(line, "%s", uident); // XXX check buffer size
sethomefile(genbuf, uident,
type == FRIEND_ALOHA ? "aloha" : "postnotify");
- add_distinct(genbuf, cuser->userid);
+ add_distinct(genbuf, cuser.userid);
}
fclose(fp);
}
diff --git a/mbbsd/gamble.c b/mbbsd/gamble.c
index 841d0926..33e67bb8 100644
--- a/mbbsd/gamble.c
+++ b/mbbsd/gamble.c
@@ -101,7 +101,7 @@ append_ticket_record(char *direct, int ch, int n, int count)
snprintf(genbuf, sizeof(genbuf), "%s/" FN_TICKET_USER, direct);
if ((fp = fopen(genbuf, "a"))) {
- fprintf(fp, "%s %d %d\n", cuser->userid, ch, n);
+ fprintf(fp, "%s %d %d\n", cuser.userid, ch, n);
fclose(fp);
}
load_ticket_record(direct, ticket);
@@ -141,7 +141,7 @@ ticket(int bid)
move(20, 0);
reload_money();
prints("\033[44m錢: %-10d \033[m\n\033[1m請選擇要購買的種類(1~%d)"
- "[Q:離開]\033[m:", cuser->money, count);
+ "[Q:離開]\033[m:", cuser.money, count);
ch = igetch();
/*--
Tim011127
@@ -237,7 +237,7 @@ openticket(int bid)
if (bet != 98) {
money = total * price;
demoney(money * 0.02);
- mail_redenvelop("[賭場抽頭]", cuser->userid, money * 0.02, 'n');
+ mail_redenvelop("[賭場抽頭]", cuser.userid, money * 0.02, 'n');
money = ticket[bet] ? money * 0.95 / ticket[bet] : 9999999;
} else {
vice(price * 10, "賭盤退錢手續費");
diff --git a/mbbsd/gomo.c b/mbbsd/gomo.c
index 91863888..55060b67 100644
--- a/mbbsd/gomo.c
+++ b/mbbsd/gomo.c
@@ -189,7 +189,7 @@ HO_log(Horder_t *pool, char *user)
fileheader_t mymail;
snprintf(buf, sizeof(buf), "home/%c/%s/F.%d",
- cuser->userid[0], cuser->userid, rand() & 65535);
+ cuser.userid[0], cuser.userid, rand() & 65535);
log = fopen(buf, "w");
assert(log);
@@ -204,14 +204,14 @@ HO_log(Horder_t *pool, char *user)
} while (++ptr < v);
fclose(log);
- sethomepath(buf1, cuser->userid);
+ sethomepath(buf1, cuser.userid);
stampfile(buf1, &mymail);
mymail.filemode = FILE_READ ;
strlcpy(mymail.owner, "[備.忘.錄]", sizeof(mymail.owner));
snprintf(mymail.title, sizeof(mymail.title),
- "\033[37;41m棋譜\033[m %s VS %s", cuser->userid, user);
- sethomedir(title, cuser->userid);
+ "\033[37;41m棋譜\033[m %s VS %s", cuser.userid, user);
+ sethomedir(title, cuser.userid);
Rename(buf, buf1);
append_record(title, &mymail, sizeof(mymail));
@@ -307,27 +307,27 @@ gomoku(int fd)
clear();
prints("\033[1;46m 五子棋對戰 \033[45m%30s VS %-30s\033[m",
- cuser->userid, my->mateid);
+ cuser.userid, my->mateid);
show_file("etc/@five", 1, -1, ONLY_COLOR);
move(11, 40);
prints("我是 %s", me == BBLACK ? "先手 ●, 有禁手" : "後手 ○");
move(16, 40);
- prints("\033[1;33m%s", cuser->userid);
+ prints("\033[1;33m%s", cuser.userid);
move(17, 40);
prints("\033[1;33m%s", my->mateid);
move(16, 60);
prints("\033[1;31m%d\033[37m勝 \033[34m%d\033[37m敗 \033[36m%d\033[37m和"
- "\033[m", cuser->five_win, cuser->five_lose, cuser->five_tie);
+ "\033[m", cuser.five_win, cuser.five_lose, cuser.five_tie);
getuser(my->mateid);
move(17, 60);
prints("\033[1;31m%d\033[37m勝 \033[34m%d\033[37m敗 \033[36m%d\033[37m"
"和\033[m", xuser.five_win, xuser.five_lose, xuser.five_tie);
- cuser->five_lose++;
+ cuser.five_lose++;
/* 一進來先加一場敗場, 贏了後再扣回去, 避免快輸了惡意斷線 */
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
add_io(fd, 0);
@@ -354,10 +354,10 @@ gomoku(int fd)
if (lastcount <= -5 && !my->turn) {
move(19, 40);
outs("對手太久沒下, 你贏了!");
- cuser->five_lose--;
- cuser->five_win++;
+ cuser.five_lose--;
+ cuser.five_win++;
my->five_win++;
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
mv.x = mv.y = -2;
send(fd, &mv, sizeof(Horder_t), 0);
mv = *(v - 1);
@@ -376,8 +376,8 @@ gomoku(int fd)
iwantpass = 0;
if (ch == 'q') {
if (countgomo(pool) < 10) {
- cuser->five_lose--;
- passwd_update(usernum, cuser);
+ cuser.five_lose--;
+ passwd_update(usernum, &cuser);
}
send(fd, '\0', 1, 0);
break;
@@ -402,10 +402,10 @@ gomoku(int fd)
}
continue;
} else if (hewantpass) {
- cuser->five_lose--;
- cuser->five_tie++;
+ cuser.five_lose--;
+ cuser.five_tie++;
my->five_tie++;
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
mv.x = mv.y = -2;
send(fd, &mv, sizeof(Horder_t), 0);
mv = *(v - 1);
@@ -417,12 +417,12 @@ gomoku(int fd)
if (ch != sizeof(Horder_t)) {
lastcount = tick - now;
if (lastcount >= 0) {
- cuser->five_lose--;
+ cuser.five_lose--;
if (countgomo(pool) >= 10) {
- cuser->five_win++;
+ cuser.five_win++;
my->five_win++;
}
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
outmsg("對方認輸了!!");
break;
} else {
@@ -432,10 +432,10 @@ gomoku(int fd)
}
} else if (mv.x == -2 && mv.y == -2) {
if (iwantpass == 1) {
- cuser->five_lose--;
- cuser->five_tie++;
+ cuser.five_lose--;
+ cuser.five_tie++;
my->five_tie++;
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
break;
} else {
hewantpass = 1;
@@ -464,10 +464,10 @@ gomoku(int fd)
if (win) {
outmsg(win == 1 ? "對方贏了!" : "對方禁手");
if (win != 1) {
- cuser->five_lose--;
- cuser->five_win++;
+ cuser.five_lose--;
+ cuser.five_win++;
my->five_win++;
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
} else
my->five_lose++;
break;
@@ -497,10 +497,10 @@ gomoku(int fd)
if (win) {
outmsg(win == 1 ? "我贏囉~~" : "禁手輸了");
if (win == 1) {
- cuser->five_lose--;
- cuser->five_win++;
+ cuser.five_lose--;
+ cuser.five_win++;
my->five_win++;
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
} else
my->five_lose++;
break;
diff --git a/mbbsd/guess.c b/mbbsd/guess.c
index c4c2ee99..9c2aba5f 100644
--- a/mbbsd/guess.c
+++ b/mbbsd/guess.c
@@ -29,7 +29,7 @@ get_money(void)
char data[20];
move(1, 0);
- prints("您目前有:%d Ptt$", cuser->money);
+ prints("您目前有:%d Ptt$", cuser.money);
do {
getdata(2, 0, "要賭多少(5-10或按q離開): ", data, 9, LCECHO);
money = 0;
@@ -45,7 +45,7 @@ get_money(void)
if (money != -1) {
money = atoi(data);
reload_money();
- if (money > cuser->money || money <= 4 || money > 10 ||
+ if (money > cuser.money || money <= 4 || money > 10 ||
money < 1)
money = -1;
}
@@ -53,7 +53,7 @@ get_money(void)
move(1, 0);
clrtoeol();
reload_money();
- prints("您目前有:%d Ptt$", cuser->money - money);
+ prints("您目前有:%d Ptt$", cuser.money - money);
return money;
}
@@ -231,7 +231,7 @@ guess_main()
lockreturn0(GUESSNUM, LOCK_MULTI);
reload_money();
- if (cuser->money < 5) {
+ if (cuser.money < 5) {
clear();
move(12, 35);
prints("錢不夠啦 至少要 5 Ptt$");
@@ -296,10 +296,10 @@ guess_main()
if ((file = fopen(LOGPASS, "a"))) {
fprintf(file, "電腦第%d次猜中, ", c_count);
if (youwin)
- fprintf(file, "%s 第%d次猜中, ", cuser->userid, count);
+ fprintf(file, "%s 第%d次猜中, ", cuser.userid, count);
else
- fprintf(file, "%s 沒猜中, ", cuser->userid);
- fprintf(file, "電腦賺走了%s %ld Ptt$\n", cuser->userid, money);
+ fprintf(file, "%s 沒猜中, ", cuser.userid);
+ fprintf(file, "電腦賺走了%s %ld Ptt$\n", cuser.userid, money);
fclose(file);
}
} else if (count < c_count) {
@@ -309,7 +309,7 @@ guess_main()
demoney(money * 2);
if ((file = fopen(LOGPASS, "a"))) {
fprintf(file, "id: %s, 第%d次猜中, 電腦第%d次猜中, "
- "贏了電腦 %ld Ptt$\n", cuser->userid, count,
+ "贏了電腦 %ld Ptt$\n", cuser.userid, count,
c_count, money * 2);
fclose(file);
}
@@ -317,7 +317,7 @@ guess_main()
prints("真厲害, 和電腦打成平手了, 拿回本錢%lu\n", money);
demoney(money);
if ((file = fopen(LOGPASS, "a"))) {
- fprintf(file, "id: %s 和電腦打成了平手\n", cuser->userid);
+ fprintf(file, "id: %s 和電腦打成了平手\n", cuser.userid);
fclose(file);
}
}
@@ -331,14 +331,14 @@ guess_main()
prints("真厲害, 錢被你賺走了");
if ((file = fopen(LOGPASS, "a"))) {
fprintf(file, "id: %s, 第%d次猜中, 贏了 %ld Ptt$\n",
- cuser->userid, count, TABLE[count] * money);
+ cuser.userid, count, TABLE[count] * money);
fclose(file);
}
} else if (count > 5) {
prints("唉, 太多次才猜出來了");
if ((file = fopen(LOGPASS, "a"))) {
fprintf(file, "id: %s, 第%d次才猜中, 賠了 %ld Ptt$\n",
- cuser->userid, count, money);
+ cuser.userid, count, money);
fclose(file);
}
} else {
@@ -348,7 +348,7 @@ guess_main()
prints("你拿回了%lu Ptt$\n", money);
if ((file = fopen(LOGPASS, "a"))) {
fprintf(file, "id: %s, 第%d次猜中, 拿回了本錢 %lu Ptt$\n",
- cuser->userid, count, money);
+ cuser.userid, count, money);
fclose(file);
}
}
@@ -361,7 +361,7 @@ guess_main()
move(18, 35);
prints("下次再來吧");
if ((file = fopen(BBSHOME "/etc/loseguess.log", "a"))) {
- fprintf(file, "id: %s 賭了 %ld Ptt$\n", cuser->userid, money);
+ fprintf(file, "id: %s 賭了 %ld Ptt$\n", cuser.userid, money);
fclose(file);
}
unlockutmpmode();
diff --git a/mbbsd/indict.c b/mbbsd/indict.c
index 2a997bdb..317fb5b0 100644
--- a/mbbsd/indict.c
+++ b/mbbsd/indict.c
@@ -25,7 +25,7 @@ addword(char *database,char word[])
if (buf[0]) {
getdata(13, 0, "確定新增?(Y/n)", a, sizeof(a), LCECHO);
if (a[0] != 'n')
- fprintf(fp, "%-65s[%s]\n", buf, cuser->userid);
+ fprintf(fp, "%-65s[%s]\n", buf, cuser.userid);
}
}
fclose(fp);
diff --git a/mbbsd/kaede.c b/mbbsd/kaede.c
index bf2e0302..9023557d 100644
--- a/mbbsd/kaede.c
+++ b/mbbsd/kaede.c
@@ -18,7 +18,7 @@ Ptt_prints(char *str, int mode)
switch( str[++r] ){
case 's':
w += snprintf(&strbuf[w], sizeof(strbuf) - w,
- "%s", cuser->userid);
+ "%s", cuser.userid);
break;
case 't':
w += snprintf(&strbuf[w], sizeof(strbuf) - w,
@@ -30,23 +30,23 @@ Ptt_prints(char *str, int mode)
break;
case 'b':
w += snprintf(&strbuf[w], sizeof(strbuf) - w,
- "%d/%d", cuser->month, cuser->day);
+ "%d/%d", cuser.month, cuser.day);
break;
case 'l':
w += snprintf(&strbuf[w], sizeof(strbuf) - w,
- "%d", cuser->numlogins);
+ "%d", cuser.numlogins);
break;
case 'p':
w += snprintf(&strbuf[w], sizeof(strbuf) - w,
- "%d", cuser->numposts);
+ "%d", cuser.numposts);
break;
case 'n':
w += snprintf(&strbuf[w], sizeof(strbuf) - w,
- "%s", cuser->username);
+ "%s", cuser.username);
break;
case 'm':
w += snprintf(&strbuf[w], sizeof(strbuf) - w,
- "%d", cuser->money);
+ "%d", cuser.money);
break;
/* It's saver not to send these undefined escape string.
default:
diff --git a/mbbsd/lovepaper.c b/mbbsd/lovepaper.c
index f5dfdfbb..826f6eb4 100644
--- a/mbbsd/lovepaper.c
+++ b/mbbsd/lovepaper.c
@@ -15,7 +15,7 @@ x_love()
setutmpmode(LOVE);
gtime = localtime(&now);
snprintf(buf1, sizeof(buf1), "%c/%s/love%d%d",
- cuser->userid[0], cuser->userid, gtime->tm_sec, gtime->tm_min);
+ cuser.userid[0], cuser.userid, gtime->tm_sec, gtime->tm_min);
strcat(path, buf1);
move(1, 0);
clrtobot();
@@ -96,7 +96,7 @@ x_love()
stampfile(buf1, &mhdr);
Rename(path, buf1);
strncpy(mhdr.title, save_title, TTLEN);
- strlcpy(mhdr.owner, cuser->userid, sizeof(mhdr.owner));
+ strlcpy(mhdr.owner, cuser.userid, sizeof(mhdr.owner));
sethomedir(path, receiver);
if (append_record(path, &mhdr, sizeof(mhdr)) == -1)
return -1;
diff --git a/mbbsd/mail.c b/mbbsd/mail.c
index ff4583ea..6c0ae7c7 100644
--- a/mbbsd/mail.c
+++ b/mbbsd/mail.c
@@ -12,7 +12,7 @@ setforward()
char buf[80], ip[50] = "", yn[4];
FILE *fp;
- sethomepath(buf, cuser->userid);
+ sethomepath(buf, cuser.userid);
strcat(buf, "/.forward");
if ((fp = fopen(buf, "r"))) {
fscanf(fp, "%s", ip); // XXX check buffer size
@@ -58,7 +58,7 @@ built_mail_index()
snprintf(genbuf, sizeof(genbuf),
BBSHOME "/bin/buildir " BBSHOME "/home/%c/%s",
- cuser->userid[0], cuser->userid);
+ cuser.userid[0], cuser.userid);
move(22, 0);
prints("\033[1;31m已經處理完畢!! 諸多不便 敬請原諒~\033[m");
pressanykey();
@@ -85,7 +85,7 @@ mailalert(char *userid)
int
mail_muser(userec_t muser, char *title, char *filename)
{
- return mail_id(muser.userid, title, filename, cuser->userid);
+ return mail_id(muser.userid, title, filename, cuser.userid);
}
/* Heat: 用id來寄信,內容則link準備好的檔案 */
@@ -140,7 +140,7 @@ m_internet()
void
m_init()
{
- sethomedir(currmaildir, cuser->userid);
+ sethomedir(currmaildir, cuser.userid);
}
int
@@ -159,8 +159,8 @@ chkmailbox()
mailsumlimit = 200;
else
mailsumlimit = 50;
- mailsumlimit += cuser->exmailbox * 10;
- mailmaxkeep = max_keepmail + cuser->exmailbox;
+ mailsumlimit += cuser.exmailbox * 10;
+ mailmaxkeep = max_keepmail + cuser.exmailbox;
m_init();
if ((mailkeep = get_num_records(currmaildir, sizeof(fileheader_t))) >
mailmaxkeep) {
@@ -224,7 +224,7 @@ hold_mail(char *fpath, char *receiver)
buf, sizeof(buf), LCECHO);
if (buf[0] == 'y')
- do_hold_mail(fpath, receiver, cuser->userid);
+ do_hold_mail(fpath, receiver, cuser.userid);
}
int
@@ -289,7 +289,7 @@ do_send(char *userid, char *title)
strlcpy(receiver, userid, sizeof(receiver));
sethomepath(genbuf, userid);
stampfile(genbuf, &mhdr);
- strlcpy(mhdr.owner, cuser->userid, sizeof(mhdr.owner));
+ strlcpy(mhdr.owner, cuser.userid, sizeof(mhdr.owner));
strncpy(mhdr.title, save_title, TTLEN);
if (vedit(genbuf, YEA, NULL) == -1) {
unlink(genbuf);
@@ -298,10 +298,10 @@ do_send(char *userid, char *title)
}
clear();
sethomefile(fpath, userid, FN_OVERRIDES);
- i = belong(fpath, cuser->userid);
+ i = belong(fpath, cuser.userid);
sethomefile(fpath, userid, FN_REJECT);
- if (i || !belong(fpath, cuser->userid)) {/* Ptt: 用belong有點討厭 */
+ if (i || !belong(fpath, cuser.userid)) {/* Ptt: 用belong有點討厭 */
sethomedir(fpath, userid);
if (append_record_forward(fpath, &mhdr, sizeof(mhdr)) == -1)
return -1;
@@ -447,7 +447,7 @@ multi_send(char *title)
strtok(ptr = genbuf + 3, " \n\r");
do {
if (searchuser(ptr) && !InNameList(ptr) &&
- strcmp(cuser->userid, ptr)) {
+ strcmp(cuser.userid, ptr)) {
AddNameList(ptr);
reciper++;
}
@@ -525,7 +525,7 @@ multi_send(char *title)
unlink(genbuf);
Link(fpath, genbuf);
- strlcpy(mymail.owner, cuser->userid, sizeof(mymail.owner));
+ strlcpy(mymail.owner, cuser.userid, sizeof(mymail.owner));
strlcpy(mymail.title, save_title, sizeof(mymail.title));
mymail.filemode |= FILE_MULTI; /* multi-send flag */
sethomedir(genbuf, p->word);
@@ -602,17 +602,17 @@ mail_all()
setutmpmode(MAILALL);
stand_title("寄信中...");
- sethomepath(genbuf, cuser->userid);
+ sethomepath(genbuf, cuser.userid);
stampfile(genbuf, &mymail);
unlink(genbuf);
Link(fpath, genbuf);
unlink(fpath);
strcpy(fpath, genbuf);
- strlcpy(mymail.owner, cuser->userid, sizeof(mymail.owner)); /* 站長 ID */
+ strlcpy(mymail.owner, cuser.userid, sizeof(mymail.owner)); /* 站長 ID */
strlcpy(mymail.title, save_title, sizeof(mymail.title));
- sethomedir(genbuf, cuser->userid);
+ sethomedir(genbuf, cuser.userid);
if (append_record_forward(genbuf, &mymail, sizeof(mymail)) == -1)
outs(err_uid);
@@ -622,13 +622,13 @@ mail_all()
userid = SHM->userid[i];
if (strcmp(userid, STR_GUEST) && strcmp(userid, "new") &&
- strcmp(userid, cuser->userid)) {
+ strcmp(userid, cuser.userid)) {
sethomepath(genbuf, userid);
stampfile(genbuf, &mymail);
unlink(genbuf);
Link(fpath, genbuf);
- strlcpy(mymail.owner, cuser->userid, sizeof(mymail.owner));
+ strlcpy(mymail.owner, cuser.userid, sizeof(mymail.owner));
strlcpy(mymail.title, save_title, sizeof(mymail.title));
/* mymail.filemode |= FILE_MARKED; Ptt 公告改成不會mark */
sethomedir(genbuf, userid);
@@ -649,8 +649,8 @@ mail_mbox()
char cmd[100];
fileheader_t fhdr;
- snprintf(cmd, sizeof(cmd), "/tmp/%s.uu", cuser->userid);
- snprintf(fhdr.title, sizeof(fhdr.title), "%s 私人資料", cuser->userid);
+ snprintf(cmd, sizeof(cmd), "/tmp/%s.uu", cuser.userid);
+ snprintf(fhdr.title, sizeof(fhdr.title), "%s 私人資料", cuser.userid);
doforward(cmd, &fhdr, 'Z');
return 0;
}
@@ -868,7 +868,7 @@ mail_del(int ent, fileheader_t * fhdr, char *direct)
unlink(genbuf);
if ((currmode & MODE_SELECT)) {
int index;
- sethomedir(genbuf, cuser->userid);
+ sethomedir(genbuf, cuser.userid);
index = getindex(genbuf, fhdr->filename, sizeof(fileheader_t));
delete_record(genbuf, sizeof(fileheader_t), index);
}
@@ -1026,7 +1026,7 @@ mail_edit(int ent, fileheader_t * fhdr, char *direct)
char genbuf[200];
if (!HAS_PERM(PERM_SYSOP) &&
- strcmp(cuser->userid, fhdr->owner) &&
+ strcmp(cuser.userid, fhdr->owner) &&
strcmp("[備.忘.錄]", fhdr->owner))
return DONOTHING;
@@ -1038,8 +1038,8 @@ mail_edit(int ent, fileheader_t * fhdr, char *direct)
static int
mail_nooutmail(int ent, fileheader_t * fhdr, char *direct)
{
- cuser->userlevel ^= PERM_NOOUTMAIL;
- passwd_update(usernum, cuser);
+ cuser.userlevel ^= PERM_NOOUTMAIL;
+ passwd_update(usernum, &cuser);
return TITLE_REDRAW;
}
@@ -1115,7 +1115,7 @@ mail_cross_post(int ent, fileheader_t * fhdr, char *direct)
return TITLE_REDRAW;
ent = 1;
- if (HAS_PERM(PERM_SYSOP) || !strcmp(fhdr->owner, cuser->userid)) {
+ if (HAS_PERM(PERM_SYSOP) || !strcmp(fhdr->owner, cuser.userid)) {
getdata(2, 0, "(1)原文轉載 (2)舊轉錄格式?[1] ",
genbuf, 3, DOECHO);
if (genbuf[0] != '2') {
@@ -1146,7 +1146,7 @@ mail_cross_post(int ent, fileheader_t * fhdr, char *direct)
if (author)
strlcpy(xfile.owner, fhdr->owner, sizeof(xfile.owner));
else
- strlcpy(xfile.owner, cuser->userid, sizeof(xfile.owner));
+ strlcpy(xfile.owner, cuser.userid, sizeof(xfile.owner));
strlcpy(xfile.title, xtitle, sizeof(xfile.title));
if (genbuf[0] == 'l') {
xfile.filemode = FILE_LOCAL;
@@ -1163,7 +1163,7 @@ mail_cross_post(int ent, fileheader_t * fhdr, char *direct)
write_header(xptr);
currboard = save_currboard;
- fprintf(xptr, "※ [本文轉錄自 %s 信箱]\n\n", cuser->userid);
+ fprintf(xptr, "※ [本文轉錄自 %s 信箱]\n\n", cuser.userid);
b_suckinfile(xptr, fname);
addsignature(xptr, 0);
@@ -1178,7 +1178,7 @@ mail_cross_post(int ent, fileheader_t * fhdr, char *direct)
setbtotal(getbnum(xboard));
if (!xfile.filemode)
outgo_post(&xfile, xboard);
- cuser->numposts++;
+ cuser.numposts++;
outmsg("文章轉錄完成");
pressanykey();
currmode = currmode0;
@@ -1194,8 +1194,8 @@ mail_man()
int mode0 = currutmp->mode;
int stat0 = currstat;
- sethomeman(buf, cuser->userid);
- snprintf(buf1, sizeof(buf1), "%s 的信件夾", cuser->userid);
+ sethomeman(buf, cuser.userid);
+ snprintf(buf1, sizeof(buf1), "%s 的信件夾", cuser.userid);
a_menu(buf1, buf, 1);
currutmp->mode = mode0;
currstat = stat0;
@@ -1219,7 +1219,7 @@ mail_cite(int ent, fileheader_t * fhdr, char *direct)
title[TTLEN] = '\0';
a_copyitem(fpath, title, 0, 1);
- if (cuser->userlevel >= PERM_BM) {
+ if (cuser.userlevel >= PERM_BM) {
move(2, 0);
clrtoeol();
move(3, 0);
@@ -1261,8 +1261,8 @@ mail_save(int ent, fileheader_t * fhdr, char *direct)
strncpy(title + 3, fhdr->title, TTLEN - 3);
title[TTLEN] = '\0';
a_copyitem(fpath, title, fhdr->owner, 1);
- sethomeman(fpath, cuser->userid);
- a_menu(cuser->userid, fpath, 1);
+ sethomeman(fpath, cuser.userid);
+ a_menu(cuser.userid, fpath, 1);
return FULLUPDATE;
}
return DONOTHING;
@@ -1281,7 +1281,7 @@ mail_waterball(int ent, fileheader_t * fhdr, char *direct)
return 1;
}
if (!address[0])
- strlcpy(address, cuser->email, sizeof(address));
+ strlcpy(address, cuser.email, sizeof(address));
move(b_lines - 8, 0);
outs("水球整理程式:\n"
"系統將會按照和不同人丟的水球各自獨立\n"
@@ -1329,16 +1329,16 @@ mail_waterball(int ent, fileheader_t * fhdr, char *direct)
cmode = (fname[0] != '0' && fname[0] != '1') ? 1 : fname[0] - '0';
snprintf(fname, sizeof(fname), BBSHOME "/jobspool/water.src.%s-%d",
- cuser->userid, (int)now);
+ cuser.userid, (int)now);
snprintf(genbuf, sizeof(genbuf), "cp " BBSHOME "/home/%c/%s/%s %s",
- cuser->userid[0], cuser->userid, fhdr->filename, fname);
+ cuser.userid[0], cuser.userid, fhdr->filename, fname);
system(genbuf);
/* dirty code ;x */
snprintf(fname, sizeof(fname), BBSHOME "/jobspool/water.des.%s-%d",
- cuser->userid, (int)now);
+ cuser.userid, (int)now);
fp = fopen(fname, "wt");
assert(fp);
- fprintf(fp, "%s\n%s\n%d\n", cuser->userid, address, cmode);
+ fprintf(fp, "%s\n%s\n%d\n", cuser.userid, address, cmode);
fclose(fp);
vmsg("設定完成, 系統將在下一個整點(尖峰時段除外)將資料寄給您");
return FULLUPDATE;
@@ -1446,7 +1446,7 @@ m_read()
i_read(RMAIL, currmaildir, mailtitle, maildoent, mail_comms, -1);
currbid = back_bid;
curredit = 0;
- currutmp->mailalert = load_mailalert(cuser->userid);
+ currutmp->mailalert = load_mailalert(cuser.userid);
return 0;
} else {
outs("您沒有來信");
@@ -1465,11 +1465,11 @@ send_inner_mail(char *fpath, char *title, char *receiver)
return -2;
sethomepath(genbuf, receiver);
stampfile(genbuf, &mymail);
- if (!strcmp(receiver, cuser->userid)) {
+ if (!strcmp(receiver, cuser.userid)) {
strlcpy(mymail.owner, "[" BBSNAME "]", sizeof(mymail.owner));
mymail.filemode = FILE_READ;
} else
- strlcpy(mymail.owner, cuser->userid, sizeof(mymail.owner));
+ strlcpy(mymail.owner, cuser.userid, sizeof(mymail.owner));
strncpy(mymail.title, title, TTLEN);
unlink(genbuf);
Link(fpath, genbuf);
@@ -1513,7 +1513,7 @@ bbs_sendmail(char *fpath, char *title, char *receiver)
} else {
snprintf(genbuf, sizeof(genbuf),
"/usr/sbin/sendmail -f %s%s %s > /dev/null",
- cuser->userid, str_mail_address, receiver);
+ cuser.userid, str_mail_address, receiver);
fin = fopen(fpath, "r");
}
fout = popen(genbuf, "w");
@@ -1522,9 +1522,9 @@ bbs_sendmail(char *fpath, char *title, char *receiver)
if (fpath)
fprintf(fout, "Reply-To: %s%s\nFrom: %s <%s%s>\n",
- cuser->userid, str_mail_address,
- cuser->username,
- cuser->userid, str_mail_address);
+ cuser.userid, str_mail_address,
+ cuser.username,
+ cuser.userid, str_mail_address);
fprintf(fout,"To: %s\nSubject: %s\n"
"Mime-Version: 1.0\r\n"
"Content-Type: text/plain; charset=\"big5\"\r\n"
@@ -1585,8 +1585,8 @@ bsmtp(char *fpath, char *title, char *rcpt, int method)
/* setup mail queue */
mqueue.mailtime = chrono;
mqueue.method = method;
- strlcpy(mqueue.sender, cuser->userid, sizeof(mqueue.sender));
- strlcpy(mqueue.username, cuser->username, sizeof(mqueue.username));
+ strlcpy(mqueue.sender, cuser.userid, sizeof(mqueue.sender));
+ strlcpy(mqueue.username, cuser.username, sizeof(mqueue.username));
strlcpy(mqueue.rcpt, rcpt, sizeof(mqueue.rcpt));
if (append_record("out/.DIR", (fileheader_t *) & mqueue, sizeof(mqueue)) < 0)
return 0;
@@ -1603,7 +1603,7 @@ doforward(char *direct, fileheader_t * fh, int mode)
char genbuf[200];
if (!address[0])
- strlcpy(address, cuser->email, sizeof(address));
+ strlcpy(address, cuser.email, sizeof(address));
if( mode == 'U' ){
move(b_lines, 0);
@@ -1650,7 +1650,7 @@ doforward(char *direct, fileheader_t * fh, int mode)
char msg[200];
snprintf(msg, sizeof(msg), "%s mailforward to %s at %s",
- cuser->userid, address, Cdate(&now));
+ cuser.userid, address, Cdate(&now));
log_user(msg);
}
if (mode == 'Z') {
@@ -1658,13 +1658,13 @@ doforward(char *direct, fileheader_t * fh, int mode)
TAR_PATH " cfz /tmp/home.%s.tgz home/%c/%s; "
MUTT_PATH " -a /tmp/home.%s.tgz -s 'home.%s.tgz' '%s' </dev/null;"
"rm /tmp/home.%s.tgz",
- cuser->userid, cuser->userid[0], cuser->userid,
- cuser->userid, cuser->userid, address, cuser->userid);
+ cuser.userid, cuser.userid[0], cuser.userid,
+ cuser.userid, cuser.userid, address, cuser.userid);
system(fname);
return 0;
snprintf(fname, sizeof(fname), TAR_PATH " cfz - home/%c/%s | "
"/usr/bin/uuencode %s.tgz > %s",
- cuser->userid[0], cuser->userid, cuser->userid, direct);
+ cuser.userid[0], cuser.userid, cuser.userid, direct);
system(fname);
strlcpy(fname, direct, sizeof(fname));
} else if (mode == 'U') {
@@ -1740,7 +1740,7 @@ mail_justify(userec_t muser)
sethomepath(buf1, muser.userid);
stampfile(buf1, &mhdr);
unlink(buf1);
- strlcpy(mhdr.owner, cuser->userid, sizeof(mhdr.owner));
+ strlcpy(mhdr.owner, cuser.userid, sizeof(mhdr.owner));
strncpy(mhdr.title, "[審核通過]", TTLEN);
mhdr.filemode = 0;
diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c
index fdca2a37..f3c3d778 100644
--- a/mbbsd/mbbsd.c
+++ b/mbbsd/mbbsd.c
@@ -103,7 +103,7 @@ log_user(char *msg)
char filename[200], buf[200];
snprintf(filename, sizeof(filename), BBSHOME "/home/%c/%s/USERLOG",
- cuser->userid[0], cuser->userid);
+ cuser.userid[0], cuser.userid);
snprintf(buf, sizeof(buf), "%s\n", msg);
log_file(filename, msg, 1);
}
@@ -116,18 +116,17 @@ log_usies(char *mode, char *mesg)
if (!mesg)
snprintf(genbuf, sizeof(genbuf),
- cuser ? "%s %s %-12s Stay:%d (%s)" :
- "%s %s %s Stay:%d (%s)",
- Cdate(&now), mode, cuser ? cuser->userid :"",
- (int)(now - login_start_time) / 60, cuser?cuser->username:"");
+ "%s %s %-12s Stay:%d (%s)",
+ Cdate(&now), mode, cuser.userid ,
+ (int)(now - login_start_time) / 60, cuser.username);
else
snprintf(genbuf, sizeof(genbuf),
- cuser ? "%s %s %-12s %s" : "%s %s %s%s",
- Cdate(&now), mode, cuser? cuser->userid:"", mesg);
+ "%s %s %-12s %s\n",
+ Cdate(&now), mode, cuser.userid, mesg);
log_file(FN_USIES, genbuf, 1);
/* 追蹤使用者 */
- if (cuser && HAS_PERM(PERM_LOGUSER))
+ if (HAS_PERM(PERM_LOGUSER))
log_user(genbuf);
}
@@ -136,9 +135,9 @@ static void
setflags(int mask, int value)
{
if (value)
- cuser->uflag |= mask;
+ cuser.uflag |= mask;
else
- cuser->uflag &= ~mask;
+ cuser.uflag &= ~mask;
}
void
@@ -159,27 +158,27 @@ u_exit(char *mode)
brc_finalize();
#ifdef ASSESS
- cuser->goodpost = currutmp->goodpost;
- cuser->badpost = currutmp->badpost;
- cuser->goodsale = currutmp->goodsale;
- cuser->badsale = currutmp->badsale;
+ cuser.goodpost = currutmp->goodpost;
+ cuser.badpost = currutmp->badpost;
+ cuser.goodsale = currutmp->goodsale;
+ cuser.badsale = currutmp->badsale;
#endif
- cuser->invisible = currutmp->invisible;
- cuser->pager = currutmp->pager;
- memcpy(cuser->mind, currutmp->mind, 4);
+ cuser.invisible = currutmp->invisible;
+ cuser.pager = currutmp->pager;
+ memcpy(cuser.mind, currutmp->mind, 4);
setutmpbid(0);
if (!(HAS_PERM(PERM_SYSOP) && HAS_PERM(PERM_DENYPOST)) &&
!currutmp->invisible)
do_aloha("<<下站通知>> -- 我走囉!");
purge_utmp(currutmp);
- if ((cuser->uflag != enter_uflag) || (currmode & MODE_DIRTY) || diff) {
- if (!diff && cuser->numlogins)
- cuser->numlogins = --cuser->numlogins;
+ if ((cuser.uflag != enter_uflag) || (currmode & MODE_DIRTY) || diff) {
+ if (!diff && cuser.numlogins)
+ cuser.numlogins = --cuser.numlogins;
/* Leeym 上站停留時間限制式 */
}
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
log_usies(mode, NULL);
}
@@ -217,7 +216,7 @@ abort_bbs_debug(int sig)
reentrant = 1;
if (currmode)
u_exit("AXXED");
- setproctitle("debug me!(%d)(%s,%d)", sig, cuser->userid, currstat);
+ setproctitle("debug me!(%d)(%s,%d)", sig, cuser.userid, currstat);
sleep(3600); /* wait 60 mins for debug */
}
#endif
@@ -279,7 +278,7 @@ show_call_in(int save, int which)
char genbuf[200];
time_t now;
if (!fp_writelog) {
- sethomefile(genbuf, cuser->userid, fn_writelog);
+ sethomefile(genbuf, cuser.userid, fn_writelog);
fp_writelog = fopen(genbuf, "a");
}
if (fp_writelog) {
@@ -394,7 +393,7 @@ write_request(int sig)
} else {
if (currutmp->mode != 0 &&
currutmp->pager != 0 &&
- cuser->userlevel != 0 &&
+ cuser.userlevel != 0 &&
currutmp->msgcount != 0 &&
currutmp->mode != TALK &&
currutmp->mode != EDITING &&
@@ -457,7 +456,7 @@ multi_user_check()
if (HAS_PERM(PERM_SYSOP))
return; /* don't check sysops */
- if (cuser->userlevel) {
+ if (cuser.userlevel) {
if (!(ui = (userinfo_t *) search_ulist(usernum)))
return; /* user isn't logged in */
@@ -471,7 +470,7 @@ multi_user_check()
if (genbuf[0] != 'n') {
if (pid > 0)
kill(pid, SIGHUP);
- log_usies("KICK ", cuser->username);
+ log_usies("KICK ", cuser.username);
} else {
if (search_ulistn(usernum, 3) != NULL)
system_abort(); /* Goodbye(); */
@@ -579,7 +578,7 @@ login_query()
if (strcasecmp(uid, str_new) == 0) {
#ifdef LOGINASNEW
new_register();
- mkuserdir(cuser->userid);
+ mkuserdir(cuser.userid);
break;
#else
outs("本系統目前無法以 new 註冊, 請用 guest 進入\n");
@@ -592,31 +591,31 @@ login_query()
passbuf, sizeof(passbuf), NOECHO);
passbuf[8] = '\0';
- if( initcuser(uid) < 1 || cuser == NULL ||
- !checkpasswd(cuser->passwd, passbuf) ){
- logattempt(cuser ? cuser->userid : "", '-');
+ if( initcuser(uid) < 1 || cuser.userid[0] ||
+ !checkpasswd(cuser.passwd, passbuf) ){
+ logattempt(cuser.userid , '-');
outs(ERR_PASSWD);
} else {
- logattempt(cuser->userid, ' ');
- if (strcasecmp("SYSOP", cuser->userid) == 0){
+ logattempt(cuser.userid, ' ');
+ if (strcasecmp("SYSOP", cuser.userid) == 0){
#ifdef NO_SYSOP_ACCOUNT
exit(0);
#else /* 自動加上各個主要權限 */
- cuser->userlevel = PERM_BASIC | PERM_CHAT | PERM_PAGE |
+ cuser.userlevel = PERM_BASIC | PERM_CHAT | PERM_PAGE |
PERM_POST | PERM_LOGINOK | PERM_MAILLIMIT |
PERM_CLOAK | PERM_SEECLOAK | PERM_XEMPT |
PERM_DENYPOST | PERM_BM | PERM_ACCOUNTS |
PERM_CHATROOM | PERM_BOARD | PERM_SYSOP | PERM_BBSADM;
- mkuserdir(cuser->userid);
+ mkuserdir(cuser.userid);
#endif
}
break;
}
} else { /* guest */
if (initcuser(uid)< 1) exit (0) ;
- cuser->userlevel = 0;
- cuser->uflag = COLOR_FLAG | PAGER_FLAG | BRDSORT_FLAG | MOVIE_FLAG;
- mkuserdir(cuser->userid);
+ cuser.userlevel = 0;
+ cuser.uflag = COLOR_FLAG | PAGER_FLAG | BRDSORT_FLAG | MOVIE_FLAG;
+ mkuserdir(cuser.userid);
break;
}
}
@@ -742,7 +741,7 @@ check_BM(void)
/* XXX: -_- */
int i;
- cuser->userlevel &= ~PERM_BM;
+ cuser.userlevel &= ~PERM_BM;
for( i = 0 ; i < numboards ; ++i )
if( is_BM_cache(i + 1) ) /* XXXbid */
return;
@@ -757,31 +756,31 @@ setup_utmp(int mode)
uinfo.pid = currpid = getpid();
uinfo.uid = usernum;
uinfo.mode = currstat = mode;
- uinfo.mailalert = load_mailalert(cuser->userid);
+ uinfo.mailalert = load_mailalert(cuser.userid);
#ifdef ASSESS
- uinfo.goodpost = cuser->goodpost;
- uinfo.badpost = cuser->badpost;
- uinfo.goodsale = cuser->goodsale;
- uinfo.badsale = cuser->badsale;
+ uinfo.goodpost = cuser.goodpost;
+ uinfo.badpost = cuser.badpost;
+ uinfo.goodsale = cuser.goodsale;
+ uinfo.badsale = cuser.badsale;
#endif
- uinfo.userlevel = cuser->userlevel;
- uinfo.sex = cuser->sex % 8;
+ uinfo.userlevel = cuser.userlevel;
+ uinfo.sex = cuser.sex % 8;
uinfo.lastact = time(NULL);
- strlcpy(uinfo.userid, cuser->userid, sizeof(uinfo.userid));
- //strlcpy(uinfo.realname, cuser->realname, sizeof(uinfo.realname));
- strlcpy(uinfo.username, cuser->username, sizeof(uinfo.username));
+ strlcpy(uinfo.userid, cuser.userid, sizeof(uinfo.userid));
+ //strlcpy(uinfo.realname, cuser.realname, sizeof(uinfo.realname));
+ strlcpy(uinfo.username, cuser.username, sizeof(uinfo.username));
strlcpy(uinfo.from, fromhost, sizeof(uinfo.from));
- uinfo.five_win = cuser->five_win;
- uinfo.five_lose = cuser->five_lose;
- uinfo.five_tie = cuser->five_tie;
- uinfo.chc_win = cuser->chc_win;
- uinfo.chc_lose = cuser->chc_lose;
- uinfo.chc_tie = cuser->chc_tie;
- uinfo.invisible = cuser->invisible % 2;
- uinfo.pager = cuser->pager % 5;
- memcpy(uinfo.mind, cuser->mind, 4);
+ uinfo.five_win = cuser.five_win;
+ uinfo.five_lose = cuser.five_lose;
+ uinfo.five_tie = cuser.five_tie;
+ uinfo.chc_win = cuser.chc_win;
+ uinfo.chc_lose = cuser.chc_lose;
+ uinfo.chc_tie = cuser.chc_tie;
+ uinfo.invisible = cuser.invisible % 2;
+ uinfo.pager = cuser.pager % 5;
+ memcpy(uinfo.mind, cuser.mind, 4);
#ifdef WHERE
uinfo.from_alias = where(fromhost);
#endif
@@ -797,7 +796,7 @@ setup_utmp(int mode)
uinfo.invisible = YEA;
getnewutmpent(&uinfo);
SHM->UTMPneedsort = 1;
- if (!(cuser->numlogins % 20) && cuser->userlevel & PERM_BM)
+ if (!(cuser.numlogins % 20) && cuser.userlevel & PERM_BM)
check_BM(); /* Ptt 自動取下離職板主權力 */
#ifndef _BBS_UTIL_C_
friend_load(0);
@@ -809,7 +808,7 @@ inline static void welcome_msg(void) {
prints("\033[m 歡迎您第 \033[1;33m%d\033[0;37m 度拜訪本站,"
"上次您是從 \033[1;33m%s\033[0;37m 連往本站,\n"
" 我記得那天是 \033[1;33m%s\033[0;37m。\n",
- ++cuser->numlogins, cuser->lasthost, Cdate(&(cuser->lastlogin)));
+ ++cuser.numlogins, cuser.lasthost, Cdate(&(cuser.lastlogin)));
pressanykey();
}
@@ -836,8 +835,8 @@ inline static void birthday_make_a_wish(struct tm *ptime, struct tm *tmp){
}
inline static void record_lasthost(char *fromhost, int len){
- strncpy(cuser->lasthost, fromhost, len);
- cuser->lasthost[len - 1] = '\0';
+ strncpy(cuser.lasthost, fromhost, len);
+ cuser.lasthost[len - 1] = '\0';
}
inline static void check_mailbox_quota(void){
@@ -864,24 +863,24 @@ static void init_guest_info(void)
"愛之味", "天上", "藍色珊瑚礁"
};
i = login_start_time % 13;
- snprintf(cuser->username, sizeof(cuser->username),
+ snprintf(cuser.username, sizeof(cuser.username),
"海邊漂來的%s", nick[(int)i]);
- strlcpy(currutmp->username, cuser->username,
+ strlcpy(currutmp->username, cuser.username,
sizeof(currutmp->username));
- strlcpy(cuser->realname, name[(int)i], sizeof(cuser->realname));
- strlcpy(cuser->address, addr[(int)i], sizeof(cuser->address));
- cuser->sex = i % 8;
+ 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;
}
#ifdef FOREIGN_REG
inline static void foreign_warning(void){
- if ((cuser->uflag2 & FOREIGN) && !(cuser->uflag2 & LIVERIGHT)){
- if (login_start_time - cuser->firstlogin > (FOREIGN_REG_DAY - 5) * 24 * 3600){
+ if ((cuser.uflag2 & FOREIGN) && !(cuser.uflag2 & LIVERIGHT)){
+ if (login_start_time - cuser.firstlogin > (FOREIGN_REG_DAY - 5) * 24 * 3600){
mail_muser(*cuser, "[出入境管理局]", "etc/foreign_expired_warn");
}
- else if (login_start_time - cuser->firstlogin > FOREIGN_REG_DAY * 24 * 3600){
- cuser->userlevel &= ~(PERM_LOGINOK | PERM_POST);
+ else if (login_start_time - cuser.firstlogin > FOREIGN_REG_DAY * 24 * 3600){
+ cuser.userlevel &= ~(PERM_LOGINOK | PERM_POST);
vmsg("警告:請至出入境管理局申請永久居留");
}
}
@@ -905,8 +904,8 @@ user_login()
mysrand();
/* show welcome_login */
- ifbirth = (ptime->tm_mday == cuser->day &&
- ptime->tm_mon + 1 == cuser->month);
+ ifbirth = (ptime->tm_mday == cuser.day &&
+ ptime->tm_mon + 1 == cuser.month);
if (ifbirth)
more("etc/Welcome_birth", NA);
else {
@@ -923,7 +922,7 @@ user_login()
}
log_usies("ENTER", fromhost);
- setproctitle("%s: %s", margs, cuser->userid);
+ setproctitle("%s: %s", margs, cuser.userid);
resolve_fcache();
resolve_boards();
memset(&water[0], 0, sizeof(water_t) * 6);
@@ -941,10 +940,10 @@ user_login()
/* 初始化 uinfo、flag、mode */
setup_utmp(LOGIN);
currmode = MODE_STARTED;
- enter_uflag = cuser->uflag;
+ enter_uflag = cuser.uflag;
currutmp->birth = ifbirth;
- tmp = localtime(&(cuser->lastlogin));
+ tmp = localtime(&(cuser.lastlogin));
if ((a = SHM->UTMPnumber) > SHM->max_user) {
SHM->max_user = a;
SHM->max_time = now;
@@ -961,7 +960,7 @@ user_login()
else
SHM->loginmsg.pid=0;
}
- if (cuser->userlevel) { /* not guest */
+ if (cuser.userlevel) { /* not guest */
move(t_lines - 4, 0);
welcome_msg();
@@ -971,7 +970,7 @@ user_login()
check_register();
record_lasthost(fromhost, 16);
restore_backup();
- } else if (!strcmp(cuser->userid, STR_GUEST)) {
+ } else if (!strcmp(cuser.userid, STR_GUEST)) {
init_guest_info();
pressanykey();
} else {
@@ -980,12 +979,12 @@ user_login()
}
if (!PERM_HIDE(currutmp))
- cuser->lastlogin = login_start_time;
+ cuser.lastlogin = login_start_time;
#ifdef FOREIGN_REG
foreign_warning();
#endif
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
fav_load();
/* subscribe new fav (deprecated) */
@@ -993,7 +992,7 @@ user_login()
updatenewfav(1);
for (i = 0; i < NUMVIEWFILE; i++)
- if ((cuser->loginview >> i) & 1)
+ if ((cuser.loginview >> i) & 1)
more(loginview_file[(int)i][0], YEA);
}
@@ -1077,7 +1076,7 @@ start_client()
b_closepolls();
SHM->close_vote_time = now;
}
- if (!(cuser->uflag & COLOR_FLAG))
+ if (!(cuser.uflag & COLOR_FLAG))
showansi = 0;
signal(SIGALRM, SIG_IGN);
diff --git a/mbbsd/menu.c b/mbbsd/menu.c
index 1b8a5e5b..5f8276b8 100644
--- a/mbbsd/menu.c
+++ b/mbbsd/menu.c
@@ -112,14 +112,14 @@ show_status(void)
ptime->tm_mon + 1, ptime->tm_mday, myweek[i], myweek[i + 1],
ptime->tm_hour, ptime->tm_min, currutmp->birth ?
"生日要請客唷" : SHM->today_is,
- SHM->UTMPnumber, cuser->userid, msgs[currutmp->pager]);
+ SHM->UTMPnumber, cuser.userid, msgs[currutmp->pager]);
outmsg(mystatus);
}
static int
u_movie()
{
- cuser->uflag ^= MOVIE_FLAG;
+ cuser.uflag ^= MOVIE_FLAG;
return 0;
}
@@ -129,7 +129,7 @@ movie(int i)
static short history[MAX_HISTORY];
int j;
- if ((currstat != CLASS) && (cuser->uflag & MOVIE_FLAG) &&
+ if ((currstat != CLASS) && (cuser.uflag & MOVIE_FLAG) &&
!SHM->Pbusystate && SHM->max_film > 0) {
if (currstat == PSALE) {
i = PSALE;
@@ -176,7 +176,7 @@ show_menu(commands_t * p)
move(menu_row, 0);
while ((s = p[n].desc)) {
if (HAS_PERM(p[n].level)) {
- snprintf(buf, sizeof(buf), s + 2, state[cuser->proverb % 4]);
+ snprintf(buf, sizeof(buf), s + 2, state[cuser.proverb % 4]);
prints("%*s (\033[1;36m%c\033[0m)%s\n", menu_column, "", s[1],
buf);
}
diff --git a/mbbsd/othello.c b/mbbsd/othello.c
index b4625a58..96fea2e2 100644
--- a/mbbsd/othello.c
+++ b/mbbsd/othello.c
@@ -95,7 +95,7 @@ printboard()
print_chess(4, 5, BLACK);
print_chess(5, 4, BLACK);
move(3, 56);
- prints("(黑)%s", cuser->userid);
+ prints("(黑)%s", cuser.userid);
move(3, 72);
prints(": 02");
move(4, 56);
@@ -229,7 +229,7 @@ end_of_game(int quit)
fp1 = fopen(SECRET, "a");
if (fp1) {
fprintf(fp1, "%d,%d,%s,%02d,%02d\n", think, which_table,
- cuser->userid, number[0], number[1]);
+ cuser.userid, number[0], number[1]);
fclose(fp1);
}
}
@@ -239,7 +239,7 @@ end_of_game(int quit)
fclose(fp);
return;
}
- fprintf(fp, "在%s級中, %s臨陣脫逃\n", opponent[think], cuser->userid);
+ fprintf(fp, "在%s級中, %s臨陣脫逃\n", opponent[think], cuser.userid);
if (fp)
fclose(fp);
return;
@@ -252,7 +252,7 @@ end_of_game(int quit)
demoney(200);
if (fp)
fprintf(fp, "在%s級中, %s以 %02d:%02d 贏了電腦%02d子\n",
- opponent[think], cuser->userid, number[0], number[1],
+ opponent[think], cuser.userid, number[0], number[1],
number[0] - number[1]);
} else if (number[1] > number[0]) {
prints("電腦贏了你%02d子", number[1] - number[0]);
@@ -260,16 +260,16 @@ end_of_game(int quit)
fprintf(fp, "在%s級中, ", opponent[think]);
if (number[1] - number[0] > 20)
fprintf(fp, "電腦以 %02d:%02d 慘電%s %02d子\n", number[1],
- number[0], cuser->userid, number[1] - number[0]);
+ number[0], cuser.userid, number[1] - number[0]);
else
fprintf(fp, "電腦以 %02d:%02d 贏了%s %02d子\n", number[1],
- number[0], cuser->userid, number[1] - number[0]);
+ number[0], cuser.userid, number[1] - number[0]);
}
} else {
prints("你和電腦打成平手!!");
if (fp)
fprintf(fp, "在%s級中, %s和電腦以 %02d:%02d 打成了平手\n",
- opponent[think], cuser->userid, number[1], number[0]);
+ opponent[think], cuser.userid, number[1], number[0]);
}
if (fp)
fclose(fp);
@@ -394,7 +394,7 @@ report()
else if (nowboard[i][j] == WHITE)
number[1]++;
move(3, 60);
- prints("%s", cuser->userid);
+ prints("%s", cuser.userid);
move(3, 72);
prints(": %02d", number[0]);
move(4, 60);
diff --git a/mbbsd/page.c b/mbbsd/page.c
index 78e9ce0f..1757412f 100644
--- a/mbbsd/page.c
+++ b/mbbsd/page.c
@@ -136,7 +136,7 @@ main_railway()
break;
line++;
- sethomepath(genbuf, cuser->userid);
+ sethomepath(genbuf, cuser.userid);
stampfile(genbuf, &mhdr);
strlcpy(mhdr.owner, "Ptt搜尋器", sizeof(mhdr.owner));
strncpy(mhdr.title, "火車時刻搜尋結果", TTLEN);
@@ -148,7 +148,7 @@ main_railway()
(type[0] == '1') ? "fast" : "slow", date, genbuf);
system(command);
- sethomedir(genbuf, cuser->userid);
+ sethomedir(genbuf, cuser.userid);
if (append_record(genbuf, &mhdr, sizeof(mhdr)) == -1)
return -1;
hpressanykey("\033[1;31m我們會把搜尋結果很快地寄給你唷 ^_^\033[m");
diff --git a/mbbsd/passwd.c b/mbbsd/passwd.c
index 7058f12b..88bfcaf7 100644
--- a/mbbsd/passwd.c
+++ b/mbbsd/passwd.c
@@ -97,15 +97,13 @@ passwd_query(int num, userec_t * buf)
return 0;
}
-userec_t userecbuf;
int initcuser(char *userid)
{
// Ptt: setup cuser and usernum here
- cuser = &userecbuf;
if(userid[0]=='\0' ||
!(usernum = searchuser(userid)) || usernum > MAX_USERS)
return -1;
- passwd_query(usernum, &userecbuf);
+ passwd_query(usernum, &cuser);
return usernum;
}
diff --git a/mbbsd/read.c b/mbbsd/read.c
index 413ad26d..2456fdda 100644
--- a/mbbsd/read.c
+++ b/mbbsd/read.c
@@ -503,9 +503,9 @@ select_read(keeploc_t * locmem, int sr_mode)
}
if ((fd = open(currdirect, O_RDONLY, 0)) != -1) {
- snprintf(genbuf, sizeof(genbuf), "SR.%s", cuser->userid);
+ snprintf(genbuf, sizeof(genbuf), "SR.%s", cuser.userid);
if (currstat == RMAIL)
- sethomefile(fpath, cuser->userid, genbuf);
+ sethomefile(fpath, cuser.userid, genbuf);
else
setbfile(fpath, currboard, genbuf);
if (((fr = open(fpath, O_WRONLY | O_CREAT | O_TRUNC, 0600)) != -1)) {
diff --git a/mbbsd/register.c b/mbbsd/register.c
index 7c7f4bf8..7e76e897 100644
--- a/mbbsd/register.c
+++ b/mbbsd/register.c
@@ -306,33 +306,33 @@ check_register()
stand_title("請詳細填寫個人資料");
- while (strlen(cuser->username) < 2)
- getdata(2, 0, "綽號暱稱:", cuser->username,
- sizeof(cuser->username), DOECHO);
+ while (strlen(cuser.username) < 2)
+ getdata(2, 0, "綽號暱稱:", cuser.username,
+ sizeof(cuser.username), DOECHO);
- for (ptr = cuser->username; *ptr; ptr++) {
+ for (ptr = cuser.username; *ptr; ptr++) {
if (*ptr == 9) /* TAB convert */
*ptr = ' ';
}
- while (strlen(cuser->realname) < 4)
- getdata(4, 0, "真實姓名:", cuser->realname,
- sizeof(cuser->realname), DOECHO);
+ while (strlen(cuser.realname) < 4)
+ getdata(4, 0, "真實姓名:", cuser.realname,
+ sizeof(cuser.realname), DOECHO);
- while (strlen(cuser->address) < 8)
- getdata(6, 0, "聯絡地址:", cuser->address,
- sizeof(cuser->address), DOECHO);
+ while (strlen(cuser.address) < 8)
+ getdata(6, 0, "聯絡地址:", cuser.address,
+ sizeof(cuser.address), DOECHO);
/*
- * if(!strchr(cuser->email, '@')) { bell(); move(t_lines - 4, 0); prints("
+ * if(!strchr(cuser.email, '@')) { bell(); move(t_lines - 4, 0); prints("
* 您的權益,請填寫真實的 E-mail address," "以資確認閣下身份,\n" "
* 033[44muser@domain_name\033[0m 或 \033[44muser"
* "@\\[ip_number\\]\033[0m。\n\n" "※ 如果您真的沒有 E-mail, turn]
* 即可。");
*
- * do { getdata(8, 0, "電子信箱:", cuser->email, sizeof(cuser->email),
- * DOECHO); if(!cuser->email[0]) sprintf(cuser->email, "%s%s",
- * cuser->userid, str_mail_address); } while(!strchr(cuser->email, '@'));
+ * do { getdata(8, 0, "電子信箱:", cuser.email, sizeof(cuser->email),
+ * DOECHO); if(!cuser.email[0]) sprintf(cuser->email, "%s%s",
+ * cuser.userid, str_mail_address); } while(!strchr(cuser->email, '@'));
*
* } */
if (!HAS_PERM(PERM_SYSOP)) {
@@ -344,8 +344,8 @@ check_register()
u_register();
#ifdef NEWUSER_LIMIT
- if (cuser->lastlogin - cuser->firstlogin < 3 * 86400)
- cuser->userlevel &= ~PERM_POST;
+ if (cuser.lastlogin - cuser->firstlogin < 3 * 86400)
+ cuser.userlevel &= ~PERM_POST;
more("etc/newuser", YEA);
#endif
}
diff --git a/mbbsd/stuff.c b/mbbsd/stuff.c
index 008f18f9..e088b116 100644
--- a/mbbsd/stuff.c
+++ b/mbbsd/stuff.c
@@ -12,12 +12,6 @@ static char *str_board_n_file = "boards/%c/%s/%s.%d";
static char *str_dotdir = STR_DOTDIR;
void
-setcalfile(char *buf, char *userid)
-{
- sprintf(buf, "home/%c/%s/calendar", userid[0], userid);
-}
-
-void
sethomepath(char *buf, char *userid)
{
sprintf(buf, "home/%c/%s", userid[0], userid);
@@ -45,7 +39,7 @@ sethomefile(char *buf, char *userid, char *fname)
void
setuserfile(char *buf, char *fname)
{
- sprintf(buf, str_home_file, cuser->userid[0], cuser->userid, fname);
+ sprintf(buf, str_home_file, cuser.userid[0], cuser.userid, fname);
}
void
@@ -162,24 +156,6 @@ trim(char *buf)
/* ----------------------------------------------------- */
/* 字串檢查函數:英文、數字、檔名、E-mail address */
/* ----------------------------------------------------- */
-int
-isprint2(char ch)
-{
- return ((ch & 0x80) || isprint(ch));
-}
-
-int
-not_alpha(char ch)
-{
- return (ch < 'A' || (ch > 'Z' && ch < 'a') || ch > 'z');
-}
-
-int
-not_alnum(char ch)
-{
- return (ch < '0' || (ch > '9' && ch < 'A') ||
- (ch > 'Z' && ch < 'a') || ch > 'z');
-}
int
invalid_pname(char *str)
@@ -243,8 +219,8 @@ is_uBM(char *list, char *id)
int
is_BM(char *list)
{
- if (is_uBM(list, cuser->userid)) {
- cuser->userlevel |= PERM_BM; /* Ptt 自動加上BM的權利 */
+ if (is_uBM(list, cuser.userid)) {
+ cuser.userlevel |= PERM_BM; /* Ptt 自動加上BM的權利 */
return 1;
}
return 0;
diff --git a/mbbsd/syspost.c b/mbbsd/syspost.c
index 1e4e25af..39ccf97e 100644
--- a/mbbsd/syspost.c
+++ b/mbbsd/syspost.c
@@ -86,12 +86,12 @@ post_change_perm(int oldperm, int newperm, char *sysopid, char *userid)
while (!getdata_str(5, 0, "請輸入理由以示負責:",
reason, sizeof(reason), DOECHO, "看板板主:"));
fprintf(fp, "\n \033[1;37m站長%s修改權限理由是:%s\033[m",
- cuser->userid, reason);
+ cuser.userid, reason);
fclose(fp);
snprintf(fhdr.title, sizeof(fhdr.title),
"[公安報告] 站長%s修改%s權限報告",
- cuser->userid, userid);
+ cuser.userid, userid);
strlcpy(fhdr.owner, "[系統安全局]", sizeof(fhdr.owner));
append_record("boards/S/Security/.DIR", &fhdr, sizeof(fhdr));
} else
@@ -148,7 +148,7 @@ post_newboard(char *bgroup, char *bname, char *bms)
snprintf(title, sizeof(title), "[新板成立] %s", bname);
snprintf(genbuf, sizeof(genbuf),
"%s 開了一個新板 %s : %s\n\n新任板主為 %s\n\n恭喜*^_^*\n",
- cuser->userid, bname, bgroup, bms);
+ cuser.userid, bname, bgroup, bms);
post_msg("Record", title, genbuf, "[系統]");
}
@@ -166,15 +166,15 @@ give_money_post(char *userid, int money)
return;
fprintf(fp, "作者: [系統安全局] 看板: Security\n"
"標題: [公安報告] 站長%s使用紅包機報告\n"
- "時間: %s\n", cuser->userid, ctime(&now));
+ "時間: %s\n", cuser.userid, ctime(&now));
clrtobot();
clear();
fprintf(fp, "\n 站長\033[1;32m%s\033[m給\033[1;33m%s %d 元\033[m",
- cuser->userid, userid, money);
+ cuser.userid, userid, money);
fclose(fp);
snprintf(fhdr.title, sizeof(fhdr.title), "[公安報告] 站長%s使用紅包機報告",
- cuser->userid);
+ cuser.userid);
strlcpy(fhdr.owner, "[系統安全局]", sizeof(fhdr.owner));
append_record("boards/S/Security/.DIR", &fhdr, sizeof(fhdr));
}
diff --git a/mbbsd/talk.c b/mbbsd/talk.c
index 256c5550..d667fb0a 100644
--- a/mbbsd/talk.c
+++ b/mbbsd/talk.c
@@ -382,7 +382,7 @@ my_query(char *uident)
muser.username,
26 - strlen(muser.userid) - strlen(muser.username), "",
money[i]);
- if (uentp && ((fri_stat & HFM && !uentp->invisible) || strcmp(muser.userid,cuser->userid) == 0))
+ if (uentp && ((fri_stat & HFM && !uentp->invisible) || strcmp(muser.userid,cuser.userid) == 0))
prints(" ($%d)", muser.money);
prints("\n");
@@ -412,7 +412,7 @@ my_query(char *uident)
prints("《競標評比》 優 %d / 劣 %d", muser.goodsale, muser.badsale);
move(6, 40);
#endif
- if ((uentp && ((fri_stat & HFM) || strcmp(muser.userid,cuser->userid) == 0) && !uentp->invisible))
+ if ((uentp && ((fri_stat & HFM) || strcmp(muser.userid,cuser.userid) == 0) && !uentp->invisible))
prints("《 性 別 》%-28.28s\n", sex[muser.sex % 8]);
showplans(uident);
@@ -659,7 +659,7 @@ my_write(pid_t pid, char *prompt, char *id, int flag, userinfo_t * puin)
if (flag != 2) { /* aloha 的水球不用存下來 */
/* 存到自己的水球檔 */
if (!fp_writelog) {
- sethomefile(genbuf, cuser->userid, fn_writelog);
+ sethomefile(genbuf, cuser.userid, fn_writelog);
fp_writelog = fopen(genbuf, "a");
}
if (fp_writelog) {
@@ -689,7 +689,7 @@ my_write(pid_t pid, char *prompt, char *id, int flag, userinfo_t * puin)
uin->msgcount = write_pos + 1;
uin->pager = 2;
uin->msgs[write_pos].pid = currpid;
- strlcpy(uin->msgs[write_pos].userid, cuser->userid,
+ strlcpy(uin->msgs[write_pos].userid, cuser.userid,
sizeof(uin->msgs[write_pos].userid));
strlcpy(uin->msgs[write_pos].last_call_in, msg,
sizeof(uin->msgs[write_pos].last_call_in));
@@ -839,13 +839,13 @@ t_display(void)
fileheader_t mymail;
char title[128], buf[80];
- sethomepath(buf, cuser->userid);
+ sethomepath(buf, cuser.userid);
stampfile(buf, &mymail);
mymail.filemode = FILE_READ ;
strlcpy(mymail.owner, "[備.忘.錄]", sizeof(mymail.owner));
strlcpy(mymail.title, "熱線記錄", sizeof(mymail.title));
- sethomedir(title, cuser->userid);
+ sethomedir(title, cuser.userid);
Rename(genbuf, buf);
append_record(title, &mymail, sizeof(mymail));
} else if (*ans == 'c')
@@ -995,7 +995,7 @@ do_talk_char(talkwin_t * twin, int ch, FILE *flog)
fprintf(flog, "%s%s: %s%s\n",
(twin->eline == b_lines - 1) ? "\033[1;35m" : "",
(twin->eline == b_lines - 1) ?
- getuserid(currutmp->destuid) : cuser->userid, buf,
+ getuserid(currutmp->destuid) : cuser.userid, buf,
(ch == Ctrl('P')) ? "\033[37;45m(Up)\033[m" : "\033[m");
}
@@ -1024,7 +1024,7 @@ do_talk(int fd)
setutmpmode(TALK);
ch = 58 - strlen(save_page_requestor);
- snprintf(genbuf, sizeof(genbuf), "%s【%s", cuser->userid, cuser->username);
+ snprintf(genbuf, sizeof(genbuf), "%s【%s", cuser.userid, cuser.username);
i = ch - strlen(genbuf);
if (i >= 0)
i = (i >> 1) + 1;
@@ -1121,14 +1121,14 @@ do_talk(int fd)
fileheader_t mymail;
char title[128];
- sethomepath(genbuf, cuser->userid);
+ sethomepath(genbuf, cuser.userid);
stampfile(genbuf, &mymail);
mymail.filemode = FILE_READ ;
strlcpy(mymail.owner, "[備.忘.錄]", sizeof(mymail.owner));
snprintf(mymail.title, sizeof(mymail.title),
"對話記錄 \033[1;36m(%s)\033[m",
getuserid(currutmp->destuid));
- sethomedir(title, cuser->userid);
+ sethomedir(title, cuser.userid);
Rename(fpath, genbuf);
append_record(title, &mymail, sizeof(mymail));
} else
@@ -1302,7 +1302,7 @@ my_talk(userinfo_t * uin, int fri_stat, char defact)
getuser(uin->userid);
if (uin->lockmode == CHICKEN || currutmp->lockmode == CHICKEN)
error = 1;
- if (!cuser->mychicken.name[0] || !xuser.mychicken.name[0])
+ if (!cuser.mychicken.name[0] || !xuser.mychicken.name[0])
error = 2;
if (error) {
vmsg(error == 2 ? "並非兩人都養寵物" :
@@ -1588,7 +1588,7 @@ int
pickup_maxpages(int pickupway, int nfriends)
{
int number;
- if (cuser->uflag & FRIEND_FLAG)
+ if (cuser.uflag & FRIEND_FLAG)
number = nfriends;
else
number = SHM->UTMPnumber +
@@ -1668,7 +1668,7 @@ pickup(pickup_t * currpickup, int pickup_way, int *page,
/* 產生好友區 */
which = *page * nPickups;
- if( (cuser->uflag & FRIEND_FLAG) || /* 只顯示好友模式 */
+ if( (cuser.uflag & FRIEND_FLAG) || /* 只顯示好友模式 */
((pickup_way == 0) && /* [嗨! 朋友] mode */
(
/* 含板友, 好友區最多只會有 (friendtotal + 板友) 個*/
@@ -1699,7 +1699,7 @@ pickup(pickup_t * currpickup, int pickup_way, int *page,
} else
*nfriend = 0;
- if (!(cuser->uflag & FRIEND_FLAG) && size < nPickups) {
+ if (!(cuser.uflag & FRIEND_FLAG) && size < nPickups) {
sorted_way = ((pickup_way == 0) ? 0 : (pickup_way - 1));
utmp = SHM->sorted[currsorted][sorted_way];
which = *page * nPickups - *nfriend;
@@ -1742,7 +1742,7 @@ draw_pickup(int drawall, pickup_t * pickup, int pickup_way,
#endif
if (drawall) {
- showtitle((cuser->uflag & FRIEND_FLAG) ? "好友列表" : "休閒聊天",
+ showtitle((cuser.uflag & FRIEND_FLAG) ? "好友列表" : "休閒聊天",
BBSName);
prints("\n"
"\033[7m %s P%c代號 %-17s%-17s%-13s%-10s\033[m\n",
@@ -1977,7 +1977,7 @@ userlist(void)
"代號 [%s]:", currutmp->userid);
if (!getdata(1, 0, buf, currutmp->userid,
sizeof(buf), DOECHO))
- strlcpy(currutmp->userid, cuser->userid, sizeof(currutmp->userid));
+ strlcpy(currutmp->userid, cuser.userid, sizeof(currutmp->userid));
redrawall = redraw = 1;
}
break;
@@ -2054,7 +2054,7 @@ userlist(void)
break;
case 's':
- if (!(cuser->uflag & FRIEND_FLAG)) {
+ if (!(cuser.uflag & FRIEND_FLAG)) {
int si; /* utmpshm->sorted[X][0][si] */
int fi; /* allpickuplist[fi] */
char swid[IDLEN + 1];
@@ -2161,7 +2161,7 @@ userlist(void)
#endif
case 'b': /* broadcast */
- if (cuser->uflag & FRIEND_FLAG || HAS_PERM(PERM_SYSOP)) {
+ if (cuser.uflag & FRIEND_FLAG || HAS_PERM(PERM_SYSOP)) {
char genbuf[60];
char ans[4];
@@ -2171,7 +2171,7 @@ userlist(void)
ans, sizeof(ans), LCECHO) &&
*ans == 'n')
break;
- if (!(cuser->uflag & FRIEND_FLAG) && HAS_PERM(PERM_SYSOP)) {
+ if (!(cuser.uflag & FRIEND_FLAG) && HAS_PERM(PERM_SYSOP)) {
getdata(1, 0, "再次確定站長廣播? [N]",
ans, sizeof(ans), LCECHO);
if( *ans != 'y' && *ans != 'Y' ){
@@ -2252,7 +2252,7 @@ userlist(void)
case 't':
if (HAS_PERM(PERM_LOGINOK)) {
if (uentp->pid != currpid &&
- strcmp(uentp->userid, cuser->userid) != 0) {
+ strcmp(uentp->userid, cuser.userid) != 0) {
move(1, 0);
clrtobot();
move(3, 0);
@@ -2300,14 +2300,14 @@ userlist(void)
case 'f':
if (HAS_PERM(PERM_LOGINOK)) {
- cuser->uflag ^= FRIEND_FLAG;
+ cuser.uflag ^= FRIEND_FLAG;
redrawall = redraw = 1;
}
break;
case 'g':
if (HAS_PERM(PERM_LOGINOK) &&
- strcmp(uentp->userid, cuser->userid) != 0) {
+ strcmp(uentp->userid, cuser.userid) != 0) {
char genbuf[128];
move(b_lines - 2, 0);
prints("要給 %s 多少錢呢? ", uentp->userid);
@@ -2325,18 +2325,18 @@ userlist(void)
}
reload_money();
- if (ch > cuser->money) {
+ if (ch > cuser.money) {
outs("\033[41m 現金不足~~\033[m");
} else {
deumoney(uentp->uid, ch - give_tax(ch));
prints("\033[44m 嗯..還剩下 %d 錢.."
"\033[m", demoney(-ch));
snprintf(genbuf, sizeof(genbuf),
- "%s\t給%s\t%d\t%s\n", cuser->userid,
+ "%s\t給%s\t%d\t%s\n", cuser.userid,
uentp->userid, ch,
ctime(&currutmp->lastact));
log_file(FN_MONEY, genbuf, 1);
- mail_redenvelop(cuser->userid, uentp->userid,
+ mail_redenvelop(cuser.userid, uentp->userid,
ch - give_tax(ch), 'Y');
}
} else {
@@ -2394,10 +2394,10 @@ userlist(void)
if (HAS_PERM(PERM_LOGINOK)) {
int tmp;
char *wm[3] = {"一般", "進階", "未來"};
- tmp = cuser->uflag2 & WATER_MASK;
- cuser->uflag2 -= tmp;
+ tmp = cuser.uflag2 & WATER_MASK;
+ cuser.uflag2 -= tmp;
tmp = (tmp + 1) % 3;
- cuser->uflag2 |= tmp;
+ cuser.uflag2 |= tmp;
move(4, 0);
prints("系統提供 一般 進階 未來 三種模式\n"
"在切換後請正常下線再重新登入, 以確保結構正確\n"
@@ -2418,8 +2418,8 @@ userlist(void)
case 'N':
oldgetdata(1, 0, "新的暱稱: ",
- cuser->username, sizeof(cuser->username), DOECHO);
- strcpy(currutmp->username, cuser->username);
+ cuser.username, sizeof(cuser.username), DOECHO);
+ strcpy(currutmp->username, cuser.username);
redrawall = redraw = 1;
break;
@@ -2439,7 +2439,7 @@ t_users(void)
int mode0 = currutmp->mode;
int stat0 = currstat;
- if( cuser->userid[0] != currutmp->userid[0] ){
+ if( cuser.userid[0] != currutmp->userid[0] ){
if( HAS_PERM(PERM_SYSOP) )
vmsg("warning: currutmp userid is changed");
else
@@ -2482,7 +2482,7 @@ t_idle(void)
currutmp->destuid = 0;
if (currutmp->destuid == 6)
- if (!cuser->userlevel ||
+ if (!cuser.userlevel ||
!getdata(b_lines - 1, 0, "發呆的理由:",
currutmp->chatid, sizeof(currutmp->chatid), DOECHO))
currutmp->destuid = 0;
@@ -2495,8 +2495,8 @@ t_idle(void)
getdata(b_lines - 1, 0, MSG_PASSWD, passbuf, sizeof(passbuf), NOECHO);
passbuf[8] = '\0';
}
- while (!checkpasswd(cuser->passwd, passbuf) &&
- strcmp(STR_GUEST, cuser->userid));
+ while (!checkpasswd(cuser.passwd, passbuf) &&
+ strcmp(STR_GUEST, cuser.userid));
currutmp->mode = mode0;
currutmp->destuid = destuid0;
diff --git a/mbbsd/user.c b/mbbsd/user.c
index b1247477..c92c32ee 100644
--- a/mbbsd/user.c
+++ b/mbbsd/user.c
@@ -22,7 +22,7 @@ int
u_loginview()
{
int i;
- unsigned int pbits = cuser->loginview;
+ unsigned int pbits = cuser.loginview;
char choice[5];
clear();
@@ -44,9 +44,9 @@ u_loginview()
}
}
- if (pbits != cuser->loginview) {
- cuser->loginview = pbits;
- passwd_update(usernum, cuser);
+ if (pbits != cuser.loginview) {
+ cuser.loginview = pbits;
+ passwd_update(usernum, &cuser);
}
return 0;
}
@@ -202,15 +202,15 @@ violate_law(userec_t * u, int unum)
snprintf(src, sizeof(src), "home/%c/%s", u->userid[0], u->userid);
snprintf(dst, sizeof(dst), "tmp/%s", u->userid);
Rename(src, dst);
- post_violatelaw(u->userid, cuser->userid, reason, "砍除 ID");
+ post_violatelaw(u->userid, cuser.userid, reason, "砍除 ID");
kill_user(unum);
} else {
u->userlevel |= PERM_VIOLATELAW;
u->vl_count++;
passwd_update(unum, u);
- post_violatelaw(u->userid, cuser->userid, reason, "罰單處份");
- mail_violatelaw(u->userid, cuser->userid, reason, "罰單處份");
+ post_violatelaw(u->userid, cuser.userid, reason, "罰單處份");
+ mail_violatelaw(u->userid, cuser.userid, reason, "罰單處份");
}
pressanykey();
}
@@ -228,35 +228,35 @@ static void Customize(void)
prints("您目前的個人化設定: ");
move(4, 0);
prints("%-30s%10s\n", "A. 水球模式",
- wm[(cuser->uflag2 & WATER_MASK)]);
+ wm[(cuser.uflag2 & WATER_MASK)]);
prints("%-30s%10s\n", "B. 接受站外信",
- ((cuser->userlevel & PERM_NOOUTMAIL) ? "否" : "是"));
+ ((cuser.userlevel & PERM_NOOUTMAIL) ? "否" : "是"));
prints("%-30s%10s\n", "C. 新板自動進我的最愛",
- ((cuser->uflag2 & FAVNEW_FLAG) ? "是" : "否"));
+ ((cuser.uflag2 & FAVNEW_FLAG) ? "是" : "否"));
prints("%-30s%10s\n", "D. 目前的心情", mindbuf);
prints("%-30s%10s\n", "E. 高亮度顯示我的最愛",
- ((cuser->uflag2 & FAVNOHILIGHT) ? "否" : "是"));
+ ((cuser.uflag2 & FAVNOHILIGHT) ? "否" : "是"));
getdata(b_lines - 1, 0, "請按 [A-E] 切換設定,按 [Return] 結束:",
ans, 3, DOECHO);
switch( ans[0] ){
case 'A':
case 'a':{
- int currentset = cuser->uflag2 & WATER_MASK;
+ int currentset = cuser.uflag2 & WATER_MASK;
currentset = (currentset + 1) % 3;
- cuser->uflag2 &= ~WATER_MASK;
- cuser->uflag2 |= currentset;
+ cuser.uflag2 &= ~WATER_MASK;
+ cuser.uflag2 |= currentset;
vmsg("修正水球模式後請正常離線再重新上線");
}
break;
case 'B':
case 'b':
- cuser->userlevel ^= PERM_NOOUTMAIL;
+ cuser.userlevel ^= PERM_NOOUTMAIL;
break;
case 'C':
case 'c':
- cuser->uflag2 ^= FAVNEW_FLAG;
- if (cuser->uflag2 & FAVNEW_FLAG)
+ cuser.uflag2 ^= FAVNEW_FLAG;
+ if (cuser.uflag2 & FAVNEW_FLAG)
subscribe_newfav();
break;
case 'D':
@@ -273,12 +273,12 @@ static void Customize(void)
break;
case 'E':
case 'e':
- cuser->uflag2 ^= FAVNOHILIGHT;
+ cuser.uflag2 ^= FAVNOHILIGHT;
break;
default:
done = 1;
}
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
}
pressanykey();
}
@@ -334,7 +334,7 @@ uinfo_query(userec_t * u, int real, int unum)
getdata_buf(i++, 0, "真實姓名:",
x.realname, sizeof(x.realname), DOECHO);
#ifdef FOREIGN_REG
- getdata_buf(i++, 0, cuser->uflag2 & FOREIGN ? "護照號碼" : "身分證號:", x.ident, sizeof(x.ident), DOECHO);
+ getdata_buf(i++, 0, cuser.uflag2 & FOREIGN ? "護照號碼" : "身分證號:", x.ident, sizeof(x.ident), DOECHO);
#else
getdata_buf(i++, 0, "身分證號:", x.ident, sizeof(x.ident), DOECHO);
#endif
@@ -591,7 +591,7 @@ uinfo_query(userec_t * u, int real, int unum)
getdata(b_lines - 1, 0, msg_sure_ny, ans, 3, LCECHO);
if (*ans == 'y') {
if (flag)
- post_change_perm(temp, i, cuser->userid, x.userid);
+ post_change_perm(temp, i, cuser.userid, x.userid);
if (strcmp(u->userid, x.userid)) {
char src[STRLEN], dst[STRLEN];
@@ -631,7 +631,7 @@ uinfo_query(userec_t * u, int real, int unum)
"時間: %s\n"
" 站長\033[1;32m%s\033[m把\033[1;32m%s\033[m"
"的錢從\033[1;35m%d\033[m改成\033[1;35m%d\033[m",
- ctime(&now), cuser->userid, x.userid, money, x.money);
+ ctime(&now), cuser.userid, x.userid, money, x.money);
clrtobot();
clear();
@@ -639,10 +639,10 @@ uinfo_query(userec_t * u, int real, int unum)
reason, sizeof(reason), DOECHO));
fprintf(fp, "\n \033[1;37m站長%s修改錢理由是:%s\033[m",
- cuser->userid, reason);
+ cuser.userid, reason);
fclose(fp);
snprintf(fhdr.title, sizeof(fhdr.title),
- "[公安報告] 站長%s修改%s錢報告", cuser->userid,
+ "[公安報告] 站長%s修改%s錢報告", cuser.userid,
x.userid);
strlcpy(fhdr.owner, "[系統安全局]", sizeof(fhdr.owner));
append_record("boards/S/Security/.DIR", &fhdr, sizeof(fhdr));
@@ -654,9 +654,9 @@ int
u_info()
{
move(2, 0);
- user_display(cuser, 0);
- uinfo_query(cuser, 0, usernum);
- strlcpy(currutmp->username, cuser->username, sizeof(currutmp->username));
+ user_display(&cuser, 0);
+ uinfo_query(&cuser, 0, usernum);
+ strlcpy(currutmp->username, cuser.username, sizeof(currutmp->username));
return 0;
}
@@ -664,7 +664,7 @@ int
u_ansi()
{
showansi ^= 1;
- cuser->uflag ^= COLOR_FLAG;
+ cuser.uflag ^= COLOR_FLAG;
outs(reset_color);
return 0;
}
@@ -682,16 +682,16 @@ u_switchproverb()
/* char *state[4]={"用功\型","安逸型","自定型","SHUTUP"}; */
char buf[100];
- cuser->proverb = (cuser->proverb + 1) % 4;
+ cuser.proverb = (cuser.proverb + 1) % 4;
setuserfile(buf, fn_proverb);
- if (cuser->proverb == 2 && dashd(buf)) {
+ if (cuser.proverb == 2 && dashd(buf)) {
FILE *fp = fopen(buf, "a");
assert(fp);
fprintf(fp, "座右銘狀態為[自定型]要記得設座右銘的內容唷!!");
fclose(fp);
}
- passwd_update(usernum, cuser);
+ passwd_update(usernum, &cuser);
return 0;
}
@@ -821,20 +821,19 @@ u_editcalendar()
getdata(b_lines - 1, 0, "行事曆 (D)刪除 (E)編輯 [Q]取消?[Q] ",
genbuf, 3, LCECHO);
+ sethomefile(genbuf, cuser.userid, "calendar");
if (genbuf[0] == 'e') {
int aborted;
setutmpmode(EDITPLAN);
- setcalfile(genbuf, cuser->userid);
+ sethomefile(genbuf, cuser.userid, "calendar");
aborted = vedit(genbuf, NA, NULL);
if (aborted != -1)
- outs("行事曆更新完畢");
- pressanykey();
+ vmsg("行事曆更新完畢");
return 0;
} else if (genbuf[0] == 'd') {
- setcalfile(genbuf, cuser->userid);
unlink(genbuf);
- outmsg("行事曆刪除完畢");
+ vmsg("行事曆刪除完畢");
}
return 0;
}
@@ -907,7 +906,7 @@ ispersonalid(char *inid)
static char *
getregcode(char *buf)
{
- sprintf(buf, "%s", crypt(cuser->userid, "02"));
+ sprintf(buf, "%s", crypt(cuser.userid, "02"));
return buf;
}
@@ -946,7 +945,7 @@ toregister(char *email, char *genbuf, char *phone, char *career,
FILE *fn;
char buf[128];
- sethomefile(buf, cuser->userid, "justify.wait");
+ sethomefile(buf, cuser.userid, "justify.wait");
if (phone[0] != 0) {
fn = fopen(buf, "w");
assert(fn);
@@ -956,7 +955,7 @@ toregister(char *email, char *genbuf, char *phone, char *career,
}
clear();
stand_title("認證設定");
- if (cuser->userlevel & PERM_NOREGCODE){
+ if (cuser.userlevel & PERM_NOREGCODE){
strcpy(email, "x");
goto REGFORM2;
}
@@ -1013,12 +1012,12 @@ toregister(char *email, char *genbuf, char *phone, char *career,
"若您無 E-Mail 請輸入 x由站長手動認證");
}
}
- strncpy(cuser->email, email, sizeof(cuser->email));
+ strncpy(cuser.email, email, sizeof(cuser.email));
REGFORM2:
if (strcasecmp(email, "x") == 0) { /* 手動認證 */
if ((fn = fopen(fn_register, "a"))) {
fprintf(fn, "num: %d, %s", usernum, ctime(&now));
- fprintf(fn, "uid: %s\n", cuser->userid);
+ fprintf(fn, "uid: %s\n", cuser.userid);
fprintf(fn, "ident: %s\n", ident);
fprintf(fn, "name: %s\n", rname);
fprintf(fn, "career: %s\n", career);
@@ -1040,20 +1039,20 @@ toregister(char *email, char *genbuf, char *phone, char *career,
#endif
snprintf(genbuf, sizeof(genbuf),
"%s:%s:<Email>", phone, career);
- strncpy(cuser->justify, genbuf, REGLEN);
- sethomefile(buf, cuser->userid, "justify");
+ strncpy(cuser.justify, genbuf, REGLEN);
+ sethomefile(buf, cuser.userid, "justify");
}
snprintf(buf, sizeof(buf),
"您在 " BBSNAME " 的認證碼: %s", getregcode(genbuf));
- strlcpy(tmp, cuser->userid, sizeof(tmp));
- strlcpy(cuser->userid, "SYSOP", sizeof(cuser->userid));
+ strlcpy(tmp, cuser.userid, sizeof(tmp));
+ strlcpy(cuser.userid, "SYSOP", sizeof(cuser.userid));
#ifdef HAVEMOBILE
if (strcmp(email, "m") == 0 || strcmp(email, "M") == 0)
mobile_message(mobile, buf);
else
#endif
bsmtp("etc/registermail", buf, email, 0);
- strlcpy(cuser->userid, tmp, sizeof(cuser->userid));
+ strlcpy(cuser.userid, tmp, sizeof(cuser.userid));
outs("\n\n\n我們即將寄出認證信 (您應該會在 10 分鐘內收到)\n"
"收到後您可以跟據認證信標題的認證碼\n"
"輸入到 (U)ser -> (R)egister 後就可以完成註冊");
@@ -1185,7 +1184,7 @@ u_register(void)
char genbuf[200];
FILE *fn;
- if (cuser->userlevel & PERM_LOGINOK) {
+ if (cuser.userlevel & PERM_LOGINOK) {
outs("您的身份確認已經完成,不需填寫申請表");
return XEASY;
}
@@ -1194,7 +1193,7 @@ u_register(void)
if ((ptr = strchr(genbuf, '\n')))
*ptr = '\0';
if (strncmp(genbuf, "uid: ", 5) == 0 &&
- strcmp(genbuf + 5, cuser->userid) == 0) {
+ strcmp(genbuf + 5, cuser.userid) == 0) {
fclose(fn);
outs("您的註冊申請單尚在處理中,請耐心等候");
return XEASY;
@@ -1202,20 +1201,20 @@ u_register(void)
}
fclose(fn);
}
- strlcpy(ident, cuser->ident, sizeof(ident));
- strlcpy(rname, cuser->realname, sizeof(rname));
- strlcpy(addr, cuser->address, sizeof(addr));
- strlcpy(email, cuser->email, sizeof(email));
- snprintf(mobile, sizeof(mobile), "0%09d", cuser->mobile);
- if (cuser->month == 0 && cuser->day && cuser->year == 0)
+ strlcpy(ident, cuser.ident, sizeof(ident));
+ strlcpy(rname, cuser.realname, sizeof(rname));
+ strlcpy(addr, cuser.address, sizeof(addr));
+ strlcpy(email, cuser.email, sizeof(email));
+ snprintf(mobile, sizeof(mobile), "0%09d", cuser.mobile);
+ if (cuser.month == 0 && cuser.day && cuser.year == 0)
birthday[0] = 0;
else
snprintf(birthday, sizeof(birthday), "%02i/%02i/%02i",
- cuser->month, cuser->day, cuser->year % 100);
- sex_is[0] = (cuser->sex % 8) + '1';
+ cuser.month, cuser.day, cuser.year % 100);
+ sex_is[0] = (cuser.sex % 8) + '1';
sex_is[1] = 0;
career[0] = phone[0] = '\0';
- sethomefile(genbuf, cuser->userid, "justify.wait");
+ sethomefile(genbuf, cuser.userid, "justify.wait");
if ((fn = fopen(genbuf, "r"))) {
fgets(phone, 21, fn);
phone[strlen(phone) - 1] = 0;
@@ -1232,20 +1231,20 @@ u_register(void)
fclose(fn);
}
- if (cuser->userlevel & PERM_NOREGCODE) {
+ if (cuser.userlevel & PERM_NOREGCODE) {
vmsg("您不被允許\使用認證碼認證。請填寫註冊申請單");
goto REGFORM;
}
- if (cuser->year != 0 && /* 已經第一次填過了~ ^^" */
- strcmp(cuser->email, "x") != 0 && /* 上次手動認證失敗 */
- strcmp(cuser->email, "X") != 0) {
+ if (cuser.year != 0 && /* 已經第一次填過了~ ^^" */
+ strcmp(cuser.email, "x") != 0 && /* 上次手動認證失敗 */
+ strcmp(cuser.email, "X") != 0) {
clear();
stand_title("EMail認證");
move(2, 0);
prints("%s(%s) 您好,請輸入您的認證碼。\n"
"或您可以輸入 x來重新填寫 E-Mail 或改由站長手動認證\n",
- cuser->userid, cuser->username);
+ cuser.userid, cuser.username);
inregcode[0] = 0;
do{
getdata(10, 0, "您的輸入: ", inregcode, sizeof(inregcode), DOECHO);
@@ -1259,18 +1258,18 @@ u_register(void)
if (strcmp(inregcode, getregcode(regcode)) == 0) {
int unum;
- if ((unum = getuser(cuser->userid)) == 0) {
+ if ((unum = getuser(cuser.userid)) == 0) {
vmsg("系統錯誤,查無此人!");
u_exit("getuser error");
exit(0);
}
- mail_muser(*cuser, "[註冊成功\囉]", "etc/registeredmail");
- if(cuser->uflag2 & FOREIGN)
- mail_muser(*cuser, "[出入境管理局]", "etc/foreign_welcome");
- cuser->userlevel |= (PERM_LOGINOK | PERM_POST);
+ mail_muser(cuser, "[註冊成功\囉]", "etc/registeredmail");
+ if(cuser.uflag2 & FOREIGN)
+ mail_muser(cuser, "[出入境管理局]", "etc/foreign_welcome");
+ cuser.userlevel |= (PERM_LOGINOK | PERM_POST);
prints("\n註冊成功\, 重新上站後將取得完整權限\n"
"請按下任一鍵跳離後重新上站~ :)");
- sethomefile(genbuf, cuser->userid, "justify.wait");
+ sethomefile(genbuf, cuser.userid, "justify.wait");
unlink(genbuf);
pressanykey();
u_exit("registed");
@@ -1298,7 +1297,7 @@ u_register(void)
clear();
move(1, 0);
prints("%s(%s) 您好,請據實填寫以下的資料:",
- cuser->userid, cuser->username);
+ cuser.userid, cuser.username);
#ifdef FOREIGN_REG
fore[0] = 'y';
fore[1] = 0;
@@ -1394,10 +1393,10 @@ u_register(void)
len = strlen(birthday);
if (!len) {
snprintf(birthday, 9, "%02i/%02i/%02i",
- cuser->month, cuser->day, cuser->year % 100);
- mon = cuser->month;
- day = cuser->day;
- year = cuser->year;
+ cuser.month, cuser.day, cuser.year % 100);
+ mon = cuser.month;
+ day = cuser.day;
+ year = cuser.year;
} else if (len == 8) {
mon = (birthday[0] - '0') * 10 + (birthday[1] - '0');
day = (birthday[3] - '0') * 10 + (birthday[4] - '0');
@@ -1421,20 +1420,20 @@ u_register(void)
if (ans[0] == 'y')
break;
}
- strlcpy(cuser->ident, ident,11);
- strlcpy(cuser->realname, rname, 20);
- strlcpy(cuser->address, addr, 50);
- strlcpy(cuser->email, email, 50);
- cuser->mobile = atoi(mobile);
- cuser->sex = (sex_is[0] - '1') % 8;
- cuser->month = mon;
- cuser->day = day;
- cuser->year = year;
+ strlcpy(cuser.ident, ident,11);
+ strlcpy(cuser.realname, rname, 20);
+ strlcpy(cuser.address, addr, 50);
+ strlcpy(cuser.email, email, 50);
+ cuser.mobile = atoi(mobile);
+ cuser.sex = (sex_is[0] - '1') % 8;
+ cuser.month = mon;
+ cuser.day = day;
+ cuser.year = year;
#ifdef FOREIGN_REG
if (fore[0])
- cuser->uflag2 |= FOREIGN;
+ cuser.uflag2 |= FOREIGN;
else
- cuser->uflag2 &= ~FOREIGN;
+ cuser.uflag2 &= ~FOREIGN;
#endif
trim(career);
trim(addr);
@@ -1447,11 +1446,11 @@ u_register(void)
prints("最後Post一篇\033[32m自我介紹文章\033[m給大家吧,"
"告訴所有老骨頭\033[31m我來啦^$。\\n\n\n\n");
pressanykey();
- cuser->userlevel |= PERM_POST;
+ cuser.userlevel |= PERM_POST;
brc_initial_board("WhoAmI");
set_board();
do_post();
- cuser->userlevel &= ~PERM_POST;
+ cuser.userlevel &= ~PERM_POST;
return 0;
}
diff --git a/mbbsd/var.c b/mbbsd/var.c
index 526f5824..c9347b20 100644
--- a/mbbsd/var.c
+++ b/mbbsd/var.c
@@ -95,7 +95,7 @@ pid_t currpid; /* current process ID */
time_t login_start_time;
time_t start_time;
time_t paste_time;
-userec_t *cuser = NULL; /* current user structure */
+userec_t cuser; /* current user structure */
userec_t xuser; /* lookup user structure */
crosspost_t postrecord; /* anti cross post */
unsigned int currbrdattr;
diff --git a/mbbsd/vote.c b/mbbsd/vote.c
index b133ae3c..5dcaa432 100644
--- a/mbbsd/vote.c
+++ b/mbbsd/vote.c
@@ -872,7 +872,7 @@ user_vote_one(char *bname, int ind)
setbfile(buf, bname, STR_new_limited); /* Ptt */
if (dashf(buf)) {
setbfile(buf, bname, FN_CANVOTE);
- if (!belong(buf, cuser->userid)) {
+ if (!belong(buf, cuser.userid)) {
fclose(cfp);
vmsg("\n\n對不起! 這是私人投票..你並沒有受邀唷!");
return FULLUPDATE;
@@ -1035,7 +1035,7 @@ user_vote_one(char *bname, int ind)
fprintf(fcm,
"\033[36m○使用者\033[1;36m %s "
"\033[;36m的建議:\033[m\n",
- cuser->userid);
+ cuser.userid);
for (i = 0; i < 3; i++)
fprintf(fcm, " %s\n", mycomments[i]);
fprintf(fcm, "\n");
diff --git a/mbbsd/voteboard.c b/mbbsd/voteboard.c
index 7714b14e..3890df2a 100644
--- a/mbbsd/voteboard.c
+++ b/mbbsd/voteboard.c
@@ -62,7 +62,7 @@ do_voteboardreply(fileheader_t * fhdr)
if(yes>=0) continue;
strtok(genbuf+4," \n");
- if (!strncmp(genbuf + 4, cuser->userid, IDLEN)) {
+ if (!strncmp(genbuf + 4, cuser.userid, IDLEN)) {
move(5, 10);
prints("您已經連署過本篇了");
getdata(17, 0, "要修改您之前的連署嗎?(Y/N) [N]", opnion, 3, LCECHO);
@@ -111,27 +111,27 @@ do_voteboardreply(fileheader_t * fhdr)
now -= 14 * 24 * 60 * 60;
}
fprintf(fo, "%s", genbuf);
- len = strlen(cuser->userid);
+ len = strlen(cuser.userid);
for(yes=0; fgets(genbuf, sizeof(genbuf), fi);) {
if (!strncmp("----------", genbuf, 10))
break;
- if (strlen(genbuf)<30 || (genbuf[4+len]==' ' && !strncmp(genbuf + 4, cuser->userid, len)))
+ if (strlen(genbuf)<30 || (genbuf[4+len]==' ' && !strncmp(genbuf + 4, cuser.userid, len)))
continue;
fprintf(fo, "%3d.%s", ++yes, genbuf + 4);
}
if (opnion[0] == 'y')
- fprintf(fo, "%3d.%-15s%-34s 來源:%s\n", ++yes, cuser->userid, reason, cuser->lasthost);
+ fprintf(fo, "%3d.%-15s%-34s 來源:%s\n", ++yes, cuser.userid, reason, cuser.lasthost);
fprintf(fo, "%s", genbuf);
for(no=0; fgets(genbuf, sizeof(genbuf), fi);) {
if (!strncmp("----------", genbuf, 10))
break;
- if (strlen(genbuf)<30 || (genbuf[4+len]==' ' && !strncmp(genbuf + 4, cuser->userid, len)))
+ if (strlen(genbuf)<30 || (genbuf[4+len]==' ' && !strncmp(genbuf + 4, cuser.userid, len)))
continue;
fprintf(fo, "%3d.%s", ++no, genbuf + 4);
}
if (opnion[0] == 'n')
- fprintf(fo, "%3d.%-15s%-34s 來源:%s\n", ++no, cuser->userid, reason, cuser->lasthost);
+ fprintf(fo, "%3d.%-15s%-34s 來源:%s\n", ++no, cuser.userid, reason, cuser.lasthost);
fprintf(fo, "----------總計----------\n");
fprintf(fo, "支持人數:%-9d反對人數:%-9d\n", yes, no);
fprintf(fo, "\n--\n※ 發信站 :" BBSNAME "(" MYHOSTNAME
@@ -246,7 +246,7 @@ do_voteboard(int type)
completeboard_permission,
completeboard_getname);
snprintf(title, sizeof(title), "[連署板主] %s", topic);
- snprintf(genbuf, sizeof(genbuf), "%s\n\n%s%s\n%s%s", "連署板主", "英文名稱: ", topic, "申請 ID : ", cuser->userid);
+ snprintf(genbuf, sizeof(genbuf), "%s\n\n%s%s\n%s%s", "連署板主", "英文名稱: ", topic, "申請 ID : ", cuser.userid);
strcat(genbuf, "\n申請政見: \n");
break;
case 6:
@@ -275,7 +275,7 @@ do_voteboard(int type)
snprintf(title, sizeof(title), "[連署小組長] %s", topic);
snprintf(genbuf, sizeof(genbuf),
"%s\n\n%s%s\n%s%s", "連署小組長", "小組名稱: ",
- topic, "申請 ID : ", cuser->userid);
+ topic, "申請 ID : ", cuser.userid);
strcat(genbuf, "\n申請政見: \n");
break;
case 8:
@@ -294,7 +294,7 @@ do_voteboard(int type)
return FULLUPDATE;
snprintf(title, sizeof(title), "[申請新群組] %s", topic);
snprintf(genbuf, sizeof(genbuf), "%s\n\n%s%s\n%s%s",
- "申請群組", "群組名稱: ", topic, "申請 ID : ", cuser->userid);
+ "申請群組", "群組名稱: ", topic, "申請 ID : ", cuser.userid);
strcat(genbuf, "\n申請政見: \n");
break;
default:
@@ -325,13 +325,13 @@ do_voteboard(int type)
outs("開檔失敗,請稍候重來一次");
return FULLUPDATE;
}
- fprintf(fp, "%s%s %s%s\n%s%s\n%s%s", "作者: ", cuser->userid,
+ fprintf(fp, "%s%s %s%s\n%s%s\n%s%s", "作者: ", cuser.userid,
"看板: ", currboard,
"標題: ", title,
"時間: ", ctime(&now));
fprintf(fp, "%s\n", genbuf);
fclose(fp);
- strlcpy(votefile.owner, cuser->userid, sizeof(votefile.owner));
+ strlcpy(votefile.owner, cuser.userid, sizeof(votefile.owner));
strlcpy(votefile.title, title, sizeof(votefile.title));
votefile.filemode |= FILE_VOTE;
setbdir(genbuf, currboard);
diff --git a/mbbsd/xyz.c b/mbbsd/xyz.c
index 1d83fd41..e0b850b5 100644
--- a/mbbsd/xyz.c
+++ b/mbbsd/xyz.c
@@ -179,7 +179,7 @@ note()
} notedata_t;
notedata_t myitem;
- if (cuser->money < 5) {
+ if (cuser.money < 5) {
outmsg("\033[1;41m 哎呀! 要投五銀才能留言...沒錢耶..\033[m");
clrtoeol();
refresh();
@@ -201,8 +201,8 @@ note()
return 0;
} while (buf[0] == 'e');
demoney(-5);
- strcpy(myitem.userid, cuser->userid);
- strncpy(myitem.username, cuser->username, 18);
+ strcpy(myitem.userid, cuser.userid);
+ strncpy(myitem.username, cuser.username, 18);
myitem.username[18] = '\0';
myitem.date = now;
@@ -360,7 +360,7 @@ Goodbye()
return 0;
movie(999);
- if (cuser->userlevel) {
+ if (cuser.userlevel) {
getdata(b_lines - 1, 0,
"(G)隨風而逝 (M)托夢站長 (N)酸甜苦辣流言板?[G] ",
genbuf, 3, LCECHO);
@@ -373,8 +373,8 @@ Goodbye()
clear();
prints("\033[1;36m親愛的 \033[33m%s(%s)\033[36m,別忘了再度光臨\033[45;33m"
" %s \033[40;36m!\n以下是您在站內的註冊資料:\033[0m\n",
- cuser->userid, cuser->username, BBSName);
- user_display(cuser, 0);
+ cuser.userid, cuser.username, BBSName);
+ user_display(&cuser, 0);
pressanykey();
more("etc/Logout", NA);