+ while ((elines.size()) && (current > (*elines.begin())->expiry))
+ {
+ std::vector<ELine*>::iterator i = elines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed E-Line %s@%s (set by %s %d seconds ago)",(*i)->identmask,(*i)->hostmask,(*i)->source,(*i)->duration);
+ elines.erase(i);
+ }
+
+ while ((zlines.size()) && (current > (*zlines.begin())->expiry))
+ {
+ std::vector<ZLine*>::iterator i = zlines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed Z-Line %s (set by %s %d seconds ago)",(*i)->ipaddr,(*i)->source,(*i)->duration);
+ zlines.erase(i);
+ }
+
+ while ((klines.size()) && (current > (*klines.begin())->expiry))
+ {
+ std::vector<KLine*>::iterator i = klines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed K-Line %s@%s (set by %s %d seconds ago)",(*i)->identmask,(*i)->hostmask,(*i)->source,(*i)->duration);
+ klines.erase(i);
+ }
+
+ while ((qlines.size()) && (current > (*qlines.begin())->expiry))
+ {
+ std::vector<QLine*>::iterator i = qlines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed Q-Line %s (set by %s %d seconds ago)",(*i)->nick,(*i)->source,(*i)->duration);
+ qlines.erase(i);
+ }
+
+}
+
+// applies lines, removing clients and changing nicks etc as applicable
+
+void XLineManager::apply_lines(const int What)
+{
+ if (!What)
+ return;
+
+ if (What & APPLY_PERM_ONLY)
+ {
+ char reason[MAXBUF];
+
+ if ((!pglines.size()) && (!pklines.size()) && (!pzlines.size()) && (!pqlines.size()))
+ return;
+
+ XLine* check = NULL;
+ for (std::vector<userrec*>::const_iterator u2 = ServerInstance->local_users.begin(); u2 != ServerInstance->local_users.end(); u2++)