diff options
Diffstat (limited to 'rust/vendor/lzma-rs/src/encode/lzma2.rs')
-rw-r--r-- | rust/vendor/lzma-rs/src/encode/lzma2.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/rust/vendor/lzma-rs/src/encode/lzma2.rs b/rust/vendor/lzma-rs/src/encode/lzma2.rs new file mode 100644 index 0000000..ead0726 --- /dev/null +++ b/rust/vendor/lzma-rs/src/encode/lzma2.rs @@ -0,0 +1,26 @@ +use byteorder::{BigEndian, WriteBytesExt}; +use std::io; + +pub fn encode_stream<R, W>(input: &mut R, output: &mut W) -> io::Result<()> +where + R: io::BufRead, + W: io::Write, +{ + let mut buf = vec![0u8; 0x10000]; + loop { + let n = input.read(&mut buf)?; + if n == 0 { + // status = EOF + output.write_u8(0)?; + break; + } + + // status = uncompressed reset dict + output.write_u8(1)?; + // unpacked size + output.write_u16::<BigEndian>((n - 1) as u16)?; + // contents + output.write_all(&buf[..n])?; + } + Ok(()) +} |