From c2b7b4a11ed2eb565c4a989e46c65af2e9c2973a Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sat, 29 Jun 2024 19:15:09 +0200 Subject: [PATCH] fix: Default folders still not being created correctly on Linux --- main/gui/source/init/tasks.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/main/gui/source/init/tasks.cpp b/main/gui/source/init/tasks.cpp index 04a9fc007..78873fbd4 100644 --- a/main/gui/source/init/tasks.cpp +++ b/main/gui/source/init/tasks.cpp @@ -31,6 +31,17 @@ namespace hex::init { return true; } + static bool isSubPathWritable(std::fs::path path) { + while (path.root_directory() != path) { + if (hex::fs::isPathWritable(path)) + return true; + + path = path.parent_path(); + } + + return false; + } + bool createDirectories() { bool result = true; @@ -38,7 +49,7 @@ namespace hex::init { for (auto path : paths::All) { for (auto &folder : path->all()) { try { - if (hex::fs::isPathWritable(folder.parent_path())) + if (isSubPathWritable(folder.parent_path())) wolv::io::fs::createDirectories(folder); } catch (...) { log::error("Failed to create folder {}!", wolv::util::toUTF8String(folder));