MCPcopy Create free account
hub / github.com/Bloom-Engine/engine / deflate_store

Function deflate_store

native/linux/src/lib.rs:2903–2926  ·  view source on GitHub ↗
(data: &[u8])

Source from the content-addressed store, hash-verified

2901}
2902
2903fn deflate_store(data: &[u8]) -> Vec<u8> {
2904 let mut out = Vec::new();
2905 out.push(0x78);
2906 out.push(0x01);
2907
2908 let mut remaining = data.len();
2909 let mut offset = 0;
2910 while remaining > 0 {
2911 let block_size = remaining.min(65535);
2912 let is_last = remaining <= 65535;
2913 out.push(if is_last { 1 } else { 0 });
2914 let len = block_size as u16;
2915 let nlen = !len;
2916 out.extend_from_slice(&len.to_le_bytes());
2917 out.extend_from_slice(&nlen.to_le_bytes());
2918 out.extend_from_slice(&data[offset..offset + block_size]);
2919 offset += block_size;
2920 remaining -= block_size;
2921 }
2922
2923 let adler = adler32(data);
2924 out.extend_from_slice(&adler.to_be_bytes());
2925 out
2926}
2927
2928fn adler32(data: &[u8]) -> u32 {
2929 let mut a: u32 = 1;

Callers 1

encode_pngFunction · 0.70

Calls 2

adler32Function · 0.70
pushMethod · 0.45

Tested by

no test coverage detected