原程序由redhatpku提供,我改了查找ip部分
修改list.c,在deal_key里头增加
case '/'://down search id. added by redhatpku 2002.4.29
num=UseronlineSearch(num,1);
break;
case '?'://up search id .added by redhatpku 2002.4.29
num=UseronlineSearch(num,-1);
break;
同时增加如下函数
UseronlineSearch(curr_num,offset)
int curr_num;
int offset;
{
static char method[2],queryID[IDLEN+2],queryIP[20],queryNick[NAMELEN+2];
char ans[STRLEN+1], pmt[STRLEN];
strcpy(ans, method);
get_upper_str(ans,ans);
sprintf(pmt,"查找方式:(A)ID(B)呢称(C)IP[%s]:",ans);
move(t_lines - 1, 0);
clrtoeol();
getdata(t_lines - 1, 0,pmt, ans, 2, DOECHO, YEA);
if(!(ans[0]>='A'&&ans[0]<='C'||ans[0]>='a'&&ans[0]<='c'||ans[0]=='\0'))
return curr_num;
if(ans[0]!='\0')strcpy(method, ans);
switch(method[0]){
case 'A':
case 'a':
strcpy(ans, queryID);
sprintf(pmt, "搜寻%s的ID [%s]: ", offset > 0 ? "往后来"
: "往先前",ans);
move(t_lines - 1, 0);
clrtoeol();
getdata(t_lines - 1, 0, pmt, ans, IDLEN+1, DOECHO, YEA);
if (ans[0] != '\0')
strcpy(queryID, ans);
return IDSearch(queryID,curr_num,offset);
case 'B':
case 'b':
strcpy(ans, queryNick);
sprintf(pmt, "搜寻%s的呢称[%s]: ", offset > 0 ? "往后来"
: "往先前",ans);
move(t_lines - 1, 0);
clrtoeol();
getdata(t_lines - 1, 0, pmt, ans, NAMELEN+1, DOECHO, YEA
);
if (ans[0] != '\0')
strcpy(queryNick, ans);
return NickSearch(queryNick,curr_num,offset);
case 'C':
case 'c':
strcpy(ans, queryIP);
sprintf(pmt, "%s搜寻来自%s的ID: ", offset > 0 ? "往后来"
: "往先前",ans);
move(t_lines - 1, 0);
clrtoeol();
getdata(t_lines - 1, 0, pmt, ans, 17, DOECHO, YEA);
if (ans[0] != '\0')
strcpy(queryIP, ans);
return IPSearch(queryIP,curr_num,offset);
default :return curr_num;
}
}
int
IDSearch(query,curr_num,offset)
char query[STRLEN];
int curr_num;
int offset;
{
char upper_ID[IDLEN+2], upper_query[IDLEN+2];
int i;
get_upper_str(upper_query, query);
if(query[0]=='\0')return curr_num;
if(offset>0)
{
for (i=curr_num+1;i<range;i++)
{
get_upper_str(upper_ID, user_record[i]->userid);
if(!strncmp(upper_ID,upper_query,strlen(query)))
return i;
}
}
else if(offset<0)
{
for (i=curr_num-1;i>0;i--)
{
get_upper_str(upper_ID, user_record[i]->userid);
if(!strncmp(upper_ID,upper_query,strlen(query)))
return i;
}
}
return curr_num;
}
int
IPSearch(query,curr_num,offset)
char query[20];
int curr_num;
int offset;
{
int i;
if(query[0]=='\0')return curr_num;
if(offset>0)
{
for (i=curr_num+1;i<range;i++)
{
//yanglc 20021102
if(!strncmp(user_record[i]->from,query,strlen(query)))
return i;
}
}
else if(offset<0)
{
for (i=curr_num-1;i>0;i--)
{
//yanglc 20021102
if(!strncmp(user_record[i]->from,query,strlen(query)))
return i;
}
}
return curr_num;
}
int
NickSearch(query,curr_num,offset)
char query[STRLEN];
int curr_num;
int offset;
{
int i;
if (query[0]=='\0')return curr_num;
if(offset>0)
{
for (i=curr_num+1;i<range;i++)
{
if(!strncmp(user_record[i]->username,query,strlen(query)
))
return i;
}
}
else if(offset<0)
{
for (i=curr_num-1;i>0;i--)
{
if(!strncmp(user_record[i]->username,query,strlen(query)
))
return i;
}
}
return curr_num;
}
--
FROM 162.105.67.39