diff --git a/Userland/Libraries/LibCore/StandardPaths.cpp b/Userland/Libraries/LibCore/StandardPaths.cpp index d3dc5147fad..b25eb8ee9be 100644 --- a/Userland/Libraries/LibCore/StandardPaths.cpp +++ b/Userland/Libraries/LibCore/StandardPaths.cpp @@ -16,6 +16,10 @@ #include #include +#if defined(AK_OS_HAIKU) +# include +#endif + namespace Core { DeprecatedString StandardPaths::home_directory() @@ -62,6 +66,8 @@ DeprecatedString StandardPaths::config_directory() builder.append(home_directory()); #if defined(AK_OS_MACOS) builder.append("/Library/Preferences"sv); +#elif defined(AK_OS_HAIKU) + builder.append("/config/settings"sv); #else builder.append("/.config"sv); #endif @@ -79,6 +85,8 @@ DeprecatedString StandardPaths::data_directory() builder.append("/.data"sv); #elif defined(AK_OS_MACOS) builder.append("/Library/Application Support"sv); +#elif defined(AK_OS_HAIKU) + builder.append("/config/non-packaged/data"sv); #else builder.append("/.local/share"sv); #endif @@ -99,6 +107,8 @@ ErrorOr StandardPaths::runtime_directory() #elif defined(AK_OS_MACOS) builder.append(home_directory()); builder.append("/Library/Application Support"sv); +#elif defined(AK_OS_HAIKU) + builder.append("/boot/system/var/shared_memory"sv); #else auto uid = getuid(); builder.appendff("/run/user/{}", uid); @@ -114,19 +124,33 @@ DeprecatedString StandardPaths::tempfile_directory() ErrorOr> StandardPaths::font_directories() { +#if defined(AK_OS_HAIKU) + Vector paths_vector; + char** paths; + size_t paths_count; + if (find_paths(B_FIND_PATH_FONTS_DIRECTORY, NULL, &paths, &paths_count) == B_OK) { + for (size_t i = 0; i < paths_count; ++i) { + StringBuilder builder; + builder.append(paths[i], strlen(paths[i])); + paths_vector.append(TRY(builder.to_string())); + } + } + return paths_vector; +#else return Vector { { -#if defined(AK_OS_SERENITY) +# if defined(AK_OS_SERENITY) "/res/fonts"_string, -#elif defined(AK_OS_MACOS) +# elif defined(AK_OS_MACOS) "/System/Library/Fonts"_string, "/Library/Fonts"_string, TRY(String::formatted("{}/Library/Fonts"sv, home_directory())), -#else +# else "/usr/share/fonts"_string, "/usr/local/share/fonts"_string, TRY(String::formatted("{}/.local/share/fonts"sv, home_directory())), -#endif +# endif } }; +#endif } }