From 7ee008e150bc5bcf76082d726f719ee0fdfda982 Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Wed, 11 Feb 2026 02:37:39 -0600 Subject: Fluorine Manager: full Linux port of Mod Organizer 2 Complete native Linux port with FUSE-based virtual filesystem, Proton/umu-run integration, and Flatpak packaging. Key features: - FUSE VFS replacing Windows USVFS (in-process + standalone helper for Flatpak) - Proton/GE-Proton/umu-run launcher with env var forwarding - Flatpak support (sandbox-aware VFS, NXM handler, umu-run) - Wine prefix management UI - Case-insensitive path resolution for Linux filesystems - QSettings-safe INI handling (avoids Bethesda INI corruption) - Portable instance support with auto-generated launcher scripts Co-Authored-By: Claude Opus 4.6 --- libs/bsa_ffi/include/bsa_ffi.h | 54 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 libs/bsa_ffi/include/bsa_ffi.h (limited to 'libs/bsa_ffi/include') diff --git a/libs/bsa_ffi/include/bsa_ffi.h b/libs/bsa_ffi/include/bsa_ffi.h new file mode 100644 index 0000000..32dcee3 --- /dev/null +++ b/libs/bsa_ffi/include/bsa_ffi.h @@ -0,0 +1,54 @@ +#ifndef BSA_FFI_H +#define BSA_FFI_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char **items; + size_t count; + char *error; +} BsaFfiStringList; + +typedef void (*BsaProgressCallback)(uint32_t done, uint32_t total, + const char *current_path); + +/* Returns list of paths in archive. On error, error is non-null and must be freed with + * bsa_ffi_string_list_free(). */ +BsaFfiStringList bsa_ffi_list_files(const char *archive_path); + +void bsa_ffi_string_list_free(BsaFfiStringList list); + +/* Returns NULL on success, else an allocated error string (free with bsa_ffi_string_free). */ +char *bsa_ffi_extract_all(const char *archive_path, const char *output_dir, + BsaProgressCallback progress_cb, const int *cancel_flag); + +/* game_id uses CLI ids from GameVersion::cli_name(): + * morrowind, oblivion, fo3, fonv, skyrimle, skyrimse, + * fo4-fo76, fo4ng-v7, fo4ng-v8, starfield-v2, starfield-v3 + */ +char *bsa_ffi_pack_dir(const char *input_dir, const char *output_archive, + const char *game_id, BsaProgressCallback progress_cb, + const int *cancel_flag); + +/* include_mode: + * 0 = all files + * 1 = exclude .dds + * 2 = only .dds + */ +char *bsa_ffi_pack_dir_filtered(const char *input_dir, const char *output_archive, + const char *game_id, int include_mode, + BsaProgressCallback progress_cb, + const int *cancel_flag); + +void bsa_ffi_string_free(char *s); + +#ifdef __cplusplus +} +#endif + +#endif -- cgit v1.3.1