summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2019-06-16 19:00:09 -0400
committerAndrew Gallant <jamslam@gmail.com>2019-06-16 19:02:02 -0400
commitd1389db2e39802d5e04dc7b902fd2b1f9f615b01 (patch)
tree13693f6426637dc4d24a3616f7d2e8f443dd06dd
parent50bcb7409efc30b6878edc2b0c2a3d438ce2f619 (diff)
search: better errors for preprocessor commands
If a preprocessor command could not be started, we now show some additional context with the error message. Previously, it showed something like this: some/file: No such file or directory (os error 2) Which is itself pretty misleading. Now it shows: some/file: preprocessor command could not start: '"nonexist" "some/file"': No such file or directory (os error 2) Fixes #1302
-rw-r--r--CHANGELOG.md2
-rw-r--r--src/search.rs14
2 files changed, 15 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 51fe7fa0..f3a30f45 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@ Bug fixes:
* [BUG #1259](https://github.com/BurntSushi/ripgrep/issues/1259):
Fix bug where the last byte of a `-f file` was stripped if it wasn't a `\n`.
+* [BUG #1302](https://github.com/BurntSushi/ripgrep/issues/1302):
+ Show better error messages when a non-existent preprocessor command is given.
11.0.1 (2019-04-16)
diff --git a/src/search.rs b/src/search.rs
index 149f67c3..c866b4bf 100644
--- a/src/search.rs
+++ b/src/search.rs
@@ -396,7 +396,19 @@ impl<W: WriteColor> SearchWorker<W> {
let mut cmd = Command::new(&bin);
cmd.arg(path).stdin(Stdio::from(File::open(path)?));
- let rdr = self.command_builder.build(&mut cmd)?;
+ let rdr = self
+ .command_builder
+ .build(&mut cmd)
+ .map_err(|err| {
+ io::Error::new(
+ io::ErrorKind::Other,
+ format!(
+ "preprocessor command could not start: '{:?}': {}",
+ cmd,
+ err,
+ ),
+ )
+ })?;
self.search_reader(path, rdr).map_err(|err| {
io::Error::new(
io::ErrorKind::Other,