1 #include "inspircd_config.h"
10 std::vector<ModeParameter> custom_mode_params;
15 strcpy(custom_modes,"");
19 created = topicset = limit = 0;
20 topiclock = noexternal = inviteonly = moderated = secret = c_private = false;
23 void chanrec::SetCustomMode(char mode,bool mode_on)
29 if (!strchr(this->custom_modes,mode))
31 strncat(custom_modes,m,MAXMODES);
33 log(DEBUG,"Custom mode %c set",mode);
38 for (int q = 0; q < strlen(custom_modes); q++) {
39 if (custom_modes[q] != mode) {
44 strncpy(custom_modes,temp,MAXMODES);
45 log(DEBUG,"Custom mode %c removed",mode);
46 this->SetCustomModeParam(mode,"",false);
50 void chanrec::SetCustomModeParam(char mode,char* parameter,bool mode_on)
53 log(DEBUG,"SetCustomModeParam called");
56 strcpy(M.channel,this->name);
57 strcpy(M.parameter,parameter);
60 log(DEBUG,"Custom mode parameter %c %s added",mode,parameter);
61 custom_mode_params.push_back(M);
65 if (custom_mode_params.size())
67 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
69 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
71 log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter);
72 custom_mode_params.erase(i);
77 log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!");
81 bool chanrec::IsCustomModeSet(char mode)
83 log(DEBUG,"Checking ISCustomModeSet: %c %s",mode,this->custom_modes);
84 return (strchr(this->custom_modes,mode) != 0);
87 std::string chanrec::GetModeParameter(char mode)
89 if (custom_mode_params.size())
91 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
93 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
95 return std::string(i->parameter);
99 return std::string("");