feat(core): introduce skip function for UzlibContext

pull/3644/head
cepetr 3 months ago
parent 7b786ed089
commit 68f4c8ec06

@ -40,7 +40,7 @@ impl<'a> UzlibContext<'a> {
ctx ctx
} }
/// returns Ok(true) if DONE /// Returns `Ok(true)` if all data was read.
pub fn uncompress(&mut self, dest_buf: &mut [u8]) -> Result<bool, ()> { pub fn uncompress(&mut self, dest_buf: &mut [u8]) -> Result<bool, ()> {
unsafe { unsafe {
self.uncomp.dest = dest_buf.as_mut_ptr(); self.uncomp.dest = dest_buf.as_mut_ptr();
@ -55,4 +55,18 @@ impl<'a> UzlibContext<'a> {
} }
} }
} }
/// Skips a specified number of bytes (`nbytes`) in the uncompressed stream.
///
/// Returns `Ok(true)` if all data was read.
pub fn skip(&mut self, nbytes: usize) -> Result<bool, ()> {
let mut result = false; // false => OK, true => DONE
let mut sink = [0u8; 256];
for i in (0..nbytes).step_by(sink.len()) {
let chunk_len = core::cmp::min(sink.len(), nbytes - i);
let chunk = &mut sink[0..chunk_len];
result = self.uncompress(chunk)?;
}
Ok(result)
}
} }

Loading…
Cancel
Save