mirror of
https://github.com/matrix-construct/construct
synced 2024-11-29 10:12:39 +01:00
ircd::fs: Add ability to change basepath values at runtime.
This commit is contained in:
parent
38bfb56661
commit
32e94931a7
2 changed files with 22 additions and 1 deletions
|
@ -62,12 +62,15 @@ namespace ircd::fs
|
|||
|
||||
/// A compile-time installation base-path. We have several of these in an
|
||||
/// internal array accessible with get(enum base) or make_path(enum base).
|
||||
/// These can still be modified at runtime by setting a new platform-dependent
|
||||
/// string with set(enum base); do so with care.
|
||||
struct ircd::fs::basepath
|
||||
{
|
||||
string_view name;
|
||||
string_view path;
|
||||
|
||||
static const basepath &get(const base &) noexcept;
|
||||
static string_view set(const base &, const string_view &); // (returns old value)
|
||||
};
|
||||
|
||||
/// Index of default paths. Must be aligned with the internal array in fs.cc.
|
||||
|
|
20
ircd/fs.cc
20
ircd/fs.cc
|
@ -2225,7 +2225,7 @@ catch(const filesystem::filesystem_error &e)
|
|||
|
||||
namespace ircd::fs
|
||||
{
|
||||
extern const std::array<basepath, num_of<base>()> basepaths;
|
||||
extern std::array<basepath, num_of<base>()> basepaths;
|
||||
}
|
||||
|
||||
decltype(ircd::fs::basepaths)
|
||||
|
@ -2240,6 +2240,24 @@ ircd::fs::basepaths
|
|||
{ "module directory", RB_MODULE_DIR },
|
||||
}};
|
||||
|
||||
ircd::string_view
|
||||
ircd::fs::basepath::set(const base &base,
|
||||
const string_view &path)
|
||||
{
|
||||
log::debug
|
||||
{
|
||||
log, "Updating base path #%u '%s' from `%' to `%s'",
|
||||
uint(base),
|
||||
basepaths.at(base).name,
|
||||
basepaths.at(base).path,
|
||||
path,
|
||||
};
|
||||
|
||||
const string_view ret(basepaths.at(base).path);
|
||||
basepaths.at(base).path = path;
|
||||
return ret;
|
||||
}
|
||||
|
||||
const ircd::fs::basepath &
|
||||
ircd::fs::basepath::get(const base &base)
|
||||
noexcept
|
||||
|
|
Loading…
Reference in a new issue