Added getAllPaths() method to get combined results from stacked adapters.

This commit is contained in:
2025-03-02 20:02:03 +01:00
parent 3d0f5b9a3f
commit b6657189d3
5 changed files with 75 additions and 2 deletions

View File

@@ -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;
}
}