26 lines
612 B
Rust
26 lines
612 B
Rust
|
use crate::database::LocateDb;
|
||
|
use structview::{u32_be, View};
|
||
|
|
||
|
#[derive(Clone, Copy, View)]
|
||
|
#[repr(C)]
|
||
|
pub struct MlHeader {
|
||
|
magic: [u8; 8], /* '\0', 'm', 'l', 'o', 'c', 'a', 't', 'e' */
|
||
|
conf_size: u32_be,
|
||
|
version: u8,
|
||
|
check_visibility: u8,
|
||
|
pad: [u8; 2],
|
||
|
}
|
||
|
|
||
|
impl LocateDb for MlHeader {
|
||
|
fn is(magic: &[u8]) -> bool {
|
||
|
if magic.len() < 32 {
|
||
|
false
|
||
|
} else {
|
||
|
match MlHeader::view(&magic[0..32]) {
|
||
|
Ok(header) => header.magic[0..8] == *b"\0mlocate" && header.version == 0,
|
||
|
Err(_) => false,
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|