From 9059147974ffbe2bea55b9c2136307a77f465835 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 15 Jan 2022 22:45:11 +0000 Subject: Replace uses of the FileSystem class with std::filesystem. --- src/configreader.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/configreader.cpp') 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 +#include + #include "inspircd.h" #include "xline.h" #include "listmode.h" #include "exitcodes.h" #include "configparser.h" -#include ServerLimits::ServerLimits(std::shared_ptr tag) : MaxLine(tag->getUInt("maxline", 512, 512)) @@ -62,6 +64,23 @@ ServerConfig::ServerPaths::ServerPaths(std::shared_ptr 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("empty", FilePosition("", 0, 0))) , Limits(EmptyTag) -- cgit v1.3.1-10-gc9f91