01 U0 AddBadWord(U8 *word) { 02 word=StrNew(word); 03 U8 *ptr=word; 04 while(*ptr) { 05 *ptr=ToUpper(*ptr); 06 ptr++; 07 } 08 ptr=MStrPrint("BadWord.%s",word); 09 FramePtrAdd(ptr,1); 10 Free(word),Free(ptr); 11 } 12 U8 *BadWordFilter(U8 *str) { 13 U8 *ret=StrNew(str),buf[4096],*ptr; 14 I64 st=0,en; 15 again: 16 while(ret[st]&&!Bt(char_bmp_alpha_numeric,ret[st])) 17 st++; 18 en=st; 19 while(ret[en]&&Bt(char_bmp_alpha_numeric,ret[en])) { 20 buf[en-st]=ToUpper(ret[en]); 21 en++; 22 } 23 buf[en-st]=0; 24 ptr=MStrPrint("BadWord.%s",buf); 25 if(FramePtr(ptr)) { 26 while(st!=en) { 27 ret[st++]="@*&%^&~!"[RandU16&7]; 28 } 29 } else 30 st=en; 31 if(ret[st]) 32 goto again; 33 Free(ptr); 34 return ret; 35 } 36 U0 LoadBadWords() { 37 I64 l=1; 38 U8 *bad; 39 while(bad=DocLineRead("BadWords.TXT",l++)) { 40 AddBadWord(bad); 41 Free(bad); 42 } 43 } 44 LoadBadWords;