代码参考,loquat请进。
本帖最后由 along1976 于 2012-1-15 12:38 编辑//代码参考,站内短信发不了
int IsBlack(char *szNo)
{
int f,nRet=0;//返回值
int rsize=0,fsize=0;
unsigned int err;
char *buf=0;
char fname="0:\\Misc\\Black.tmo"; // tmo文件名
if ((f=fopen(fname, A_ReadOnly+A_BIN, 0, &err))==-1)
{
return 0;
}
fsize=lseek(f,0,S_END,&err,&err);
lseek(f,0,S_SET,&err,&err);
if (fsize<=0 || (buf=malloc(fsize+1))==0)
{
fclose(f,&err);
return 0;
}
rsize = fread(f,buf,fsize,&err);
buf = 0;
fclose(f, &err);
if(rsize == fsize)
{
char black=0; //黑名单标识
char c,*p=buf, *p2;
char szTemp,szInfo;
unsigned short wst_b;
WSHDR *wst, _wst;
wst=CreateLocalWS(&_wst, wst_b, 60);
GetProvAndCity(wst->wsbody, szNo); //获取省和城市名
ws2gb(wst, szInfo, 0);
p2 =szTemp;
while( *p )
{
c = *p;
if(c == '{') //黑名单开始
black = 1;
if(c > 0x7f)
{
*p2++ = c;
}
if(c == ';') // 分割符
{
*p2 = 0;
if( strstr(szInfo, szTemp) )
{
if( black )
nRet = 1;
else
nRet = -1;
break;
}
else
p2 = szTemp;
}
p++;
}
}
mfree(buf);
buf=0;
return nRet;
}
代码收到,先测试一下。。。 本帖最后由 loquat 于 2012-1-15 16:08 编辑
while那部分需要改一改,打算多设置几个接口
怎么结束黑名单和白名单?
int IsBlack(char *szNo)
{
int f,nRet=0;//返回值
int rsize=0,fsize=0;
unsigned int err;
char *buf=0;
char fname="0:\\Misc\\Black.tmo"; // tmo文件名
if ((f=fopen(fname, A_ReadOnly+A_BIN, 0, &err))==-1)
{
return 0;
}
fsize=lseek(f,0,S_END,&err,&err);
lseek(f,0,S_SET,&err,&err);
if (fsize<=0 || (buf=malloc(fsize+1))==0)
{
fclose(f,&err);
return 0;
}
rsize = fread(f,buf,fsize,&err);
buf = 0;
fclose(f, &err);
if(rsize == fsize)
{
char black=0; //黑名单标识
char c,*p=buf, *p2;
char szTemp,szInfo;
unsigned short wst_b;
WSHDR *wst, _wst;
wst=CreateLocalWS(&_wst, wst_b, 60);
GetCalleeNumber(IsCalling(), wst); //获取拨入号码
GetProvAndCity(wst->wsbody, szNo); //获取省和城市名
ws2gb(wst, szInfo, 0);
p2 =szTemp;
while( *p )
{
c = *p;
if(c == '[')
black = 1; //黑名单开始
if(c == '{')
white = 1; //白名单开始
if(c > 0x7f)
{*p2++ = c;}
if(c == ';') // 分割符
{
*p2 = 0;
if( strstr(szInfo, szTemp) )
{
if( black )
nRet = 1;
else if( white )
nRet = -1;
else
nRet = 0;
break;
}
else
p2 = szTemp;
}
p++;
}
}
mfree(buf);
buf=0;
return nRet;
}
拨入号码在黑名单中,返回1,
拨入号码在白名单中,返回-1
拨入号码不在以上两个列表中,返回0 GetCalleeNumber(IsCalling(), wst); //获取拨入号码
wst=CreateLocalWS(&_wst, wst_b, 60);这两句要反一下 楼上是冰大吧:) 你们还能记得住网址?
页:
[1]