diff options
| author | 2019-07-16 15:11:21 +0100 | |
|---|---|---|
| committer | 2019-07-16 16:48:18 +0100 | |
| commit | cd8b456f979733525941284639d8bf899173b429 (patch) | |
| tree | f1d26962e61c74c5acb076662a909beafbe8e5fd /src/configparser.cpp | |
| parent | Replace socketengine_{pthread,win32} with C++11 threads. (diff) | |
| parent | ssl_gnutls: remove PackageInfo directives for EOL Debian versions. (diff) | |
| download | inspircd++-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.cpp | 22 |
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"); } |
