Skip to main content

Platform

Enum Platform 

Source
#[non_exhaustive]
pub enum Platform { Win32, Ps3, Ps4, Unknown(u16), }
Expand description

Target platform for SqPack file path resolution.

FFXIV’s SqPack archive files live in platform-specific subdirectories under the game install root. For example, a data file for the Windows client lives at sqpack/ffxiv/000000.win32.dat0, while the PS4 equivalent is sqpack/ffxiv/000000.ps4.dat0. The Platform value stored in an ApplyContext selects which suffix is used when resolving chunk targets to filesystem paths.

§Default

An ApplyContext defaults to Platform::Win32. Override this at construction time with ApplyContext::with_platform.

§Runtime override via SqpkTargetInfo

In practice, real FFXIV patch files begin with an SQPK T chunk (chunk::SqpkTargetInfo) that declares the target platform. When Apply::apply is called on that chunk (see src/apply/sqpk.rs, apply_target_info), it overwrites ApplyContext::platform with the decoded Platform value. This means the default is only relevant for synthetic patches or when you know the target in advance and want to assert it before the stream starts.

§Forward compatibility

The enum is #[non_exhaustive]. The Platform::Unknown variant preserves unrecognised platform IDs so that newer patch files do not fail parsing when a new platform is introduced. Path resolution for SqPack .dat/.index files refuses to guess and returns ZiPatchError::UnsupportedPlatform carrying the raw platform_id — silently substituting a default layout would risk writing platform-specific data to the wrong file.

§Display

Implements std::fmt::Display: "Win32", "PS3", "PS4", or "Unknown(N)" where N is the raw platform ID.

§Example

use zipatch_rs::{ApplyContext, Platform};

let ctx = ApplyContext::new("/opt/ffxiv/game")
    .with_platform(Platform::Win32);

assert_eq!(ctx.platform(), Platform::Win32);
assert_eq!(format!("{}", Platform::Unknown(99)), "Unknown(99)");

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Win32

Windows / PC client (win32 path suffix).

This is the platform used by all current PC releases of FFXIV and is the default for ApplyContext.

§

Ps3

PlayStation 3 client (ps3 path suffix).

PS3 support was discontinued after FFXIV: A Realm Reborn. Patches targeting this platform are no longer issued by Square Enix, but the variant is retained for completeness.

§

Ps4

PlayStation 4 client (ps4 path suffix).

Active platform alongside Windows. PS4 patches share the same chunk structure as Windows patches but target different file paths.

§

Unknown(u16)

Unrecognised platform ID preserved from a SqpkTargetInfo chunk.

When apply_target_info in src/apply/sqpk.rs encounters a platform_id it does not recognise, it stores the raw u16 value here and emits a warn! tracing event. Subsequent SqPack path resolution returns ZiPatchError::UnsupportedPlatform carrying the same u16 rather than silently routing writes to a default layout — quietly substituting win32 paths for an unknown platform would corrupt the on-disk install with platform-specific data written to the wrong files. Non-SqPack chunks (e.g. ADIR, DELD, or SqpkFile operations resolved via generic_path) continue to apply, so an unknown platform only aborts at the first .dat or .index lookup.

Trait Implementations§

Source§

impl Clone for Platform

Source§

fn clone(&self) -> Platform

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 Platform

Source§

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

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

impl Display for Platform

Source§

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

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

impl PartialEq for Platform

Source§

fn eq(&self, other: &Platform) -> 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 Copy for Platform

Source§

impl Eq for Platform

Source§

impl StructuralPartialEq for Platform

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> CustomError for T
where T: Display + Debug + Send + Sync + 'static,

Source§

fn as_any(&self) -> &(dyn Any + Sync + Send + 'static)

Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + Sync + Send + 'static)

Source§

fn as_box_any(self: Box<T>) -> Box<dyn Any + Sync + Send>

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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