summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--grep-matcher/src/lib.rs10
-rw-r--r--grep-printer/src/standard.rs2
2 files changed, 11 insertions, 1 deletions
diff --git a/grep-matcher/src/lib.rs b/grep-matcher/src/lib.rs
index 49d6358f..9a067efa 100644
--- a/grep-matcher/src/lib.rs
+++ b/grep-matcher/src/lib.rs
@@ -266,6 +266,16 @@ impl LineTerminator {
LineTerminatorImp::CRLF => &[b'\r', b'\n'],
}
}
+
+ /// Returns true if and only if the given slice ends with this line
+ /// terminator.
+ ///
+ /// If this line terminator is `CRLF`, then this only checks whether the
+ /// last byte is `\n`.
+ #[inline]
+ pub fn is_suffix(&self, slice: &[u8]) -> bool {
+ slice.last().map_or(false, |&b| b == self.as_byte())
+ }
}
impl Default for LineTerminator {
diff --git a/grep-printer/src/standard.rs b/grep-printer/src/standard.rs
index 183fa4b5..6c8976b8 100644
--- a/grep-printer/src/standard.rs
+++ b/grep-printer/src/standard.rs
@@ -1396,7 +1396,7 @@ impl<'a, M: Matcher, W: WriteColor> StandardImpl<'a, M, W> {
}
fn has_line_terminator(&self, buf: &[u8]) -> bool {
- buf.last() == Some(&self.searcher.line_terminator().as_byte())
+ self.searcher.line_terminator().is_suffix(buf)
}
fn is_context(&self) -> bool {