Преглед на файлове

LibCore: Add standard paths for Haiku

nipos преди 1 година
родител
ревизия
ae34c35d64
променени са 1 файла, в които са добавени 28 реда и са изтрити 4 реда
  1. 28 4
      Userland/Libraries/LibCore/StandardPaths.cpp

+ 28 - 4
Userland/Libraries/LibCore/StandardPaths.cpp

@@ -16,6 +16,10 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+#if defined(AK_OS_HAIKU)
+#    include <FindDirectory.h>
+#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<DeprecatedString> 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<Vector<String>> StandardPaths::font_directories()
 {
+#if defined(AK_OS_HAIKU)
+    Vector<String> 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
 }
 
 }