summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2020-05-08 08:53:41 -0400
committerAndrew Gallant <jamslam@gmail.com>2020-05-08 23:24:40 -0400
commit64a4dee4956e9d362eb071bfbd5ed8ad9a608f5c (patch)
tree37eeef53b0af3b0ae7bcef1b8e4b2146af11d37b
parent50840ea43b65dfa7e51b695a7798f6c43808ccc2 (diff)
cli: improve invalid UTF-8 pattern error message
When a pattern with invalid UTF-8 is given, the error message suggests unqualified use of hex escape sequences to match arbitrary bytes. But you *also* need to disable Unicode mode. So include that in the error message. Fixes #1339
-rw-r--r--CHANGELOG.md2
-rw-r--r--crates/cli/src/pattern.rs11
2 files changed, 6 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9c8c7b3b..4ce6ae7d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@ TBD
===
Bug fixes:
+* [BUG #1339](https://github.com/BurntSushi/ripgrep/issues/1339):
+ Improve error message when a pattern with invalid UTF-8 is provided.
* [BUG #1524](https://github.com/BurntSushi/ripgrep/issues/1524):
Note how to escape a `$` when using `--replace`.
* [BUG #1537](https://github.com/BurntSushi/ripgrep/issues/1537):
diff --git a/crates/cli/src/pattern.rs b/crates/cli/src/pattern.rs
index 8341e4da..11e4a8b4 100644
--- a/crates/cli/src/pattern.rs
+++ b/crates/cli/src/pattern.rs
@@ -38,9 +38,9 @@ impl fmt::Display for InvalidPatternError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(
f,
- "found invalid UTF-8 in pattern at byte offset {} \
- (use hex escape sequences to match arbitrary bytes \
- in a pattern, e.g., \\xFF): '{}'",
+ "found invalid UTF-8 in pattern at byte offset {}: {} \
+ (disable Unicode mode and use hex escape sequences to match \
+ arbitrary bytes in a pattern, e.g., '(?-u)\\xFF')",
self.valid_up_to, self.original,
)
}
@@ -64,10 +64,7 @@ pub fn pattern_from_os(pattern: &OsStr) -> Result<&str, InvalidPatternError> {
.to_string_lossy()
.find('\u{FFFD}')
.expect("a Unicode replacement codepoint for invalid UTF-8");
- InvalidPatternError {
- original: escape_os(pattern),
- valid_up_to: valid_up_to,
- }
+ InvalidPatternError { original: escape_os(pattern), valid_up_to }
})
}