diff options
author | Adam <Adam@anope.org> | 2011-08-06 04:16:10 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-08-06 04:16:10 -0400 |
commit | 7849667a19d037f360ec935dca09706c9b031174 (patch) | |
tree | cddc5be41243675eb3dcdd3d4c70c561182d8f88 /src/config.cpp | |
parent | e03efdee9743a4b7366606aebe219627984fcf3f (diff) |
Added a define{} block which can be used to easially rename things
Diffstat (limited to 'src/config.cpp')
-rw-r--r-- | src/config.cpp | 57 |
1 files changed, 42 insertions, 15 deletions
diff --git a/src/config.cpp b/src/config.cpp index c59188bd7..c4d59d6fc 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -689,6 +689,27 @@ static bool DoneOpers(ServerConfig *config, const Anope::string &) /*************************************************************************/ +static std::map<Anope::string, Anope::string> defines; +static bool InitDefine(ServerConfig *config, const Anope::string &) +{ + defines.clear(); + return true; +} + +static bool DoDefine(ServerConfig *config, const Anope::string &, const Anope::string *, ValueList &values, int *) +{ + Anope::string name = values[0].GetValue(), value = values[1].GetValue(); + defines[name] = value; + return true; +} + +static bool DoneDefine(ServerConfig *config, const Anope::string &) +{ + return true; +} + +/*************************************************************************/ + static bool InitInclude(ServerConfig *config, const Anope::string &) { return true; @@ -1203,6 +1224,11 @@ ConfigItems::ConfigItems(ServerConfig *conf) /* These tags can occur multiple times, and therefore they have special code to read them * which is different to the code for reading the singular tags listed above. */ MultiItem MultiItems[] = { + {"define", + {"name", "value", ""}, + {"", "", ""}, + {DT_STRING, DT_STRING}, + InitDefine, DoDefine, DoneDefine}, /* Include must be first so we can pull in the extra files before processing * anything else! */ {"include", @@ -1298,12 +1324,15 @@ void ServerConfig::Read() dt &= ~DT_NORELOAD; ConfigDataHash &hash = (noreload && Config ? Config->config_data : this->config_data); + Anope::string item; + bool has_value = ConfValue(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum, item, allow_newlines); + if (defines.count(item) > 0) + item = defines[item]; switch (dt) { case DT_NOSPACES: { - Anope::string item; - if (ConfValue(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum, item, allow_newlines)) + if (has_value) vl.push_back(ValueItem(item)); else vl.push_back(ValueItem()); @@ -1312,8 +1341,7 @@ void ServerConfig::Read() } case DT_HOSTNAME: { - Anope::string item; - if (ConfValue(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum, item, allow_newlines)) + if (has_value) vl.push_back(ValueItem(item)); else vl.push_back(ValueItem()); @@ -1322,8 +1350,7 @@ void ServerConfig::Read() } case DT_IPADDRESS: { - Anope::string item; - if (ConfValue(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum, item, allow_newlines)) + if (has_value) vl.push_back(ValueItem(item)); else vl.push_back(ValueItem()); @@ -1332,8 +1359,7 @@ void ServerConfig::Read() } case DT_STRING: { - Anope::string item; - if (ConfValue(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum, item, allow_newlines)) + if (has_value) vl.push_back(ValueItem(item)); else vl.push_back(ValueItem()); @@ -1343,17 +1369,16 @@ void ServerConfig::Read() case DT_UINTEGER: case DT_LUINTEGER: { - int item = 0; - if (ConfValueInteger(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum, item)) - vl.push_back(ValueItem(item)); + int titem = 0; + if (ConfValueInteger(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum, titem)) + vl.push_back(ValueItem(titem)); else vl.push_back(ValueItem(0)); break; } case DT_TIME: { - Anope::string item; - if (ConfValue(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum, item, allow_newlines)) + if (has_value) { #ifdef _WIN32 long time = static_cast<long>(dotime(item)); @@ -1368,8 +1393,8 @@ void ServerConfig::Read() } case DT_BOOLEAN: { - bool item = ConfValueBool(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum); - vl.push_back(ValueItem(item)); + bool titem = ConfValueBool(hash, configitems.MultiValues[Index].tag, configitems.MultiValues[Index].items[valuenum], configitems.MultiValues[Index].items_default[valuenum], tagnum); + vl.push_back(ValueItem(titem)); } } } @@ -1390,6 +1415,8 @@ void ServerConfig::Read() ConfigDataHash &hash = (noreload && Config ? Config->config_data : this->config_data); ConfValue(hash, configitems.Values[Index].tag, configitems.Values[Index].value, configitems.Values[Index].default_value, 0, item, allow_newlines); + if (defines.count(item) > 0) + item = defines[item]; ValueItem vi(item); if (!configitems.Values[Index].validation_function(this, configitems.Values[Index].tag, configitems.Values[Index].value, vi)) |