diff options
author | Daniel <kingdread@gmx.de> | 2020-06-12 14:25:17 +0200 |
---|---|---|
committer | Daniel <kingdread@gmx.de> | 2020-06-12 14:25:17 +0200 |
commit | 3d4ac61f9d8506ef82301772fe41c75d0f19e5a4 (patch) | |
tree | 848ff454f2d0b156b697ca53a8ebb82576154895 /src | |
parent | a8481afdac21b8b846d5fe159678972a879b11c0 (diff) | |
download | raidgrep-3d4ac61f9d8506ef82301772fe41c75d0f19e5a4.tar.gz raidgrep-3d4ac61f9d8506ef82301772fe41c75d0f19e5a4.tar.bz2 raidgrep-3d4ac61f9d8506ef82301772fe41c75d0f19e5a4.zip |
report invalid filters that are valid regexes
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 133bd2d..674d128 100644 --- a/src/main.rs +++ b/src/main.rs @@ -129,10 +129,16 @@ impl Opt { fn build_filter(&self) -> Result<Box<dyn LogFilter>> { // As a shortcut, we allow only the regular expression to be given, to retain the behaviour // before the filter changes. + + // Special characters that when present will prevent the filter to be interpreted as a + // regex. This is to ensure that errors are properly reported on invalid filterlines + // instead of being swallowed because the filter was taken as a (valid) regex: + const SPECIAL_CHARS: &[char] = &['-', '(', ')', ':', '<', '>', '=']; + if self.expression.len() == 1 { let line = &self.expression[0]; let maybe_filter = build_filter(line); - if maybe_filter.is_err() && !line.starts_with('-') { + if maybe_filter.is_err() && !line.contains(SPECIAL_CHARS) { let maybe_regex = Regex::new(line); if let Ok(rgx) = maybe_regex { let filter = filters::player::any( |