return true;
}
-bool userrec::ProcessNoticeMasks(const char *sm)
+std::string userrec::ProcessNoticeMasks(const char *sm)
{
- bool adding = true;
+ bool adding = true, oldadding = false;
const char *c = sm;
+ std::string output = "";
+
+ ServerInstance->Log(DEBUG,"Process notice masks");
while (c && *c)
{
+ ServerInstance->Log(DEBUG,"Process notice mask %c",*c);
+
switch (*c)
{
case '+':
adding = true;
- break;
+ break;
case '-':
adding = false;
- break;
+ break;
default:
- if ((*c >= 'A') && (*c <= 'z'))
- this->SetNoticeMask(*c, adding);
- break;
+ if ((*c >= 'A') && (*c <= 'z') && (ServerInstance->SNO->IsEnabled(*c)))
+ {
+ if ((!IsNoticeMaskSet(*c) && adding) || (IsNoticeMaskSet(*c) && !adding))
+ {
+ if ((oldadding != adding) || (sm == c))
+ output += (adding ? '+' : '-');
+
+ this->SetNoticeMask(*c, adding);
+
+ output += *c;
+ }
+ }
+ oldadding = adding;
+ break;
}
*c++;
}
- return true;
+ return output;
}
void userrec::StartDNSLookup()
invites.clear();
chans.resize(MAXCHANS);
memset(modes,0,sizeof(modes));
+ memset(snomasks,0,sizeof(snomasks));
for (unsigned int n = 0; n < MAXCHANS; n++)
{