aboutsummaryrefslogtreecommitdiffstats
path: root/src/configparser.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2019-07-16 15:11:21 +0100
committerGravatar Sadie Powell2019-07-16 16:48:18 +0100
commitcd8b456f979733525941284639d8bf899173b429 (patch)
treef1d26962e61c74c5acb076662a909beafbe8e5fd /src/configparser.cpp
parentReplace socketengine_{pthread,win32} with C++11 threads. (diff)
parentssl_gnutls: remove PackageInfo directives for EOL Debian versions. (diff)
downloadinspircd++-cd8b456f979733525941284639d8bf899173b429.tar.gz
inspircd++-cd8b456f979733525941284639d8bf899173b429.tar.bz2
inspircd++-cd8b456f979733525941284639d8bf899173b429.zip
Merge branch 'insp3' into master.
Diffstat (limited to 'src/configparser.cpp')
-rw-r--r--src/configparser.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/configparser.cpp b/src/configparser.cpp
index e26523396..678cc4a43 100644
--- a/src/configparser.cpp
+++ b/src/configparser.cpp
@@ -369,9 +369,30 @@ void ParseStack::DoInclude(ConfigTag* tag, int flags)
flags |= FLAG_NO_INC;
if (tag->getBool("noexec", false))
flags |= FLAG_NO_EXEC;
+
if (!ParseFile(ServerInstance->Config->Paths.PrependConfig(name), flags, mandatorytag))
throw CoreException("Included");
}
+ else if (tag->readString("directory", name))
+ {
+ if (tag->getBool("noinclude", false))
+ flags |= FLAG_NO_INC;
+ if (tag->getBool("noexec", false))
+ flags |= FLAG_NO_EXEC;
+
+ const std::string includedir = ServerInstance->Config->Paths.PrependConfig(name);
+ std::vector<std::string> files;
+ if (!FileSystem::GetFileList(includedir, files, "*.conf"))
+ throw CoreException("Unable to read directory for include: " + includedir);
+
+ std::sort(files.begin(), files.end());
+ for (std::vector<std::string>::const_iterator iter = files.begin(); iter != files.end(); ++iter)
+ {
+ const std::string path = includedir + '/' + *iter;
+ if (!ParseFile(path, flags, mandatorytag))
+ throw CoreException("Included");
+ }
+ }
else if (tag->readString("executable", name))
{
if (flags & FLAG_NO_EXEC)
@@ -380,6 +401,7 @@ void ParseStack::DoInclude(ConfigTag* tag, int flags)
flags |= FLAG_NO_INC;
if (tag->getBool("noexec", true))
flags |= FLAG_NO_EXEC;
+
if (!ParseFile(name, flags, mandatorytag, true))
throw CoreException("Included");
}