From 3e2ae6ca365f880a3a35bd9e69c6607fb69c15fb Mon Sep 17 00:00:00 2001 From: piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> Date: Wed, 13 Feb 2008 16:39:32 +0000 Subject: - improved user searching git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3914 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/admin.c | 72 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 21 deletions(-) (limited to 'mbbsd') diff --git a/mbbsd/admin.c b/mbbsd/admin.c index 1e5b515c..a49bed21 100644 --- a/mbbsd/admin.c +++ b/mbbsd/admin.c @@ -97,12 +97,25 @@ search_key_user(const char *passwdfile, int mode) int coun = 0; FILE *fp1 = fopen(passwdfile, "r"); char friendfile[128]="", key[22], *keymatch; - + int keytype = 0; assert(fp1); clear(); - getdata(0, 0, mode ? "�п�J�ϥΪ�����r[�q��|�a�}|�m�W|�W���a�I|" - "email|�p��id] :" : "�п�Jid :", key, sizeof(key), DOECHO); + if (!mode) + { + getdata(0, 0, "�п�Jid :", key, sizeof(key), DOECHO); + } else { + // improved search + getdata(0, 0, "�j�M�������?" + "([0]���� 1.ID 2.�m�W 3.�ʺ� 4.�a�} 5.email 6.IP 7.�{��/�q��) ", + key, 2, DOECHO); + if (isascii(key[0]) && isdigit(key[0])) + keytype = key[0] - '0'; + if (keytype < 0 || keytype > 7) + keytype = 0; + getdata(0, 0, "�п�J����r: ", key, sizeof(key), DOECHO); + } + if(!key[0]) { fclose(fp1); return 0; @@ -113,30 +126,47 @@ search_key_user(const char *passwdfile, int mode) if (!user.userid[0]) continue; - if (!(++coun & 15)) { + if (!(++coun & 0xFF)) { move(1, 0); prints("�� [%d] �����\n", coun); refresh(); } + keymatch = NULL; - if (!strcasecmp(user.userid, key)) - keymatch = user.userid; - else if(mode) { - if(strstr(user.realname, key)) - keymatch = user.realname; - else if(strstr(user.nickname, key)) - keymatch = user.nickname; - else if(strstr(user.lasthost, key)) - keymatch = user.lasthost; - else if(strcasestr(user.email, key)) - keymatch = user.email; - else if(strstr(user.address, key)) - keymatch = user.address; - else if(strstr(user.justify, key)) - keymatch = user.justify; - else if(strstr(user.mychicken.name, key)) - keymatch = user.mychicken.name; + + if (!mode) + { + // only verify id + if (!strcasecmp(user.userid, key)) + keymatch = user.userid; + } else { + // search by keytype + if ((!keytype || keytype == 1) && + strcasestr(user.userid, key)) + keymatch = user.userid; + else if ((!keytype || keytype == 2) && + strcasestr(user.realname, key)) + keymatch = user.realname; + else if ((!keytype || keytype == 3) && + strcasestr(user.nickname, key)) + keymatch = user.nickname; + else if ((!keytype || keytype == 4) && + strcasestr(user.address, key)) + keymatch = user.address; + else if ((!keytype || keytype == 5) && + strcasestr(user.email, key)) + keymatch = user.email; + else if ((!keytype || keytype == 6) && + strcasestr(user.lasthost, key)) + keymatch = user.lasthost; + else if ((!keytype || keytype == 7) && + strcasestr(user.justify, key)) + keymatch = user.justify; + else if ((!keytype) && + strcasestr(user.mychicken.name, key)) + keymatch = user.mychicken.name; } + if(keymatch) { move(1, 0); prints("�� [%d] �����\n", coun); -- cgit v1.2.3