void G_SayCensor_Init() { fileHandle_t file; int read; badwordsList_t *this; qboolean exactmatch; char buff[24]; char line[24]; char* linept; register int i=0; Plugin_FS_SV_FOpenFileRead("badwords.txt",&file); if(!file){ Plugin_Printf("Censor_Plugin: Can not open badwords.txt for reading\n"); return; } for(i = 0; ;i++){ read = Plugin_FS_ReadLine(buff,sizeof(buff),file); if(read == 0){ Plugin_Printf("%i lines parsed from badwords.txt\n",i); Plugin_FS_FCloseFile(file); return; } if(read == -1){ Plugin_Printf("Can not read from badwords.txt\n"); Plugin_FS_FCloseFile(file); return; } Q_strncpyz(line,buff,sizeof(line)); linept = line; if(*linept == '#'){ exactmatch = qtrue; linept++; }else{ exactmatch = qfalse; } this = Plugin_Malloc(sizeof(badwordsList_t)); if(this){ this->next = badwords; this->exactmatch = exactmatch; Q_strncpyz(this->word,linept,strlen(linept)); badwords = this; } } Plugin_Printf("Censor: init complete.\n"); }
void SV_LoadBanlist(){ time_t aclock; time(&aclock); char buf[256]; buf[0] = 0; fileHandle_t file; int read; int error; int i; Plugin_FS_SV_FOpenFileRead(banlistfile->string,&file); if(!file){ Plugin_DPrintf("SV_ReadBanlist: Can not open %s for reading\n",banlistfile->string); return; } for(i = 0, error = 0 ;error < 32 ;i++){ read = Plugin_FS_ReadLine(buf,sizeof(buf),file); if(read == 0){ Plugin_Printf("%i lines parsed from %s, %i errors occured\n",i,banlistfile->string,error); Plugin_FS_FCloseFile(file); return; } if(read == -1){ Plugin_Printf("Can not read from %s\n",banlistfile->string); Plugin_FS_FCloseFile(file); return; } if(!*buf || *buf == '/' || *buf == '\n'){ continue; } if(!SV_ParseBanlist(buf, aclock, i+1)) error++; //Executes the function given as argument in execute } Plugin_PrintWarning("More than 32 errors occured by reading from %s\n",banlistfile->string); Plugin_FS_FCloseFile(file); }
void SV_WriteBanlist(){ banList_t *this; time_t aclock; time(&aclock); fileHandle_t file; char infostring[1024]; char buf[1024]; int i; file = Plugin_FS_SV_FOpenFileWrite(va("%s.tmp", banlistfile->string)); if(!file){ Plugin_PrintError("SV_WriteBanlist: Can not open %s for writing\n",banlistfile->string); return; } this = banlist; if(!this) return; for(i = 0 ; i < current_banindex; this++, i++){ if(this->expire == (time_t)-1 || this->expire > aclock){ *infostring = 0; if(this->playerid == 0) { continue; } Plugin_SteamIDToString(this->playerid, buf, sizeof(buf)); Info_SetValueForKey(infostring, "playerid", buf); Plugin_SteamIDToString(this->adminsteamid, buf, sizeof(buf)); Info_SetValueForKey(infostring, "asteamid", buf); Info_SetValueForKey(infostring, "nick", this->playername); Info_SetValueForKey(infostring, "rsn", this->reason); Info_SetValueForKey(infostring, "exp", va("%i", (int)this->expire)); Info_SetValueForKey(infostring, "create", va("%i", (int)this->created)); if(this->remote.type > NA_BAD) { Info_SetValueForKey(infostring, "netadr", Plugin_NET_AdrToStringShortMT(&this->remote, buf, sizeof(buf))); } Q_strcat(infostring, sizeof(infostring), "\\\n"); Plugin_FS_Write(infostring,strlen(infostring),file); } } Plugin_FS_FCloseFile(file); Plugin_FS_SV_HomeCopyFile(va("%s.tmp", banlistfile->string) ,banlistfile->string); // FS_SV_Rename(va("%s.tmp", banlist->string),banlist->string); }