summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/pttstruct.h11
-rw-r--r--mbbsd/admin.c14
-rw-r--r--mbbsd/mbbsd.c4
-rw-r--r--mbbsd/user.c44
4 files changed, 43 insertions, 30 deletions
diff --git a/include/pttstruct.h b/include/pttstruct.h
index 044704ad..80bbe7f3 100644
--- a/include/pttstruct.h
+++ b/include/pttstruct.h
@@ -1,4 +1,4 @@
-/* $Id: pttstruct.h,v 1.36 2003/05/09 07:44:48 victor Exp $ */
+/* $Id: pttstruct.h,v 1.37 2003/05/09 13:30:32 victor Exp $ */
#ifndef INCLUDE_STRUCT_H
#define INCLUDE_STRUCT_H
@@ -75,8 +75,7 @@ typedef struct userec_t {
char mind[4];
char ident[11];
unsigned int uflag2;
- char foreign;
- char pad[71];
+ char pad[72];
} userec_t;
/* these are flags in userec_t.uflag */
#define SIG_FLAG 0x3 /* signature number, 2 bits */
@@ -95,10 +94,8 @@ typedef struct userec_t {
#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 */
-
-/* these are flags in userec_t.foreign */
-#define FOREIGN 0x1
-#define LIVERIGHT 0x2
+#define FOREIGN 0x100 /* true if a foreign */
+#define LIVERIGHT 0x200 /* true if get "liveright" already */
#define BTLEN 48 /* Length of board title */
diff --git a/mbbsd/admin.c b/mbbsd/admin.c
index 4b87f98a..d021c2f0 100644
--- a/mbbsd/admin.c
+++ b/mbbsd/admin.c
@@ -1,4 +1,4 @@
-/* $Id: admin.c,v 1.33 2003/05/09 07:43:57 victor Exp $ */
+/* $Id: admin.c,v 1.34 2003/05/09 13:30:32 victor Exp $ */
#include "bbs.h"
/* 使用者管理 */
@@ -762,7 +762,6 @@ scan_register_form(char *regfile, int automode, int neednum)
char fdata[7][STRLEN];
char fname[STRLEN], buf[STRLEN];
char ans[4], *ptr, *uid;
- char foreign;
int n = 0, unum = 0;
int nSelf = 0, nAuto = 0;
@@ -822,12 +821,11 @@ scan_register_form(char *regfile, int automode, int neednum)
user_display(&muser, 1);
move(14, 0);
prints("\033[1;32m------------- 請站長嚴格審核使用者資料,您還有 %d 份---------------\033[m\n", neednum);
- for (n = 0; field[n]; n++) {
- if (n >= 2 && n <= 5)
- prints("%d.", n - 2);
- else
- prints(" ");
- prints("%-12s:%s\n", finfo[n], fdata[n]);
+ prints(" %-12s:%s\n", finfo[0], fdata[0]);
+ prints(" %-12s:%s\n", finfo[1], fdata[1]);
+ prints("1.%-12s:%s%s\n", finfo[n], fdata[n], muser.uflag2 & FOREIGN ? "外籍" : "");
+ for (n = 3; field[n]; n++) {
+ prints("%d.%-12s:%s\n", n - 2, finfo[n], fdata[n]);
}
if (muser.userlevel & PERM_LOGINOK) {
getdata(b_lines - 1, 0, "\033[1;32m此帳號已經完成註冊, "
diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c
index 77dc98e3..7fc41c85 100644
--- a/mbbsd/mbbsd.c
+++ b/mbbsd/mbbsd.c
@@ -1,4 +1,4 @@
-/* $Id: mbbsd.c,v 1.73 2003/05/09 07:53:55 victor Exp $ */
+/* $Id: mbbsd.c,v 1.74 2003/05/09 13:30:32 victor Exp $ */
#include "bbs.h"
#define SOCKET_QLEN 4
@@ -884,7 +884,7 @@ user_login()
if (!PERM_HIDE(currutmp))
cuser.lastlogin = login_start_time;
- if (cuser.foreign & FOREIGN){
+ if (cuser.uflag2 & (FOREIGN | LIVERIGHT)){
if (login_start_time - cuser.firstlogin > (FOREIGN_REG_DAY - 5) * 24 * 3600){
mail_muser(cuser, "[出入境管理局]", "etc/foreign_expired_warn");
}
diff --git a/mbbsd/user.c b/mbbsd/user.c
index 5568854b..58a67ef3 100644
--- a/mbbsd/user.c
+++ b/mbbsd/user.c
@@ -1,4 +1,4 @@
-/* $Id: user.c,v 1.53 2003/05/09 07:43:57 victor Exp $ */
+/* $Id: user.c,v 1.54 2003/05/09 13:30:32 victor Exp $ */
#include "bbs.h"
static char *sex[8] = {
@@ -51,12 +51,15 @@ user_display(userec_t * u, int real)
" 資 料 "
" \033[m \033[30;41m┴┬┴┬┴┬\033[m\n");
prints(" 代號暱稱: %s(%s)\n"
- " 真實姓名: %s %s\n"
+ " 真實姓名: %s %s%s\n"
" 居住住址: %s\n"
" 電子信箱: %s\n"
" 性 別: %s\n"
" 銀行帳戶: %d 銀兩\n",
- u->userid, u->username, u->realname, u->foreign & FOREIGN ? "(外籍)" : "", u->address, u->email,
+ u->userid, u->username, u->realname,
+ u->uflag2 & FOREIGN ? "(外籍: " : "",
+ u->uflag2 & LIVERIGHT ? "永久居留)" : "未取得居留權)",
+ u->address, u->email,
sex[u->sex % 8], u->money);
sethomedir(genbuf, u->userid);
@@ -309,7 +312,7 @@ uinfo_query(userec_t * u, int real, int unum)
if (real) {
getdata_buf(i++, 0, "真實姓名:",
x.realname, sizeof(x.realname), DOECHO);
- getdata_buf(i++, 0, cuser.foreign & FOREIGN ? "護照號碼" : "身分證號:",
+ getdata_buf(i++, 0, cuser.uflag2 & FOREIGN ? "護照號碼" : "身分證號:",
x.ident, sizeof(x.ident), DOECHO);
getdata_buf(i++, 0, "居住地址:",
x.address, sizeof(x.address), DOECHO);
@@ -433,12 +436,26 @@ uinfo_query(userec_t * u, int real, int unum)
x.chc_tie = atoi(p);
break;
}
- if (getdata_str(i++, 0, "國籍 1)本國 2)外國:", buf, 2, DOECHO, x.foreign & FOREIGN ? "2" : "1"))
- if ((fail = atoi(buf)) >= 0){
- if (fail == 0)
- x.foreign |= FOREIGN;
+ if (getdata_str(i++, 0, "國籍 1)本國 2)外國:", buf, 2, DOECHO, x.uflag2 & FOREIGN ? "2" : "1"))
+ if ((fail = atoi(buf)) > 0){
+ if (fail == 2){
+ x.uflag2 |= FOREIGN;
+ }
else
- x.foreign &= ~FOREIGN;
+ x.uflag2 &= ~FOREIGN;
+ }
+ if (x.uflag2 & FOREIGN)
+ if (getdata_str(i++, 0, "永久居留權 1)是 2)否:", buf, 2, DOECHO, x.uflag2 & LIVERIGHT ? "1" : "2")){
+ if ((fail = atoi(buf)) > 0){
+ if (fail == 1){
+ x.uflag2 |= LIVERIGHT;
+ x.userlevel |= (PERM_LOGINOK | PERM_POST);
+ }
+ else{
+ x.uflag2 &= ~LIVERIGHT;
+ x.userlevel &= ~(PERM_LOGINOK | PERM_POST);
+ }
+ }
}
fail = 0;
}
@@ -1093,9 +1110,7 @@ int
u_register(void)
{
char rname[21], addr[51], ident[12], mobile[21];
-//#ifdef FOREIGN_REG_DAY
char fore[2];
-//#endif
char phone[21], career[41], email[51], birthday[9], sex_is[2],
year, mon, day;
char inregcode[14], regcode[50];
@@ -1137,7 +1152,7 @@ u_register(void)
if ((fn = fopen(genbuf, "r"))) {
fgets(phone, 21, fn);
if(strcmp(ident, "#foreign") == 0){
- fore[0] |= FOREIGN;
+ fore[0] = 'y'; fore[1] = '\n';
fgets(ident, 21, fn);
}
phone[strlen(phone) - 1] = 0;
@@ -1317,7 +1332,10 @@ u_register(void)
cuser.month = mon;
cuser.day = day;
cuser.year = year;
- cuser.foreign = fore[0];
+ if (fore[0])
+ cuser.uflag2 |= FOREIGN;
+ else
+ cuser.uflag2 &= ~FOREIGN;
trim(career);
trim(addr);
trim(phone);