mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-01 05:39:11 +00:00
LibCore: Add StandardPaths::system_data_directories()
This is only used for finding font directories for now, but having a convenient function for it means if anyone needs to use XDG_DATA_DIRS in future, they're less likely to implement it themselves and miss the case of it being present but empty. We also now canonicalize the data directory paths, as we do for the other standard paths.
This commit is contained in:
parent
3a935aa076
commit
1217e7733f
Notes:
github-actions[bot]
2024-10-01 09:04:14 +00:00
Author: https://github.com/AtkinsSJ
Commit: 1217e7733f
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1572
2 changed files with 14 additions and 4 deletions
|
@ -152,6 +152,16 @@ ByteString StandardPaths::user_data_directory()
|
|||
return LexicalPath::canonicalized_path(builder.to_byte_string());
|
||||
}
|
||||
|
||||
Vector<ByteString> StandardPaths::system_data_directories()
|
||||
{
|
||||
auto data_directories = get_environment_if_not_empty("XDG_DATA_DIRS"sv).value_or("/usr/local/share:/usr/share"sv);
|
||||
Vector<ByteString> paths;
|
||||
data_directories.for_each_split_view(':', SplitBehavior::Nothing, [&paths](auto data_directory) {
|
||||
paths.append(LexicalPath::canonicalized_path(data_directory));
|
||||
});
|
||||
return paths;
|
||||
}
|
||||
|
||||
ErrorOr<ByteString> StandardPaths::runtime_directory()
|
||||
{
|
||||
if (auto data_directory = get_environment_if_not_empty("XDG_RUNTIME_DIR"sv); data_directory.has_value())
|
||||
|
@ -225,12 +235,11 @@ ErrorOr<Vector<String>> StandardPaths::font_directories()
|
|||
# endif
|
||||
} };
|
||||
# if !(defined(AK_OS_SERENITY) || defined(AK_OS_MACOS))
|
||||
auto data_directories = get_environment_if_not_empty("XDG_DATA_DIRS"sv).value_or("/usr/local/share:/usr/share"sv);
|
||||
TRY(data_directories.for_each_split_view(':', SplitBehavior::Nothing, [&paths](auto data_directory) -> ErrorOr<void> {
|
||||
auto data_directories = system_data_directories();
|
||||
for (auto& data_directory : data_directories) {
|
||||
paths.append(TRY(String::formatted("{}/fonts"sv, data_directory)));
|
||||
paths.append(TRY(String::formatted("{}/X11/fonts"sv, data_directory)));
|
||||
return {};
|
||||
}));
|
||||
}
|
||||
# endif
|
||||
return paths;
|
||||
#endif
|
||||
|
|
|
@ -24,6 +24,7 @@ public:
|
|||
static ByteString tempfile_directory();
|
||||
static ByteString config_directory();
|
||||
static ByteString user_data_directory();
|
||||
static Vector<ByteString> system_data_directories();
|
||||
static ErrorOr<ByteString> runtime_directory();
|
||||
static ErrorOr<Vector<String>> font_directories();
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue