Added getAllPaths() method to get combined results from stacked adapters.
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
|
||||
#include "./folders.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <ranges>
|
||||
|
||||
#include "../detect.hpp"
|
||||
#include "../debug/assert.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#if MIJIN_TARGET_OS == MIJIN_OS_WINDOWS
|
||||
# include <Shlobj.h>
|
||||
#endif
|
||||
@@ -103,4 +103,48 @@ fs::path getKnownFolder(KnownFolder folder) MIJIN_NOEXCEPT
|
||||
return {}; // don't know :/
|
||||
#endif
|
||||
}
|
||||
|
||||
std::vector<fs::path> getAllConfigFolders(IncludeUser includeUser, IncludeSystem includeSystem) MIJIN_NOEXCEPT
|
||||
{
|
||||
std::vector<fs::path> result;
|
||||
if (includeUser)
|
||||
{
|
||||
result.push_back(getKnownFolder(KnownFolder::USER_CONFIG_ROOT));
|
||||
}
|
||||
#if MIJIN_TARGET_OS == MIJIN_OS_LINUX
|
||||
if (includeSystem)
|
||||
{
|
||||
if (const char* val = std::getenv("XDG_CONFIG_DIRS"); val != nullptr)
|
||||
{
|
||||
for (auto part : std::ranges::split_view(std::string_view(val), ':'))
|
||||
{
|
||||
result.emplace_back(part.begin(), part.end());
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<fs::path> getAllDataFolders(IncludeUser includeUser, IncludeSystem includeSystem) MIJIN_NOEXCEPT
|
||||
{
|
||||
std::vector<fs::path> result;
|
||||
if (includeUser)
|
||||
{
|
||||
result.push_back(getKnownFolder(KnownFolder::USER_DATA_ROOT));
|
||||
}
|
||||
#if MIJIN_TARGET_OS == MIJIN_OS_LINUX
|
||||
if (includeSystem)
|
||||
{
|
||||
if (const char* val = std::getenv("XDG_DATA_DIRS"); val != nullptr)
|
||||
{
|
||||
for (auto part : std::ranges::split_view(std::string_view(val), ':'))
|
||||
{
|
||||
result.emplace_back(part.begin(), part.end());
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user