mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 18:49:03 -04:00
Add an <include> option to allow certain config files to not exist.
This is useful when using modules that generate a config file such as the filter and permchannels modules.
This commit is contained in:
parent
37f068576e
commit
99bb7ac8bd
@ -1766,7 +1766,7 @@
|
||||
#<permchanneldb filename="permchannels.conf"
|
||||
# listmodes="yes"
|
||||
# saveperiod="5s">
|
||||
#<include file="permchannels.conf">
|
||||
#<include file="permchannels.conf" missingokay="yes">
|
||||
#
|
||||
# You may also create channels on startup by using the <permchannels> block.
|
||||
#<permchannels channel="#opers" modes="isP" topic="Opers only.">
|
||||
|
@ -39,7 +39,10 @@ enum ParseFlags
|
||||
FLAG_NO_INC = 4,
|
||||
|
||||
// &env.FOO; is disabled.
|
||||
FLAG_NO_ENV = 8
|
||||
FLAG_NO_ENV = 8,
|
||||
|
||||
// It's okay if an include doesn't exist.
|
||||
FLAG_MISSING_OKAY = 16
|
||||
};
|
||||
|
||||
// Represents the position within a config file.
|
||||
@ -420,11 +423,18 @@ void ParseStack::DoInclude(ConfigTag* tag, int flags)
|
||||
{
|
||||
if (tag->getBool("noinclude", false))
|
||||
flags |= FLAG_NO_INC;
|
||||
|
||||
if (tag->getBool("noexec", false))
|
||||
flags |= FLAG_NO_EXEC;
|
||||
|
||||
if (tag->getBool("noenv", false))
|
||||
flags |= FLAG_NO_ENV;
|
||||
|
||||
if (tag->getBool("missingokay", false))
|
||||
flags |= FLAG_MISSING_OKAY;
|
||||
else
|
||||
flags &= ~FLAG_MISSING_OKAY;
|
||||
|
||||
if (!ParseFile(ServerInstance->Config->Paths.PrependConfig(name), flags, mandatorytag))
|
||||
throw CoreException("Included");
|
||||
}
|
||||
@ -504,7 +514,12 @@ bool ParseStack::ParseFile(const std::string& path, int flags, const std::string
|
||||
|
||||
FileWrapper file((isexec ? popen(path.c_str(), "r") : fopen(path.c_str(), "r")), isexec);
|
||||
if (!file)
|
||||
{
|
||||
if (flags & FLAG_MISSING_OKAY)
|
||||
return true;
|
||||
|
||||
throw CoreException("Could not read \"" + path + "\" for include");
|
||||
}
|
||||
|
||||
reading.push_back(path);
|
||||
Parser p(*this, flags, file, path, mandatory_tag);
|
||||
|
Loading…
x
Reference in New Issue
Block a user