tarzan 0.1.1

Random-access, seekable .tar.zst archives with an embedded table-of-contents index
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pub mod identity;
pub mod toc;

pub use identity::SKIPPABLE_FRAME_MAGIC;

/// Frame type byte embedded in every tarzan skippable-frame payload after `TRZN`.
pub const FRAME_TYPE_IDENTITY: u8 = 0x01;
pub const FRAME_TYPE_TOC: u8 = 0x02;

/// Wraps `payload` in a zstd skippable frame.
pub(crate) fn encode_skippable_frame(payload: &[u8]) -> Vec<u8> {
    let mut out = Vec::with_capacity(8 + payload.len());
    out.extend_from_slice(&identity::SKIPPABLE_FRAME_MAGIC.to_le_bytes());
    out.extend_from_slice(&(payload.len() as u32).to_le_bytes());
    out.extend_from_slice(payload);
    out
}