pub struct FileHeaderV3 {Show 13 fields
pub patch_type: [u8; 4],
pub entry_files: u32,
pub add_directories: u32,
pub delete_directories: u32,
pub delete_data_size: u64,
pub minor_version: u32,
pub repository_name: u32,
pub commands: u32,
pub sqpk_add_commands: u32,
pub sqpk_delete_commands: u32,
pub sqpk_expand_commands: u32,
pub sqpk_header_commands: u32,
pub sqpk_file_commands: u32,
}Expand description
FHDR v3 body: full patch metadata for modern FFXIV patch files.
All XIVARR+ game-data patches use version 3. The additional fields provide a complete statistical summary of the patch content that patch management tooling can use without scanning every chunk. The counts are informational and are not verified during apply.
After the fields listed here, the wire format includes 0xB8 bytes of trailing unknown data that the parser intentionally ignores (the reference calls them “probably irrelevant”).
See lib/FFXIVQuickLauncher/.../Chunk/FileHeaderChunk.cs (the ReadChunk
method, version == 3 branch).
Fields§
§patch_type: [u8; 4]4-byte ASCII patch type tag, e.g. b"D000" for a game-data patch or
b"H000" for a boot/header patch.
entry_files: u32Number of SqPack entry files referenced by this patch.
add_directories: u32Number of ADIR (add directory) chunks in the patch stream.
delete_directories: u32Number of DELD (delete directory) chunks in the patch stream.
delete_data_size: u64Total bytes that will be zeroed or removed by SQPK D (delete data)
commands.
Stored on the wire as two consecutive u32 BE values in
low-word / high-word order (i.e. lo | (hi << 32)). This matches the
C# comment “Split in 2 DWORD; Low, High”. The read_split_u64 parser
reconstructs the full 64-bit value.
minor_version: u32Minor format version of the patch file.
repository_name: u32Opaque identifier for the SqPack repository this patch targets.
In practice this corresponds to the game repository (e.g. ffxiv vs.
expansion repositories), but the crate treats it as an opaque u32.
commands: u32Total count of all SQPK sub-commands across the patch stream.
sqpk_add_commands: u32Count of SQPK A (add data) sub-commands.
sqpk_delete_commands: u32Count of SQPK D (delete data) sub-commands.
sqpk_expand_commands: u32Count of SQPK E (expand data) sub-commands.
sqpk_header_commands: u32Count of SQPK H (header write) sub-commands.
sqpk_file_commands: u32Count of SQPK F (file operation) sub-commands.
Trait Implementations§
Source§impl BinRead for FileHeaderV3
impl BinRead for FileHeaderV3
Source§fn read_options<R: Read + Seek>(
__binrw_generated_var_reader: &mut R,
__binrw_generated_var_endian: Endian,
__binrw_generated_var_arguments: Self::Args<'_>,
) -> BinResult<Self>
fn read_options<R: Read + Seek>( __binrw_generated_var_reader: &mut R, __binrw_generated_var_endian: Endian, __binrw_generated_var_arguments: Self::Args<'_>, ) -> BinResult<Self>
Source§fn read<R>(reader: &mut R) -> Result<Self, Error>
fn read<R>(reader: &mut R) -> Result<Self, Error>
Self from the reader using default arguments. Read moreSource§fn read_be<R>(reader: &mut R) -> Result<Self, Error>
fn read_be<R>(reader: &mut R) -> Result<Self, Error>
Self from the reader using default arguments and assuming
big-endian byte order. Read moreSource§fn read_le<R>(reader: &mut R) -> Result<Self, Error>
fn read_le<R>(reader: &mut R) -> Result<Self, Error>
Self from the reader using default arguments and assuming
little-endian byte order. Read moreSource§fn read_ne<R>(reader: &mut R) -> Result<Self, Error>
fn read_ne<R>(reader: &mut R) -> Result<Self, Error>
T from the reader assuming native-endian byte order. Read moreSource§fn read_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
fn read_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
Self from the reader using the given arguments. Read moreSource§fn read_be_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
fn read_be_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
Self from the reader, assuming big-endian byte order, using the
given arguments. Read moreSource§impl Clone for FileHeaderV3
impl Clone for FileHeaderV3
Source§fn clone(&self) -> FileHeaderV3
fn clone(&self) -> FileHeaderV3
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FileHeaderV3
impl Debug for FileHeaderV3
Source§impl PartialEq for FileHeaderV3
impl PartialEq for FileHeaderV3
Source§fn eq(&self, other: &FileHeaderV3) -> bool
fn eq(&self, other: &FileHeaderV3) -> bool
self and other values to be equal, and is used by ==.Source§impl ReadEndian for FileHeaderV3
impl ReadEndian for FileHeaderV3
Source§const ENDIAN: EndianKind
const ENDIAN: EndianKind
impl Eq for FileHeaderV3
impl StructuralPartialEq for FileHeaderV3
Auto Trait Implementations§
impl Freeze for FileHeaderV3
impl RefUnwindSafe for FileHeaderV3
impl Send for FileHeaderV3
impl Sync for FileHeaderV3
impl Unpin for FileHeaderV3
impl UnsafeUnpin for FileHeaderV3
impl UnwindSafe for FileHeaderV3
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more