$Wild) { if($Wild['m']==$Host) continue; $LeftWild=$RightWild=""; for($i=0; $istrlen($CandidateWild)) { $CandidateWild=$LeftWild."*".$RightWild; $CandidateKey=$Key; } } if(strlen($CandidateWild)>0.4*strlen($Host)) { $Wilds[$Nick][$CandidateKey]['m']=$CandidateWild; $Wilds[$Nick][$CandidateKey]['c']+=1; } else { $Wilds[$Nick][]['m']=$Host; $Wilds[$Nick][]['c']=0; } } $Who[$Nick]['dc']=$DateChanges; $Who[$Nick]['ident']=$Ident; $Who[$Nick]['host']=$Host; if(!isset($Wilds[$Nick])) { $Wilds[$Nick][]['m']=$Host; $Wilds[$Nick][]['c']=0; } // $SumTime+=microtime(TRUE)-$StartTime; if($DateChanges%5==0 And !$Cleaned) { print "."; // $StartTime=microtime(TRUE); foreach($Who as $k => $w) if($DateChanges-$w['dc']>5) unset($Who[$k]); foreach($Wilds as $k1 => $W1) { foreach($W1 as $k2 => $Wild) if(strpos($Wild['m'], "*")!==FALSE And strlen($Wild['m'])>=6); else unset($W1[$k2]); if(count($W1)==0) unset($Wilds[$k1], $Who[$k1]); } // print microtime(TRUE)-$StartTime."\n"; $Cleaned=TRUE; } } print "\n"; Terminate(0); function Terminate($Signal) { global $Wilds, $Who; foreach($Wilds as $k1 => $W1) { foreach($W1 as $k2 => $Wild) if(strpos($Wild['m'], "*")!==FALSE And strlen($Wild['m'])>=7) print $Wild['m']."\n"; else unset($W1[$k2]); // if(count($W1)==0) unset($Wilds[$k1]); } exit(0); } ?>