大家多提意见,以便改进
src/edit.c
#define RETURN(n) { \
fclose(fp); \
free(tmp2); \
return n; \
}
int bad_words(char *words)
{
FILE *fp;
char which[100];
char badstr[100]="~!@ #$.%^&*()[]{}_+-|=\\`;,:'\"?<>/\n\t\r";
char *tmp,*tmp2;
int i,l,j;
l=strlen(badstr);
i=strlen(words);
if(i<=1)
return 0;
if ((fp = fopen(".badwords", "r")) == NULL)
return 0;
tmp2=tmp=(char *)malloc(i+1);
//分配内存失败
if(tmp2==NULL) {
fclose(fp);
return 0;
}
//过滤掉一些字符
for(;*words;words++) {
for(j=0;j < l;j++) {
if(*words==badstr[j])
break;
}
if(j == l) {
*tmp=*words;
tmp++;
}
}
*tmp=0;
/*words内容都是badstr里的*/
if(tmp2==NULL) {
fclose(fp);
return 0;
}
while(fgets(which,100,fp)!=NULL) {
strtok(which,"\n");
if (strcasestr(tmp2, which)) RETURN(1);
}
RETURN(0);
}
valid_article()函数
加入
+ int badwords;
w = NA;
+ badwords = NA;
+ if (bad_words(p->data) || bad_words(save_title))
+ badwords = YEA;
if (uinfo.mode == POSTING || uinfo.mode == EDIT || uinfo.mode == SMAIL) {
/* 如果信件也要过滤的话,请加入||uinfo.mode==SMAIL */
if (w && abort[0] == '\0')
abort[0] = 'L';
+ if (badwords == YEA)
+ abort[0] = 'a';
--
修改:jieer FROM 61.143.103.4
FROM 61.143.103.4