1 #include "inspircd_config.h"
10 strcpy(custom_modes,"");
14 created = topicset = limit = 0;
15 topiclock = noexternal = inviteonly = moderated = secret = c_private = false;
18 void chanrec::SetCustomMode(char mode,bool mode_on)
24 if (!strchr(this->custom_modes,mode))
26 strncat(custom_modes,m,MAXMODES);
28 log(DEBUG,"Custom mode %c set",mode);
33 for (int q = 0; q < strlen(custom_modes); q++) {
34 if (custom_modes[q] != mode) {
39 strncpy(custom_modes,temp,MAXMODES);
40 log(DEBUG,"Custom mode %c removed",mode);
41 this->SetCustomModeParam(mode,"",false);
45 vector<ModeParameter> custom_mode_params;
47 void chanrec::SetCustomModeParam(char mode,char* parameter,bool mode_on)
50 log(DEBUG,"SetCustomModeParam called");
53 strcpy(M.channel,this->name);
54 strcpy(M.parameter,parameter);
57 log(DEBUG,"Custom mode parameter %c %s added",mode,parameter);
58 custom_mode_params.push_back(M);
62 if (custom_mode_params.size())
64 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
66 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
68 log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter);
69 custom_mode_params.erase(i);
74 log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!");
78 bool chanrec::IsCustomModeSet(char mode)
80 log(DEBUG,"Checking ISCustomModeSet: %c %s",mode,this->custom_modes);
81 return (strchr(this->custom_modes,mode) != 0);
84 std::string chanrec::GetModeParameter(char mode)
86 if (custom_mode_params.size())
88 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
90 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
92 return std::string(i->parameter);
96 return std::string("");