load_zlib_header
parent
f5ceea654e
commit
9b73cb3513
|
@ -2,6 +2,34 @@
|
||||||
|
|
||||||
use crate::durandal::err::*;
|
use crate::durandal::err::*;
|
||||||
|
|
||||||
|
/// Loads a ZLIB file header.
|
||||||
|
pub fn load_zlib_header(b: &[u8]) -> ResultS<usize>
|
||||||
|
{
|
||||||
|
const CM: u8 = 0b00001111;
|
||||||
|
const CINFO: u8 = 0b11110000;
|
||||||
|
const FDICT: u8 = 0b00100000;
|
||||||
|
|
||||||
|
read_data! {
|
||||||
|
2, BE in b =>
|
||||||
|
fcheck = u16[0];
|
||||||
|
cmf = u8[0];
|
||||||
|
flg = u8[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
let cm = cmf & CM;
|
||||||
|
let cinfo = cmf & CINFO >> 4;
|
||||||
|
|
||||||
|
if cm != 8 || fcheck % 31 != 0 || cinfo > 7 {
|
||||||
|
bail!("not zlib format");
|
||||||
|
}
|
||||||
|
|
||||||
|
if flg & FDICT != 0 {
|
||||||
|
bail!("dictionary not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(2)
|
||||||
|
}
|
||||||
|
|
||||||
/// Loads a GZIP file header.
|
/// Loads a GZIP file header.
|
||||||
pub fn load_gzip_header(b: &[u8]) -> ResultS<usize>
|
pub fn load_gzip_header(b: &[u8]) -> ResultS<usize>
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue