diff options
| author | 2022-01-15 22:45:11 +0000 | |
|---|---|---|
| committer | 2022-01-15 23:20:45 +0000 | |
| commit | 9059147974ffbe2bea55b9c2136307a77f465835 (patch) | |
| tree | dd5e8a4a0634d4a9afbf14813c8779f7839f99f5 /src/configreader.cpp | |
| parent | Merge branch 'insp3' into master. (diff) | |
Replace uses of the FileSystem class with std::filesystem.
Diffstat (limited to 'src/configreader.cpp')
| -rw-r--r-- | src/configreader.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/configreader.cpp b/src/configreader.cpp index 735bd9a22..1aa71443b 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -31,12 +31,14 @@ */ +#include <filesystem> +#include <iostream> + #include "inspircd.h" #include "xline.h" #include "listmode.h" #include "exitcodes.h" #include "configparser.h" -#include <iostream> ServerLimits::ServerLimits(std::shared_ptr<ConfigTag> tag) : MaxLine(tag->getUInt("maxline", 512, 512)) @@ -62,6 +64,23 @@ ServerConfig::ServerPaths::ServerPaths(std::shared_ptr<ConfigTag> tag) { } +std::string ServerConfig::ServerPaths::ExpandPath(const std::string& base, const std::string& fragment) +{ + // The fragment is an absolute path, don't modify it. + if (std::filesystem::path(fragment).is_absolute()) + return fragment; + + // The fragment is relative to a home directory, expand that. + if (!fragment.compare(0, 2, "~/", 2)) + { + const char* homedir = getenv("HOME"); + if (homedir && *homedir) + return std::string(homedir) + '/' + fragment.substr(2); + } + + return base + '/' + fragment; +} + ServerConfig::ServerConfig() : EmptyTag(std::make_shared<ConfigTag>("empty", FilePosition("<auto>", 0, 0))) , Limits(EmptyTag) |
