diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-02-11 02:37:39 -0600 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-02-11 02:37:39 -0600 |
| commit | 7ee008e150bc5bcf76082d726f719ee0fdfda982 (patch) | |
| tree | 27fb39be241fdb5ac2734c574de678977d1856d0 /libs/bsa_ffi/include | |
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 <noreply@anthropic.com>
Diffstat (limited to 'libs/bsa_ffi/include')
| -rw-r--r-- | libs/bsa_ffi/include/bsa_ffi.h | 54 |
1 files changed, 54 insertions, 0 deletions
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 <stddef.h> +#include <stdint.h> + +#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 |
