1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2024-12-12 19:18:24 +02:00

log: add message when a binary file is skipped

The way we do this is a little hokey but I believe it is correct.

Fixes #2246
This commit is contained in:
Andrew Gallant 2023-11-24 14:56:00 -05:00
parent fded2a5fe1
commit 0e6e9417f1
6 changed files with 47 additions and 3 deletions

View File

@ -77,6 +77,8 @@ Bug fixes:
Fix gitignore parsing bug where a trailing `\/` resulted in an error.
* [BUG #2243](https://github.com/BurntSushi/ripgrep/issues/2243):
Fix `--sort` flag for values other than `path`.
* [BUG #2246](https://github.com/BurntSushi/ripgrep/issues/2246):
Add note in `--debug` logs when binary files are ignored.
* [BUG #2337](https://github.com/BurntSushi/ripgrep/issues/2337):
Improve docs to mention that `--stats` is always implied by `--json`.
* [BUG #2381](https://github.com/BurntSushi/ripgrep/issues/2381):

View File

@ -755,6 +755,23 @@ impl<'p, 's, M: Matcher, W: io::Write> Sink for JSONSink<'p, 's, M, W> {
Ok(!self.should_quit())
}
fn binary_data(
&mut self,
searcher: &Searcher,
binary_byte_offset: u64,
) -> Result<bool, io::Error> {
if searcher.binary_detection().quit_byte().is_some() {
if let Some(ref path) = self.path {
log::debug!(
"ignoring {path}: found binary data at \
offset {binary_byte_offset}",
path = path.display(),
);
}
}
Ok(true)
}
fn begin(&mut self, _searcher: &Searcher) -> Result<bool, io::Error> {
self.json.wtr.reset_count();
self.start_time = Instant::now();

View File

@ -884,9 +884,18 @@ impl<'p, 's, M: Matcher, W: WriteColor> Sink for StandardSink<'p, 's, M, W> {
fn binary_data(
&mut self,
_searcher: &Searcher,
searcher: &Searcher,
binary_byte_offset: u64,
) -> Result<bool, io::Error> {
if searcher.binary_detection().quit_byte().is_some() {
if let Some(ref path) = self.path {
log::debug!(
"ignoring {path}: found binary data at \
offset {binary_byte_offset}",
path = path.as_path().display(),
);
}
}
self.binary_byte_offset = Some(binary_byte_offset);
Ok(true)
}

View File

@ -688,6 +688,23 @@ impl<'p, 's, M: Matcher, W: WriteColor> Sink for SummarySink<'p, 's, M, W> {
Ok(!self.should_quit())
}
fn binary_data(
&mut self,
searcher: &Searcher,
binary_byte_offset: u64,
) -> Result<bool, io::Error> {
if searcher.binary_detection().quit_byte().is_some() {
if let Some(ref path) = self.path {
log::debug!(
"ignoring {path}: found binary data at \
offset {binary_byte_offset}",
path = path.as_path().display(),
);
}
}
Ok(true)
}
fn begin(&mut self, _searcher: &Searcher) -> Result<bool, io::Error> {
if self.path.is_none() && self.summary.config.kind.requires_path() {
return Err(io::Error::error_message(format!(

View File

@ -344,7 +344,7 @@ impl<'a> PrinterPath<'a> {
}
/// Return this path as an actual `Path` type.
fn as_path(&self) -> &Path {
pub(crate) fn as_path(&self) -> &Path {
#[cfg(unix)]
fn imp<'p>(p: &'p PrinterPath<'_>) -> &'p Path {
use std::{ffi::OsStr, os::unix::ffi::OsStrExt};

View File

@ -425,7 +425,6 @@ rgtest!(f411_parallel_search_stats, |dir: Dir, mut cmd: TestCommand| {
dir.create("sherlock_2", SHERLOCK);
let lines = cmd.arg("-j2").arg("--stats").arg("Sherlock").stdout();
dbg!(&lines);
assert!(lines.contains("4 matched lines"));
assert!(lines.contains("2 files contained matches"));
assert!(lines.contains("2 files searched"));