Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
pub enum MatchPattern {
/// A glob pattern.
Pattern(crate::Pattern),
+
+ /// A literal match.
+ Literal(Vec<u8>),
}
impl From<crate::Pattern> for MatchPattern {
}
}
+impl MatchPattern {
+ pub fn literal(literal: impl Into<Vec<u8>>) -> Self {
+ MatchPattern::Literal(literal.into())
+ }
+}
+
/// A pattern can be used as an include or an exclude pattern. In a list of `MatchEntry`s, later
/// patterns take precedence over earlier patterns and the order of includes vs excludes makes a
/// difference.
fn matches_path_exact_do(&self, path: &[u8]) -> bool {
match &self.pattern {
MatchPattern::Pattern(pattern) => pattern.matches(path),
+ MatchPattern::Literal(literal) => path == &literal[..],
}
}