diff options
| author | 2025-02-26 18:55:28 +0000 | |
|---|---|---|
| committer | 2025-02-26 18:57:38 +0000 | |
| commit | 2a087e3cabeac09ed4b00a6de883bd0df468de32 (patch) | |
| tree | b1228b787035538f8268c7e9524f778dea74d3aa /src/configreader.cpp | |
| parent | Merge branch 'insp4' into master. (diff) | |
| parent | Add more information to the seenicks message. (diff) | |
Merge branch 'insp4' into master.
Diffstat (limited to 'src/configreader.cpp')
| -rw-r--r-- | src/configreader.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/configreader.cpp b/src/configreader.cpp index 5bc94b8a9..07c93d09c 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -73,15 +73,23 @@ std::string ServerConfig::ServerPaths::ExpandPath(const std::string& base, const 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"); + // The fragment is relative to a home directory, expand that. + const auto* homedir = getenv("HOME"); if (homedir && *homedir) - return std::string(homedir) + '/' + fragment.substr(2); + return FMT::format("{}/{}", homedir, fragment.substr(2)); } - return base + '/' + fragment; + if (std::filesystem::path(base).is_relative()) + { + // The base is relative to the working directory, expand that. + const auto cwd = std::filesystem::current_path(); + if (!cwd.empty()) + return FMT::format("{}/{}/{}", cwd.string(), base, fragment); + } + + return FMT::format("{}/{}", base, fragment); } ServerConfig::ServerConfig() |
