1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use crate::consts::*;

pub fn validate_name(name: &[u8]) -> bool {
    if name.len() > MAX_SIZE as usize {
        return false;
    }
    let non_zero_bytes: Vec<u8> = name.iter().take_while(|&b| *b != 0).copied().collect();

    for b in non_zero_bytes {
        if !(b >= b'a' && b <= b'z')
            && !(b >= b'A' && b <= b'Z')
            && !(b >= b'0' && b <= b'9')
            && !(b == b'.' || b == b'/' || b == b'_' || b == b'+' || b == b'-')
        {
            return false;
        }
    }
    true
}