-ConfigReader::ConfigReader(InspIRCd* Instance) : ServerInstance(Instance)
-{
- this->errorlog = new std::ostringstream(std::stringstream::in | std::stringstream::out);
- this->error = CONF_NO_ERROR;
- this->data = &ServerInstance->Config->config_data;
- this->privatehash = false;
-}
-
-
-ConfigReader::~ConfigReader()
-{
- if (this->errorlog)
- delete this->errorlog;
- if(this->privatehash)
- delete this->data;
-}
-
-
-ConfigReader::ConfigReader(InspIRCd* Instance, const std::string &filename) : ServerInstance(Instance)
-{
- ServerInstance->Config->ClearStack();
-
- this->error = CONF_NO_ERROR;
- this->data = new ConfigDataHash;
- this->privatehash = true;
- this->errorlog = new std::ostringstream(std::stringstream::in | std::stringstream::out);
- /*** XXX: This might block! */
- this->readerror = ServerInstance->Config->DoInclude(*this->data, filename, *this->errorlog);
- if (!this->readerror)
- this->error = CONF_FILE_NOT_FOUND;
-}
-
-
-std::string ConfigReader::ReadValue(const std::string &tag, const std::string &name, const std::string &default_value, int index, bool allow_linefeeds)
-{
- /* Don't need to strlcpy() tag and name anymore, ReadConf() takes const char* */
- std::string result;
-
- if (!ServerInstance->Config->ConfValue(*this->data, tag, name, default_value, index, result, allow_linefeeds))
- {
- this->error = CONF_VALUE_NOT_FOUND;
- }
- return result;
-}
-
-std::string ConfigReader::ReadValue(const std::string &tag, const std::string &name, int index, bool allow_linefeeds)
-{
- return ReadValue(tag, name, "", index, allow_linefeeds);
-}
-
-bool ConfigReader::ReadFlag(const std::string &tag, const std::string &name, const std::string &default_value, int index)
-{
- return ServerInstance->Config->ConfValueBool(*this->data, tag, name, default_value, index);
-}
-
-bool ConfigReader::ReadFlag(const std::string &tag, const std::string &name, int index)
-{
- return ReadFlag(tag, name, "", index);
-}
-
-
-int ConfigReader::ReadInteger(const std::string &tag, const std::string &name, const std::string &default_value, int index, bool need_positive)
-{
- int result;
-
- if(!ServerInstance->Config->ConfValueInteger(*this->data, tag, name, default_value, index, result))
- {
- this->error = CONF_VALUE_NOT_FOUND;
- return 0;
- }
-
- if ((need_positive) && (result < 0))
- {
- this->error = CONF_INT_NEGATIVE;
- return 0;
- }
-
- return result;
-}
-
-int ConfigReader::ReadInteger(const std::string &tag, const std::string &name, int index, bool need_positive)
-{
- return ReadInteger(tag, name, "", index, need_positive);
-}
-
-long ConfigReader::GetError()
-{
- long olderr = this->error;
- this->error = 0;
- return olderr;
-}
-
-void ConfigReader::DumpErrors(bool bail, User* user)
-{
- ServerInstance->Config->ReportConfigError(this->errorlog->str(), bail, user);
-}
-
-
-int ConfigReader::Enumerate(const std::string &tag)
-{
- return ServerInstance->Config->ConfValueEnum(*this->data, tag);
-}
-
-int ConfigReader::EnumerateValues(const std::string &tag, int index)
-{
- return ServerInstance->Config->ConfVarEnum(*this->data, tag, index);
-}
-
-bool ConfigReader::Verify()
-{
- return this->readerror;
-}
-
-
-FileReader::FileReader(InspIRCd* Instance, const std::string &filename) : ServerInstance(Instance)