zipatch-rs 1.1.1

Parser for FFXIV ZiPatch patch files
Documentation
# zipatch-rs

[![Crates.io](https://img.shields.io/crates/v/zipatch-rs.svg)](https://crates.io/crates/zipatch-rs)
[![docs.rs](https://img.shields.io/docsrs/zipatch-rs)](https://docs.rs/zipatch-rs)
[![CI](https://github.com/reh3502/zipatch-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/reh3502/zipatch-rs/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/reh3502/zipatch-rs/graph/badge.svg)](https://codecov.io/gh/reh3502/zipatch-rs)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![MSRV: 1.85](https://img.shields.io/badge/rustc-1.85+-orange.svg)](https://blog.rust-lang.org/2025/02/20/Rust-1.85.0/)

A Rust library for parsing and applying FFXIV ZiPatch files (`.patch`).

ZiPatch is the binary patch format used by Final Fantasy XIV to deliver game updates. It describes file additions, deletions, and binary diffs that are applied to the game installation to bring it up to a new version.

## What it parses

**Chunk types**

| Tag | Name | Notes |
|-----|------|-------|
| `FHDR` | File Header | V2 and V3 |
| `APLY` | Apply Option | ignore-missing, ignore-old-mismatch flags |
| `APFS` | Apply Free Space | |
| `ADIR` | Add Directory | |
| `DELD` | Delete Directory | |
| `SQPK` | SQPK command block | See sub-commands below |
| `EOF_` | End of File | |

**SQPK sub-commands**

| Command | Name | Notes |
|---------|------|-------|
| `A` | AddData | Writes data into a `.dat` file at a block offset |
| `D` | DeleteData | Zeros a block range in a `.dat` file |
| `E` | ExpandData | Expands a `.dat` file with an empty block |
| `H` | Header | Writes version or index headers into `.dat`/`.index` files |
| `F` | File | AddFile, DeleteFile, RemoveAll, MakeDirTree; supports DEFLATE-compressed blocks |
| `T` | TargetInfo | Platform (Win32, PS3, PS4), region, debug flag |
| `I` | Index | Parsed; no-op at apply time |
| `X` | PatchInfo | Parsed; no-op at apply time |

## License

MIT — see [LICENSE](LICENSE).