Add support to pack xp3 files

This commit is contained in:
2025-10-10 20:52:45 +08:00
parent 021fe5b71a
commit 309bccd485
15 changed files with 692 additions and 4 deletions

View File

@@ -0,0 +1,28 @@
use adler::Adler32;
use std::io::{PipeReader, Read};
pub struct Reader {
inner: PipeReader,
adler: Adler32,
}
impl Reader {
pub fn new(inner: PipeReader) -> Self {
Self {
inner,
adler: Adler32::new(),
}
}
pub fn into_checksum(self) -> u32 {
self.adler.checksum()
}
}
impl Read for Reader {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
let n = self.inner.read(buf)?;
self.adler.write_slice(&buf[..n]);
Ok(n)
}
}