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
}
/// returns Ok(true) if DONE
/// Returns `Ok(true)` if all data was read.
pub fn uncompress(&mut self, dest_buf: &mut [u8]) -> Result<bool, ()> {
unsafe {
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