diff options
-rw-r--r-- | include/proto.h | 2 | ||||
-rw-r--r-- | mbbsd/admin.c | 6 | ||||
-rw-r--r-- | mbbsd/bbs.c | 10 | ||||
-rw-r--r-- | mbbsd/cache.c | 10 | ||||
-rw-r--r-- | mbbsd/cal.c | 2 | ||||
-rw-r--r-- | mbbsd/friend.c | 6 | ||||
-rw-r--r-- | mbbsd/gamble.c | 2 | ||||
-rw-r--r-- | mbbsd/lovepaper.c | 2 | ||||
-rw-r--r-- | mbbsd/mail.c | 19 | ||||
-rw-r--r-- | mbbsd/passwd.c | 2 | ||||
-rw-r--r-- | mbbsd/register.c | 6 | ||||
-rw-r--r-- | mbbsd/talk.c | 8 | ||||
-rw-r--r-- | mbbsd/user.c | 8 | ||||
-rw-r--r-- | util/BM_money.c | 2 | ||||
-rw-r--r-- | util/angel.c | 2 | ||||
-rw-r--r-- | util/chesscountry.c | 4 | ||||
-rw-r--r-- | util/chkhbf.c | 2 | ||||
-rw-r--r-- | util/deluserfile.c | 2 | ||||
-rw-r--r-- | util/expire.c | 1 | ||||
-rw-r--r-- | util/openticket.c | 2 | ||||
-rw-r--r-- | util/reaper.c | 2 | ||||
-rw-r--r-- | util/shmctl.c | 2 | ||||
-rw-r--r-- | util/xchatd.c | 4 |
23 files changed, 53 insertions, 53 deletions
diff --git a/include/proto.h b/include/proto.h index 1d8e667c..7d77439c 100644 --- a/include/proto.h +++ b/include/proto.h @@ -115,7 +115,7 @@ void brc_addlist(const char* fname); void sort_bcache(void); int getuser(char *userid, userec_t *xuser); void setuserid(int num, char *userid); -int searchuser(char *userid); +int searchuser(const char *userid, char *rightid); int getbnum(const char *bname); void reset_board(int bid); void touch_boards(void); diff --git a/mbbsd/admin.c b/mbbsd/admin.c index 70018a2f..6251d239 100644 --- a/mbbsd/admin.c +++ b/mbbsd/admin.c @@ -127,7 +127,7 @@ search_key_user(char *passwdfile, int mode) return 0; } if (ch == 's' && !mode) { - if ((ch = searchuser(user.userid))) { + if ((ch = searchuser(user.userid, user.userid))) { setumoney(ch, user.money); passwd_update(ch, &user); fclose(fp1); @@ -151,7 +151,7 @@ search_key_user(char *passwdfile, int mode) exit(1); } setuserid(allocid, user.userid); - if (!searchuser(user.userid)) { + if (!searchuser(user.userid, NULL)) { fprintf(stderr, "無法建立帳號\n"); exit(1); } @@ -1345,7 +1345,7 @@ give_id_money(char *user_id, int money, FILE * log_fp, char *mail_title, time4_t { char tt[TTLEN + 1] = {0}; - if (deumoney(searchuser(user_id), money) < 0) { // TODO if searchuser() return 0 + if (deumoney(searchuser(user_id, NULL), money) < 0) { // TODO if searchuser() return 0 move(12, 0); clrtoeol(); prints("id:%s money:%d 不對吧!!", user_id, money); diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c index 3a43f74d..dd1aefb8 100644 --- a/mbbsd/bbs.c +++ b/mbbsd/bbs.c @@ -201,7 +201,7 @@ readdoent(int num, fileheader_t * ent) (uentp = search_ulist_userid(ent->owner)) && isvisible(currutmp, uentp)) isonline = 1; #else - if (!strchr(ent->owner, '.') && (uid = searchuser(ent->owner)) && + if (!strchr(ent->owner, '.') && (uid = searchuser(ent->owner, NULL)) && !SHM->GV2.e.noonlineuser && (uentp = search_ulist(uid)) && isvisible(currutmp, uentp)) isonline = 1; @@ -860,7 +860,7 @@ invalid_brdname(char *brd) static int b_call_in(int ent, fileheader_t * fhdr, char *direct) { - userinfo_t *u = search_ulist(searchuser(fhdr->owner)); + userinfo_t *u = search_ulist(searchuser(fhdr->owner, NULL)); if (u) { int fri_stat; fri_stat = friend_stat(currutmp, u); @@ -1898,7 +1898,7 @@ del_post(int ent, fileheader_t * fhdr, char *direct) * see do_general() */ tusernum = fhdr->multi.anon_uid; else - tusernum = searchuser(fhdr->owner); + tusernum = searchuser(fhdr->owner, NULL); if (strcmp(bp->brdname, "Security") == 0) return DONOTHING; @@ -2379,7 +2379,7 @@ good_post(int ent, fileheader_t * fhdr, char *direct) fhdr->filemode = (fhdr->filemode & ~FILE_DIGEST); if (!strcmp(currboard, "Note") || !strcmp(currboard, "PttBug") || !strcmp(currboard, "Artdsn") || !strcmp(currboard, "PttLaw")) { - deumoney(searchuser(fhdr->owner), -1000); // TODO if searchuser() return 0 + deumoney(searchuser(fhdr->owner, NULL), -1000); // TODO if searchuser() return 0 if (!(currmode & MODE_SELECT)) fhdr->multi.money -= 1000; else @@ -2418,7 +2418,7 @@ good_post(int ent, fileheader_t * fhdr, char *direct) fhdr->filemode = (fhdr->filemode & ~FILE_MARKED) | FILE_DIGEST; if (!strcmp(currboard, "Note") || !strcmp(currboard, "PttBug") || !strcmp(currboard, "Artdsn") || !strcmp(currboard, "PttLaw")) { - deumoney(searchuser(fhdr->owner), 1000); // TODO if searchuser() return 0 + deumoney(searchuser(fhdr->owner, NULL), 1000); // TODO if searchuser() return 0 if (!(currmode & MODE_SELECT)) fhdr->multi.money += 1000; else diff --git a/mbbsd/cache.c b/mbbsd/cache.c index 09116154..98a06563 100644 --- a/mbbsd/cache.c +++ b/mbbsd/cache.c @@ -192,7 +192,7 @@ remove_from_uhash(int n) #warning "searchuser() average chaining MAX_USERS/(1<<HASH_BITS) times." #endif int -searchuser(char *userid) +searchuser(const char *userid, char *rightid) { int h, p, times; h = StringHash(userid)%(1<<HASH_BITS); @@ -200,7 +200,7 @@ searchuser(char *userid) for (times = 0; times < MAX_USERS && p != -1 && p < MAX_USERS ; ++times) { if (strcasecmp(SHM->userid[p], userid) == 0) { - if(userid[0]) strcpy(userid, SHM->userid[p]); + if(userid[0] && rightid) strcpy(rightid, SHM->userid[p]); return p + 1; } p = SHM->next_in_hash[p]; @@ -214,7 +214,7 @@ getuser(char *userid, userec_t *xuser) { int uid; - if ((uid = searchuser(userid))) { + if ((uid = searchuser(userid, NULL))) { passwd_query(uid, xuser); xuser->money = moneyof(uid); } @@ -795,7 +795,7 @@ void buildBMcache(int bid) /* bid starts from 1 */ for( ptr = strtok(s, " "), i = 0 ; i < MAX_BMs && ptr != NULL ; ptr = strtok(NULL, " "), ++i ) - if( (uid = searchuser(ptr)) != 0 ) + if( (uid = searchuser(ptr, NULL)) != 0 ) SHM->BMcache[bid-1][i] = uid; for( ; i < MAX_BMs ; ++i ) SHM->BMcache[bid-1][i] = -1; @@ -1006,7 +1006,7 @@ hbflreload(int bid) break; } if (strcasecmp("guest", buf) == 0 || - (uid = searchuser(buf)) == 0) { + (uid = searchuser(buf, NULL)) == 0) { --num; continue; } diff --git a/mbbsd/cal.c b/mbbsd/cal.c index edc96a9c..1b2c054e 100644 --- a/mbbsd/cal.c +++ b/mbbsd/cal.c @@ -382,7 +382,7 @@ p_give(void) tax = give_tax(money); if (money - tax <= 0) return 0; /* 繳完稅就沒錢給了 */ - deumoney(searchuser(id), money - tax); // TODO if searchuser(id) return 0 + deumoney(searchuser(id, id), money - tax); // TODO if searchuser(id) return 0 demoney(-money); log_file(FN_MONEY, LOG_CREAT | LOG_VF, "%s\t給%s\t%d\t%s", cuser.userid, id, money - tax, ctime4(&now)); diff --git a/mbbsd/friend.c b/mbbsd/friend.c index 2e487975..76d1fd88 100644 --- a/mbbsd/friend.c +++ b/mbbsd/friend.c @@ -268,7 +268,7 @@ inline void friend_load_real(int tosort, int maxf, --maxf; /* 因為最後一個要填 0, 所以先扣一個回來 */ while( fgets(genbuf, STRLEN, fp) && nFriends < maxf ) if( strtok(genbuf, str_space) && - (uid = searchuser(genbuf)) ) + (uid = searchuser(genbuf, NULL)) ) tarray[nFriends++] = uid; fclose(fp); @@ -310,7 +310,7 @@ friend_water(char *message, int type) int tuid; sscanf(line, "%s", userid); // XXX check buffer size - if ((tuid = searchuser(userid)) && tuid != usernum && + if ((tuid = searchuser(userid, NULL)) && tuid != usernum && (uentp = (userinfo_t *) search_ulist(tuid)) && isvisible_uid(tuid)) my_write(uentp->pid, message, uentp->userid, WATERBALL_PREEDIT, NULL); @@ -370,7 +370,7 @@ friend_edit(int type) if (*uident == 'a') { move(1, 0); usercomplete(msg_uid, uident); - if (uident[0] && searchuser(uident) && !InNameList(uident)) { + if (uident[0] && searchuser(uident, uident) && !InNameList(uident)) { friend_add(uident, type, NULL); dirty = 1; } diff --git a/mbbsd/gamble.c b/mbbsd/gamble.c index 235cdf42..85761fa0 100644 --- a/mbbsd/gamble.c +++ b/mbbsd/gamble.c @@ -330,7 +330,7 @@ openticket(int bid) snprintf(buf, sizeof(buf), "%s 中獎咧! $ %d", bh->brdname, money * i); } else continue; - if ((uid = searchuser(userid)) == 0) + if ((uid = searchuser(userid, userid)) == 0) continue; deumoney(uid, money * i); mail_id(userid, buf, "etc/ticket.win", "Ptt賭場"); diff --git a/mbbsd/lovepaper.c b/mbbsd/lovepaper.c index 5d0eb59c..f9018464 100644 --- a/mbbsd/lovepaper.c +++ b/mbbsd/lovepaper.c @@ -25,7 +25,7 @@ x_love(void) if (!getdata(7, 0, "收信人:", receiver, sizeof(receiver), DOECHO)) return 0; - if (receiver[0] && !(searchuser(receiver) && + if (receiver[0] && !(searchuser(receiver, receiver) && getdata(8, 0, "主 題:", save_title, sizeof(save_title), DOECHO))) { move(10, 0); diff --git a/mbbsd/mail.c b/mbbsd/mail.c index 82263f74..9fb5ecca 100644 --- a/mbbsd/mail.c +++ b/mbbsd/mail.c @@ -66,7 +66,7 @@ mailalert(char *userid) userinfo_t *uentp = NULL; int n, tuid, i; - if ((tuid = searchuser(userid)) == 0) + if ((tuid = searchuser(userid, NULL)) == 0) return -1; n = count_logins(tuid, 0); @@ -357,7 +357,7 @@ multi_list(int *reciper) move(2, 0); clrtoeol(); - if (!searchuser(uid)) + if (!searchuser(uid, uid)) outs(err_uid); else if (!InNameList(uid)) { AddNameList(uid); @@ -435,7 +435,7 @@ multi_send(char *title) if (listing) { strtok(ptr = genbuf + 3, " \n\r"); do { - if (searchuser(ptr) && !InNameList(ptr) && + if (searchuser(ptr, ptr) && !InNameList(ptr) && strcmp(cuser.userid, ptr)) { AddNameList(ptr); reciper++; @@ -502,7 +502,7 @@ multi_send(char *title) outc(' '); } outs(p->word); - if (searchuser(p->word) && strcmp(STR_GUEST, p->word)) + if (searchuser(p->word, p->word) && strcmp(STR_GUEST, p->word)) sethomepath(genbuf, p->word); else continue; @@ -1417,20 +1417,21 @@ send_inner_mail(char *fpath, char *title, char *receiver) { char genbuf[256]; fileheader_t mymail; + char rightid[IDLEN+1]; - if (!searchuser(receiver)) + if (!searchuser(receiver, rightid)) return -2; /* to avoid DDOS of disk */ - sethomedir(genbuf, receiver); + sethomedir(genbuf, rightid); // XXX should we use MAX_EXKEEPMAIL instead? if (dashs(genbuf) >= 2048 * sizeof(fileheader_t)) { return -2; } - sethomepath(genbuf, receiver); + sethomepath(genbuf, rightid); stampfile(genbuf, &mymail); - if (!strcmp(receiver, cuser.userid)) { + if (!strcmp(rightid, cuser.userid)) { strlcpy(mymail.owner, "[" BBSNAME "]", sizeof(mymail.owner)); mymail.filemode = FILE_READ; } else @@ -1438,7 +1439,7 @@ send_inner_mail(char *fpath, char *title, char *receiver) strncpy(mymail.title, title, TTLEN); unlink(genbuf); Copy(fpath, genbuf); - sethomedir(genbuf, receiver); + sethomedir(genbuf, rightid); return append_record_forward(genbuf, &mymail, sizeof(mymail)); } diff --git a/mbbsd/passwd.c b/mbbsd/passwd.c index 5f6100be..1c5ee2f8 100644 --- a/mbbsd/passwd.c +++ b/mbbsd/passwd.c @@ -102,7 +102,7 @@ int initcuser(char *userid) { // Ptt: setup cuser and usernum here if(userid[0]=='\0' || - !(usernum = searchuser(userid)) || usernum > MAX_USERS) + !(usernum = searchuser(userid, NULL)) || usernum > MAX_USERS) return -1; passwd_query(usernum, &cuser); return usernum; diff --git a/mbbsd/register.c b/mbbsd/register.c index 7786c26e..8d47a30c 100644 --- a/mbbsd/register.c +++ b/mbbsd/register.c @@ -147,7 +147,7 @@ getnewuserid(void) clock = now; /* Lazy method : 先找尋已經清除的過期帳號 */ - if ((i = searchuser("")) == 0) { + if ((i = searchuser("", NULL)) == 0) { /* 每 1 個小時,清理 user 帳號一次 */ if ((stat(fn_fresh, &st) == -1) || (st.st_mtime < clock - 3600)) { if ((fd = open(fn_fresh, O_RDWR | O_CREAT, 0600)) == -1) @@ -169,7 +169,7 @@ getnewuserid(void) } } passwd_lock(); - i = searchuser(""); + i = searchuser("", NULL); if ((i <= 0) || (i > MAX_USERS)) { passwd_unlock(); vmsg("抱歉,使用者帳號已經滿了,無法註冊新的帳號"); @@ -217,7 +217,7 @@ new_register(void) } getdata(17, 0, msg_uid, newuser.userid, sizeof(newuser.userid), DOECHO); - strcpy(passbuf, newuser.userid); //PTT: getuser會修修修正 + strcpy(passbuf, newuser.userid); if (bad_user_id(passbuf)) outs("無法接受這個代號,請使用英文字母,並且不要包含空格\n"); diff --git a/mbbsd/talk.c b/mbbsd/talk.c index 00ff1c83..c89017d3 100644 --- a/mbbsd/talk.c +++ b/mbbsd/talk.c @@ -361,12 +361,12 @@ chicken_query(char *userid) time_diff(&(xuser.mychicken)); if (!isdeadth(&(xuser.mychicken))) { show_chicken_data(&(xuser.mychicken), NULL); - prints("\n\n以上是 %s 的寵物資料..", userid); + prints("\n\n以上是 %s 的寵物資料..", xuser.userid); } } else { move(1, 0); clrtobot(); - prints("\n\n%s 並沒有養寵物..", userid); + prints("\n\n%s 並沒有養寵物..", xuser.userid); } pressanykey(); } @@ -438,7 +438,7 @@ my_query(char *uident) if ((uentp && ((fri_stat & HFM) || strcmp(muser.userid,cuser.userid) == 0) && !uentp->invisible)) prints("《 性 別 》%-28.28s\n", sex[muser.sex % 8]); - showplans(uident); + showplans(muser.userid); pressanykey(); return FULLUPDATE; } @@ -2796,7 +2796,7 @@ t_talk(void) return 0; move(3, 0); - if (!(tuid = searchuser(uident)) || tuid == usernum) { + if (!(tuid = searchuser(uident, uident)) || tuid == usernum) { outs(err_uid); pressanykey(); return 0; diff --git a/mbbsd/user.c b/mbbsd/user.c index 5205f6e2..2559bdc3 100644 --- a/mbbsd/user.c +++ b/mbbsd/user.c @@ -441,7 +441,7 @@ uinfo_query(userec_t * u, int real, int unum) x.myangel); if(buf[0] == 0 || (getuser(buf, &xuser) && (xuser.userlevel & PERM_ANGEL))){ - strlcpy(x.myangel, buf, IDLEN + 1); + strlcpy(x.myangel, xuser.userid, IDLEN + 1); ++i; break; } @@ -619,7 +619,7 @@ uinfo_query(userec_t * u, int real, int unum) outs("\n不輸入則無法更改\n"); fail++; break; - } else if (!(uid = searchuser(witness[i]))) { + } else if (!(uid = searchuser(witness[i], NULL))) { outs("\n查無此使用者\n"); fail++; break; @@ -675,7 +675,7 @@ uinfo_query(userec_t * u, int real, int unum) case '5': if (getdata_str(b_lines - 3, 0, "新的使用者代號:", genbuf, IDLEN + 1, DOECHO, x.userid)) { - if (searchuser(genbuf)) { + if (searchuser(genbuf, NULL)) { outs("錯誤! 已經有同樣 ID 的使用者"); fail++; } else @@ -1350,7 +1350,7 @@ u_register(void) if (strcmp(inregcode, getregcode(regcode)) == 0) { int unum; - if ((unum = searchuser(cuser.userid)) == 0) { + if ((unum = searchuser(cuser.userid, NULL)) == 0) { vmsg("系統錯誤,查無此人!"); u_exit("getuser error"); exit(0); diff --git a/util/BM_money.c b/util/BM_money.c index 7a8021e9..8421f8cf 100644 --- a/util/BM_money.c +++ b/util/BM_money.c @@ -86,7 +86,7 @@ int main(int argc, char **argv) char *ch1,uid ; if((ch1 = strchr(ch, '/'))) *ch1 = 0; - if ((uid=searchuser(ch))!=0) + if ((uid=searchuser(ch, ch))!=0) { char genbuf[200]; diff --git a/util/angel.c b/util/angel.c index 247f4f02..9e1f3880 100644 --- a/util/angel.c +++ b/util/angel.c @@ -57,7 +57,7 @@ void readData(){ while (fread(&user, sizeof(userec_t), 1, fp) == 1) { ++j; /* j == uid */ if (user.myangel[0]) { - i = searchuser(user.myangel); + i = searchuser(user.myangel, NULL); if (i) ++total[i]; } diff --git a/util/chesscountry.c b/util/chesscountry.c index 605efdf3..478db07f 100644 --- a/util/chesscountry.c +++ b/util/chesscountry.c @@ -109,9 +109,8 @@ main(void) strcpy(str, buf); p = strtok(buf, " "); name[0] = '\0'; - if (p && *p != '#' && searchuser(p)) + if (p && *p != '#' && searchuser(p, userid)) { - strlcpy(userid, p, sizeof(userid)); i = 1; if ((p = strtok(NULL, " "))) @@ -131,7 +130,6 @@ main(void) } if (!strcmp("除名", name)) { - // XXX if userid="../../......." sethomefile(buf, userid, photo_fname); unlink(buf); continue; diff --git a/util/chkhbf.c b/util/chkhbf.c index df3dc048..d4ad5e24 100644 --- a/util/chkhbf.c +++ b/util/chkhbf.c @@ -33,7 +33,7 @@ void informBM(char *userid, boardheader_t *bptr, int nEXP) char filename[256], buf[64]; fileheader_t mymail; FILE *fp; - if( !(uid = searchuser(userid)) ) + if( !(uid = searchuser(userid, userid)) ) return; sprintf(filename, BBSHOME "/home/%c/%s", userid[0], userid); stampfile(filename, &mymail); diff --git a/util/deluserfile.c b/util/deluserfile.c index 83849b6c..0fa33192 100644 --- a/util/deluserfile.c +++ b/util/deluserfile.c @@ -127,7 +127,7 @@ int main(int argc, char **argv) { if (!(count++ % 300)) printf(".\n"); - if (!searchuser(ptr)) + if (!searchuser(ptr, ptr)) mv_user_home(ptr); else del_file(ptr); diff --git a/util/expire.c b/util/expire.c index 7268b64f..7acb735a 100644 --- a/util/expire.c +++ b/util/expire.c @@ -77,6 +77,7 @@ void expire(life_t *brd) total = state.st_size / sizeof(head); sprintf(tmpfile, "%s.new", index); unlink(tmpfile); + // TODO use fread/fwrite to reduce system calls if ((fdw = open(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0644)) > 0) { while (read(fdr, &head, sizeof head) == sizeof head) diff --git a/util/openticket.c b/util/openticket.c index 4bd761a3..2257911b 100644 --- a/util/openticket.c +++ b/util/openticket.c @@ -157,7 +157,7 @@ int main(int argc, char **argv) { printf("恭喜 %-15s買了%9d 張 %s, 獲得 %d 枚P幣\n" ,userid, num, betname[mybet], money * num); - if((uid=searchuser(userid))==0) continue; + if((uid=searchuser(userid, userid))==0) continue; deumoney(uid, money * num); sprintf(genbuf, BBSHOME "/home/%c/%s", userid[0], userid); stampfile(genbuf, &mymail); diff --git a/util/reaper.c b/util/reaper.c index 5c065a71..348224e9 100644 --- a/util/reaper.c +++ b/util/reaper.c @@ -31,7 +31,7 @@ int check(int n, userec_t *u) { /* expired */ int unum; - unum = searchuser(u->userid); + unum = searchuser(u->userid, u->userid); strcpy(buf, ctime4(&u->lastlogin)); syslog(LOG_NOTICE, "kill user(%d): %s %s", unum, u->userid, buf); sprintf(buf, "mv home/%c/%s tmp/", u->userid[0], u->userid); diff --git a/util/shmctl.c b/util/shmctl.c index 51f560c8..c4cb6870 100644 --- a/util/shmctl.c +++ b/util/shmctl.c @@ -195,7 +195,7 @@ int utmpfix(int argc, char **argv) clean = "too many/less friend"; addkilllist(which); } - else if( searchuser(SHM->uinfo[which].userid) == 0 ){ + else if( searchuser(SHM->uinfo[which].userid, NULL) == 0 ){ clean = "user not exist"; addkilllist(which); } diff --git a/util/xchatd.c b/util/xchatd.c index df91ccb6..4051b3d0 100644 --- a/util/xchatd.c +++ b/util/xchatd.c @@ -165,7 +165,7 @@ acct_load(ACCT *acct, char *userid) if(random()%8==0) acct->userlevel |= PERM_SYSOP; return atoi(userid); #endif - if((id=searchuser(userid))<0) + if((id=searchuser(userid, NULL))<0) return -1; return get_record(FN_PASSWD, acct, sizeof(ACCT), id); } @@ -1559,7 +1559,7 @@ login_user(ChatUser *cu, char *msg) #ifdef SELFTEST utent = atoi(userid)+1; #else - utent = searchuser(acct.userid); + utent = searchuser(acct.userid, NULL); #endif assert(utent); |