Skip to main content

FileHeaderV3

Struct FileHeaderV3 

Source
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: u32

Number of SqPack entry files referenced by this patch.

§add_directories: u32

Number of ADIR (add directory) chunks in the patch stream.

§delete_directories: u32

Number of DELD (delete directory) chunks in the patch stream.

§delete_data_size: u64

Total 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: u32

Minor format version of the patch file.

§repository_name: u32

Opaque 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: u32

Total count of all SQPK sub-commands across the patch stream.

§sqpk_add_commands: u32

Count of SQPK A (add data) sub-commands.

§sqpk_delete_commands: u32

Count of SQPK D (delete data) sub-commands.

§sqpk_expand_commands: u32

Count of SQPK E (expand data) sub-commands.

§sqpk_header_commands: u32

Count of SQPK H (header write) sub-commands.

§sqpk_file_commands: u32

Count of SQPK F (file operation) sub-commands.

Trait Implementations§

Source§

impl BinRead for FileHeaderV3

Source§

type Args<'__binrw_generated_args_lifetime> = ()

The type used for the args parameter of read_args() and read_options(). Read more
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>

Read Self from the reader using the given Endian and arguments. Read more
Source§

fn read<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self: ReadEndian, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments. Read more
Source§

fn read_be<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments and assuming big-endian byte order. Read more
Source§

fn read_le<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments and assuming little-endian byte order. Read more
Source§

fn read_ne<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read T from the reader assuming native-endian byte order. Read more
Source§

fn read_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek, Self: ReadEndian,

Read Self from the reader using the given arguments. Read more
Source§

fn read_be_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read Self from the reader, assuming big-endian byte order, using the given arguments. Read more
Source§

fn read_le_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read Self from the reader, assuming little-endian byte order, using the given arguments. Read more
Source§

fn read_ne_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read T from the reader, assuming native-endian byte order, using the given arguments. Read more
Source§

impl Clone for FileHeaderV3

Source§

fn clone(&self) -> FileHeaderV3

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FileHeaderV3

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for FileHeaderV3

Source§

fn eq(&self, other: &FileHeaderV3) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl ReadEndian for FileHeaderV3

Source§

const ENDIAN: EndianKind

The endianness of the type.
Source§

impl Eq for FileHeaderV3

Source§

impl StructuralPartialEq for FileHeaderV3

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more