mirror of
https://github.com/anope/anope.git
synced 2026-06-25 14:46:37 +02:00
e65d8b2f3d
This prevents Anope from exploding when /os reload has errors.
111 lines
2.8 KiB
C++
111 lines
2.8 KiB
C++
/* Configuration file handling.
|
|
*
|
|
* (C) 2003-2010 Anope Team
|
|
* Contact us at team@anope.org
|
|
*
|
|
* Please read COPYING and README for further details.
|
|
*
|
|
* Based on the original code of Epona by Lara.
|
|
* Based on the original code of Services by Andy Church.
|
|
*/
|
|
|
|
/* Taken from:
|
|
* +------------------------------------+
|
|
* | Inspire Internet Relay Chat Daemon |
|
|
* +------------------------------------+
|
|
*
|
|
* InspIRCd: (C) 2002-2010 InspIRCd Development Team
|
|
* See: http://www.inspircd.org/wiki/index.php/Credits
|
|
*
|
|
* This program is free but copyrighted software; see
|
|
* the file COPYING for details.
|
|
*
|
|
* ---------------------------------------------------
|
|
*/
|
|
|
|
#include "services.h"
|
|
|
|
ConfigReader::ConfigReader() : error(CONF_NO_ERROR)
|
|
{
|
|
}
|
|
|
|
ConfigReader::ConfigReader(const Anope::string &filename) : error(CONF_NO_ERROR)
|
|
{
|
|
}
|
|
|
|
ConfigReader::~ConfigReader()
|
|
{
|
|
}
|
|
|
|
Anope::string ConfigReader::ReadValue(const Anope::string &tag, const Anope::string &name, const Anope::string &default_value, int index, bool allow_linefeeds)
|
|
{
|
|
/* Don't need to strlcpy() tag and name anymore, ReadConf() takes const char* */
|
|
Anope::string result;
|
|
|
|
if (!Config->ConfValue(Config->config_data, tag, name, default_value, index, result, allow_linefeeds))
|
|
this->error = CONF_VALUE_NOT_FOUND;
|
|
|
|
return result;
|
|
}
|
|
|
|
Anope::string ConfigReader::ReadValue(const Anope::string &tag, const Anope::string &name, int index, bool allow_linefeeds)
|
|
{
|
|
return ReadValue(tag, name, "", index, allow_linefeeds);
|
|
}
|
|
|
|
bool ConfigReader::ReadFlag(const Anope::string &tag, const Anope::string &name, const Anope::string &default_value, int index)
|
|
{
|
|
return Config->ConfValueBool(Config->config_data, tag, name, default_value, index);
|
|
}
|
|
|
|
bool ConfigReader::ReadFlag(const Anope::string &tag, const Anope::string &name, int index)
|
|
{
|
|
return ReadFlag(tag, name, "", index);
|
|
}
|
|
|
|
int ConfigReader::ReadInteger(const Anope::string &tag, const Anope::string &name, const Anope::string &default_value, int index, bool need_positive)
|
|
{
|
|
int result;
|
|
|
|
if (!Config->ConfValueInteger(Config->config_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 Anope::string &tag, const Anope::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;
|
|
}
|
|
|
|
int ConfigReader::Enumerate(const Anope::string &tag) const
|
|
{
|
|
return Config->ConfValueEnum(Config->config_data, tag);
|
|
}
|
|
|
|
int ConfigReader::EnumerateValues(const Anope::string &tag, int index)
|
|
{
|
|
return Config->ConfVarEnum(Config->config_data, tag, index);
|
|
}
|
|
|
|
bool ConfigReader::Verify()
|
|
{
|
|
return this->readerror;
|
|
}
|