rlocate/crates/mlocate/src/mlocate_db/mod.rs

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,
}
}
}
}