diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-12 02:40:16 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-12 02:40:16 -0500 |
| commit | bf7a57fc55493247a624ecfd65e4d73964e7d8d2 (patch) | |
| tree | 0a4b2d6123672768187a5ab863e63cd3f21bb319 /libs/usvfs/test/fixtures/usvfs_global_test/RedFileSystemTest/example.cpp | |
| parent | e0fb66428a9b78b4c326df8d7e30429a5b271d74 (diff) | |
Remove vendored usvfs and Windows-only usvfs code paths
The Linux port uses its own in-process FUSE VFS (FuseConnector), so
usvfs was dead weight: libs/usvfs/ was never built, usvfsconnector.cpp
was explicitly REMOVE_ITEM'd from the source list, and every call site
was already guarded by #ifdef _WIN32 with a working Linux branch (the
Windows build is also broken on this branch, since FUSE3 is a hard
find_package dependency).
- Drop libs/usvfs/ and src/src/usvfsconnector.{cpp,h}
- Collapse #ifdef _WIN32 / usvfs include branches in organizercore,
mainwindow, settings, util, spawn
- Remove getUsvfsVersionString() and the "usvfs: ..." log field
- Remove vfs32/64DLLName APPPARAMs (nothing reads them)
- Relabel About dialog "usvfs:" row to "VFS: FUSE 3"
Diffstat (limited to 'libs/usvfs/test/fixtures/usvfs_global_test/RedFileSystemTest/example.cpp')
| -rw-r--r-- | libs/usvfs/test/fixtures/usvfs_global_test/RedFileSystemTest/example.cpp | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/libs/usvfs/test/fixtures/usvfs_global_test/RedFileSystemTest/example.cpp b/libs/usvfs/test/fixtures/usvfs_global_test/RedFileSystemTest/example.cpp deleted file mode 100644 index 9a79d16..0000000 --- a/libs/usvfs/test/fixtures/usvfs_global_test/RedFileSystemTest/example.cpp +++ /dev/null @@ -1,139 +0,0 @@ -#include <filesystem> -#include <fstream> - -std::filesystem::path storages_path; -std::filesystem::path hudpainter_path; -bool has_mo2; - -// See below main() for implementation. -void request_directory(std::filesystem::path); -std::filesystem::path restrict_path(std::filesystem::path); -std::vector<std::filesystem::path> get_files(); -std::string read_file(std::filesystem::path); -void write_file(std::filesystem::path); - -// Expected path when not using MO2 -int main() -{ - // RedFileSystem plugin (DLL) is loaded. - has_mo2 = GetModuleHandle(TEXT("usvfs_x64.dll")) != nullptr; - - // Setup paths - auto path = std::filesystem::absolute("."); // <GAME>\bin\x64 - auto game_path = path.parent_path().parent_path(); // <GAME> - - storages_path = game_path / "r6" / "storages"; // <GAME>\r6\storages - - // Create storages directory if it is no present. - request_directory(storages_path); // <GAME>\r6\storages - - // Game is running... - - // HUD Painter request its storage endpoint. - hudpainter_path = storages_path / "HUDPainter"; - request_directory(hudpainter_path); // <GAME>\r6\storages\HUDPainter - - // HUD Painter request a file (present in archive). - auto default_path = - restrict_path("DEFAULT.json"); // <GAME>\r6\storages\HUDPainter\DEFAULT.json - - // HUD Painter read file in `default_path` with success. - auto data = read_file(default_path); // <GAME>\r6\storages\HUDPainter\DEFAULT.json - - // HUD Painter request another file. - auto test_path = - restrict_path("TEST.json"); // <GAME>\r6\storages\HUDPainter\TEST.json - - // (Bug A) HUD Painter write file in `test_path`. - write_file(test_path); // <GAME>\r6\storages\HUDPainter\TEST.json - // file is created with workaround, not created otherwise. - - // (Bug B) HUD Painter request list of files. - // TEST.json is successfully created when using workaround. - auto files = get_files(); // [0] <GAME>\r6\storages\HUDPainter\DEFAULT.json - - // files.size() == 1 - - // Expect: - // files.size() == 2 - // - // [0] <GAME>\r6\storages\HUDPainter\DEFAULT.json - // [1] <GAME>\r6\storages\HUDPainter\TEST.json -} - -// Create directory if it is no present -void request_directory(std::filesystem::path path) -{ - bool is_present = std::filesystem::exists(path); - - if (is_present) { - return; - } - std::filesystem::create_directory(path); -} - -// Resolve path for HUDPainter (security layer) -std::filesystem::path restrict_path(std::filesystem::path path) -{ - auto real_path = std::filesystem::weakly_canonical(hudpainter_path / path); - - // Workaround when using MO2 - if (has_mo2) { - return real_path; - } - // Expected implementation without MO2 - if (real_path.string().find(hudpainter_path.string() + "\\") != 0) { - // "throw" error - } - return real_path; -} - -// List files in storage of HUDPainter. -std::vector<std::filesystem::path> get_files() -{ - std::vector<std::filesystem::path> files; - auto entries = std::filesystem::directory_iterator(hudpainter_path); - - for (const auto& entry : entries) { - if (entry.is_regular_file()) { - auto file_name = entry.path().filename(); - auto file_path = - hudpainter_path / - file_name; // Culprit of bug B. When using entry.path() directly, it works. - - files.emplace_back(file_path); - } - } - return files; -} - -std::string read_file(std::filesystem::path path) -{ - std::ifstream stream; - - // With workaround: - // std::filesystem::create_directories(path.parent_path()); - stream.open(path); - if (!stream.is_open()) { - return ""; - } - std::stringstream data; - - data << stream.rdbuf(); - stream.close(); - return data.str(); -} - -void write_file(std::filesystem::path path) -{ - std::ofstream stream; - - // With workaround: - // std::filesystem::create_directories(path.parent_path()); - stream.open(path, std::ios_base::trunc); - if (!stream.is_open()) { - return; - } - stream << "<DATA>"; - stream.close(); -} |
