edition: manual changes

This is mostly just about removing 'extern crate' everywhere and fixing
the fallout.
This commit is contained in:
Andrew Gallant 2021-06-01 20:45:45 -04:00
parent af54069c51
commit e824531e38
34 changed files with 93 additions and 182 deletions

4
Cargo.lock generated
View File

@ -224,7 +224,6 @@ dependencies = [
"grep-regex", "grep-regex",
"grep-searcher", "grep-searcher",
"serde", "serde",
"serde_derive",
"serde_json", "serde_json",
"termcolor", "termcolor",
] ]
@ -500,6 +499,9 @@ name = "serde"
version = "1.0.125" version = "1.0.125"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171"
dependencies = [
"serde_derive",
]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"

View File

@ -29,9 +29,3 @@ Add this to your `Cargo.toml`:
[dependencies] [dependencies]
grep-cli = "0.1" grep-cli = "0.1"
``` ```
and this to your crate root:
```rust
extern crate grep_cli;
```

View File

@ -230,7 +230,7 @@ impl DecompressionReaderBuilder {
match self.command_builder.build(&mut cmd) { match self.command_builder.build(&mut cmd) {
Ok(cmd_reader) => Ok(DecompressionReader { rdr: Ok(cmd_reader) }), Ok(cmd_reader) => Ok(DecompressionReader { rdr: Ok(cmd_reader) }),
Err(err) => { Err(err) => {
debug!( log::debug!(
"{}: error spawning command '{:?}': {} \ "{}: error spawning command '{:?}': {} \
(falling back to uncompressed reader)", (falling back to uncompressed reader)",
path.display(), path.display(),
@ -479,7 +479,7 @@ fn default_decompression_commands() -> Vec<DecompressionCommand> {
let bin = match resolve_binary(Path::new(args[0])) { let bin = match resolve_binary(Path::new(args[0])) {
Ok(bin) => bin, Ok(bin) => bin,
Err(err) => { Err(err) => {
debug!("{}", err); log::debug!("{}", err);
return; return;
} }
}; };

View File

@ -88,7 +88,7 @@ impl From<ParseSizeError> for io::Error {
/// ///
/// Additional suffixes may be added over time. /// Additional suffixes may be added over time.
pub fn parse_human_readable_size(size: &str) -> Result<u64, ParseSizeError> { pub fn parse_human_readable_size(size: &str) -> Result<u64, ParseSizeError> {
lazy_static! { lazy_static::lazy_static! {
// Normally I'd just parse something this simple by hand to avoid the // Normally I'd just parse something this simple by hand to avoid the
// regex dep, but we bring regex in any way for glob matching, so might // regex dep, but we bring regex in any way for glob matching, so might
// as well use it. // as well use it.

View File

@ -158,13 +158,6 @@ error message is crafted that typically tells the user how to fix the problem.
#![deny(missing_docs)] #![deny(missing_docs)]
use atty;
#[macro_use]
extern crate lazy_static;
#[macro_use]
extern crate log;
mod decompress; mod decompress;
mod escape; mod escape;
mod human; mod human;

View File

@ -254,7 +254,7 @@ impl CommandReader {
impl Drop for CommandReader { impl Drop for CommandReader {
fn drop(&mut self) { fn drop(&mut self) {
if let Err(error) = self.close() { if let Err(error) = self.close() {
warn!("{}", error); log::warn!("{}", error);
} }
} }
} }

View File

@ -22,12 +22,6 @@ Add this to your `Cargo.toml`:
globset = "0.3" globset = "0.3"
``` ```
and this to your crate root:
```rust
extern crate globset;
```
### Features ### Features
* `serde1`: Enables implementing Serde traits on the `Glob` type. * `serde1`: Enables implementing Serde traits on the `Glob` type.

View File

@ -4,9 +4,6 @@ tool itself, see the benchsuite directory.
*/ */
#![feature(test)] #![feature(test)]
use glob;
extern crate test; extern crate test;
use globset::{Candidate, Glob, GlobMatcher, GlobSet, GlobSetBuilder}; use globset::{Candidate, Glob, GlobMatcher, GlobSet, GlobSetBuilder};

View File

@ -103,16 +103,6 @@ or to enable case insensitive matching.
#![deny(missing_docs)] #![deny(missing_docs)]
use fnv;
#[macro_use]
extern crate log;
use regex;
#[cfg(feature = "serde1")]
extern crate serde;
use std::borrow::Cow; use std::borrow::Cow;
use std::collections::{BTreeMap, HashMap}; use std::collections::{BTreeMap, HashMap};
use std::error::Error as StdError; use std::error::Error as StdError;
@ -423,12 +413,12 @@ impl GlobSet {
required_exts.add(i, ext, p.regex().to_owned()); required_exts.add(i, ext, p.regex().to_owned());
} }
MatchStrategy::Regex => { MatchStrategy::Regex => {
debug!("glob converted to regex: {:?}", p); log::debug!("glob converted to regex: {:?}", p);
regexes.add(i, p.regex().to_owned()); regexes.add(i, p.regex().to_owned());
} }
} }
} }
debug!( log::debug!(
"built glob set; {} literals, {} basenames, {} extensions, \ "built glob set; {} literals, {} basenames, {} extensions, \
{} prefixes, {} suffixes, {} required extensions, {} regexes", {} prefixes, {} suffixes, {} required extensions, {} regexes",
lits.0.len(), lits.0.len(),
@ -556,7 +546,11 @@ impl GlobSetMatchStrategy {
} }
} }
fn matches_into(&self, candidate: &Candidate<'_>, matches: &mut Vec<usize>) { fn matches_into(
&self,
candidate: &Candidate<'_>,
matches: &mut Vec<usize>,
) {
use self::GlobSetMatchStrategy::*; use self::GlobSetMatchStrategy::*;
match *self { match *self {
Literal(ref s) => s.matches_into(candidate, matches), Literal(ref s) => s.matches_into(candidate, matches),
@ -587,7 +581,11 @@ impl LiteralStrategy {
} }
#[inline(never)] #[inline(never)]
fn matches_into(&self, candidate: &Candidate<'_>, matches: &mut Vec<usize>) { fn matches_into(
&self,
candidate: &Candidate<'_>,
matches: &mut Vec<usize>,
) {
if let Some(hits) = self.0.get(candidate.path.as_bytes()) { if let Some(hits) = self.0.get(candidate.path.as_bytes()) {
matches.extend(hits); matches.extend(hits);
} }
@ -614,7 +612,11 @@ impl BasenameLiteralStrategy {
} }
#[inline(never)] #[inline(never)]
fn matches_into(&self, candidate: &Candidate<'_>, matches: &mut Vec<usize>) { fn matches_into(
&self,
candidate: &Candidate<'_>,
matches: &mut Vec<usize>,
) {
if candidate.basename.is_empty() { if candidate.basename.is_empty() {
return; return;
} }
@ -644,7 +646,11 @@ impl ExtensionStrategy {
} }
#[inline(never)] #[inline(never)]
fn matches_into(&self, candidate: &Candidate<'_>, matches: &mut Vec<usize>) { fn matches_into(
&self,
candidate: &Candidate<'_>,
matches: &mut Vec<usize>,
) {
if candidate.ext.is_empty() { if candidate.ext.is_empty() {
return; return;
} }
@ -672,7 +678,11 @@ impl PrefixStrategy {
false false
} }
fn matches_into(&self, candidate: &Candidate<'_>, matches: &mut Vec<usize>) { fn matches_into(
&self,
candidate: &Candidate<'_>,
matches: &mut Vec<usize>,
) {
let path = candidate.path_prefix(self.longest); let path = candidate.path_prefix(self.longest);
for m in self.matcher.find_overlapping_iter(path) { for m in self.matcher.find_overlapping_iter(path) {
if m.start() == 0 { if m.start() == 0 {
@ -700,7 +710,11 @@ impl SuffixStrategy {
false false
} }
fn matches_into(&self, candidate: &Candidate<'_>, matches: &mut Vec<usize>) { fn matches_into(
&self,
candidate: &Candidate<'_>,
matches: &mut Vec<usize>,
) {
let path = candidate.path_suffix(self.longest); let path = candidate.path_suffix(self.longest);
for m in self.matcher.find_overlapping_iter(path) { for m in self.matcher.find_overlapping_iter(path) {
if m.end() == path.len() { if m.end() == path.len() {
@ -732,7 +746,11 @@ impl RequiredExtensionStrategy {
} }
#[inline(never)] #[inline(never)]
fn matches_into(&self, candidate: &Candidate<'_>, matches: &mut Vec<usize>) { fn matches_into(
&self,
candidate: &Candidate<'_>,
matches: &mut Vec<usize>,
) {
if candidate.ext.is_empty() { if candidate.ext.is_empty() {
return; return;
} }
@ -757,7 +775,11 @@ impl RegexSetStrategy {
self.matcher.is_match(candidate.path.as_bytes()) self.matcher.is_match(candidate.path.as_bytes())
} }
fn matches_into(&self, candidate: &Candidate<'_>, matches: &mut Vec<usize>) { fn matches_into(
&self,
candidate: &Candidate<'_>,
matches: &mut Vec<usize>,
) {
for i in self.matcher.matches(candidate.path.as_bytes()) { for i in self.matcher.matches(candidate.path.as_bytes()) {
matches.push(self.map[i]); matches.push(self.map[i]);
} }

View File

@ -26,12 +26,6 @@ Add this to your `Cargo.toml`:
grep = "0.2" grep = "0.2"
``` ```
and this to your crate root:
```rust
extern crate grep;
```
### Features ### Features

View File

@ -22,12 +22,6 @@ Add this to your `Cargo.toml`:
ignore = "0.4" ignore = "0.4"
``` ```
and this to your crate root:
```rust
extern crate ignore;
```
### Example ### Example
This example shows the most basic usage of this crate. This code will This example shows the most basic usage of this crate. This code will

View File

@ -1,7 +1,3 @@
extern crate crossbeam_channel as channel;
use ignore;
use walkdir;
use std::env; use std::env;
use std::io::{self, Write}; use std::io::{self, Write};
use std::path::Path; use std::path::Path;
@ -14,7 +10,7 @@ fn main() {
let mut path = env::args().nth(1).unwrap(); let mut path = env::args().nth(1).unwrap();
let mut parallel = false; let mut parallel = false;
let mut simple = false; let mut simple = false;
let (tx, rx) = channel::bounded::<DirEntry>(100); let (tx, rx) = crossbeam_channel::bounded::<DirEntry>(100);
if path == "parallel" { if path == "parallel" {
path = env::args().nth(2).unwrap(); path = env::args().nth(2).unwrap();
parallel = true; parallel = true;

View File

@ -581,7 +581,7 @@ impl IgnoreBuilder {
.unwrap(); .unwrap();
let (gi, err) = builder.build_global(); let (gi, err) = builder.build_global();
if let Some(err) = err { if let Some(err) = err {
debug!("{}", err); log::debug!("{}", err);
} }
gi gi
}; };

View File

@ -592,7 +592,7 @@ fn parse_excludes_file(data: &[u8]) -> Option<PathBuf> {
// N.B. This is the lazy approach, and isn't technically correct, but // N.B. This is the lazy approach, and isn't technically correct, but
// probably works in more circumstances. I guess we would ideally have // probably works in more circumstances. I guess we would ideally have
// a full INI parser. Yuck. // a full INI parser. Yuck.
lazy_static! { lazy_static::lazy_static! {
static ref RE: Regex = static ref RE: Regex =
Regex::new(r"(?im)^\s*excludesfile\s*=\s*(.+)\s*$").unwrap(); Regex::new(r"(?im)^\s*excludesfile\s*=\s*(.+)\s*$").unwrap();
}; };

View File

@ -46,19 +46,6 @@ See the documentation for `WalkBuilder` for many other options.
#![deny(missing_docs)] #![deny(missing_docs)]
#[macro_use]
extern crate lazy_static;
#[macro_use]
extern crate log;
use walkdir;
#[cfg(windows)]
extern crate winapi_util;
use std::error; use std::error;
use std::fmt; use std::fmt;
use std::io; use std::io;

View File

@ -427,7 +427,7 @@ impl TypesBuilder {
/// If `name` is `all` or otherwise contains any character that is not a /// If `name` is `all` or otherwise contains any character that is not a
/// Unicode letter or number, then an error is returned. /// Unicode letter or number, then an error is returned.
pub fn add(&mut self, name: &str, glob: &str) -> Result<(), Error> { pub fn add(&mut self, name: &str, glob: &str) -> Result<(), Error> {
lazy_static! { lazy_static::lazy_static! {
static ref RE: Regex = Regex::new(r"^[\pL\pN]+$").unwrap(); static ref RE: Regex = Regex::new(r"^[\pL\pN]+$").unwrap();
}; };
if name == "all" || !RE.is_match(name) { if name == "all" || !RE.is_match(name) {

View File

@ -1725,7 +1725,7 @@ fn skip_filesize(
if let Some(fs) = filesize { if let Some(fs) = filesize {
if fs > max_filesize { if fs > max_filesize {
debug!("ignoring {}: {} bytes", path.display(), fs); log::debug!("ignoring {}: {} bytes", path.display(), fs);
true true
} else { } else {
false false
@ -1738,10 +1738,10 @@ fn skip_filesize(
fn should_skip_entry(ig: &Ignore, dent: &DirEntry) -> bool { fn should_skip_entry(ig: &Ignore, dent: &DirEntry) -> bool {
let m = ig.matched_dir_entry(dent); let m = ig.matched_dir_entry(dent);
if m.is_ignore() { if m.is_ignore() {
debug!("ignoring {}: {:?}", dent.path().display(), m); log::debug!("ignoring {}: {:?}", dent.path().display(), m);
true true
} else if m.is_whitelist() { } else if m.is_whitelist() {
debug!("whitelisting {}: {:?}", dent.path().display(), m); log::debug!("whitelisting {}: {:?}", dent.path().display(), m);
false false
} else { } else {
false false

View File

@ -27,9 +27,3 @@ Add this to your `Cargo.toml`:
[dependencies] [dependencies]
grep-matcher = "0.1" grep-matcher = "0.1"
``` ```
and this to your crate root:
```rust
extern crate grep_matcher;
```

View File

@ -30,9 +30,3 @@ Add this to your `Cargo.toml`:
[dependencies] [dependencies]
grep-pcre2 = "0.1" grep-pcre2 = "0.1"
``` ```
and this to your crate root:
```rust
extern crate grep_pcre2;
```

View File

@ -16,7 +16,7 @@ edition = "2018"
[features] [features]
default = ["serde1"] default = ["serde1"]
serde1 = ["base64", "serde", "serde_derive", "serde_json"] serde1 = ["base64", "serde", "serde_json"]
[dependencies] [dependencies]
base64 = { version = "0.13.0", optional = true } base64 = { version = "0.13.0", optional = true }
@ -24,8 +24,7 @@ bstr = "0.2.0"
grep-matcher = { version = "0.1.2", path = "../matcher" } grep-matcher = { version = "0.1.2", path = "../matcher" }
grep-searcher = { version = "0.1.4", path = "../searcher" } grep-searcher = { version = "0.1.4", path = "../searcher" }
termcolor = "1.0.4" termcolor = "1.0.4"
serde = { version = "1.0.77", optional = true } serde = { version = "1.0.77", optional = true, features = ["derive"] }
serde_derive = { version = "1.0.77", optional = true }
serde_json = { version = "1.0.27", optional = true } serde_json = { version = "1.0.27", optional = true }
[dev-dependencies] [dev-dependencies]

View File

@ -26,9 +26,3 @@ Add this to your `Cargo.toml`:
[dependencies] [dependencies]
grep-printer = "0.1" grep-printer = "0.1"
``` ```
and this to your crate root:
```rust
extern crate grep_printer;
```

View File

@ -147,9 +147,6 @@ pub struct ColorSpecs {
/// A `UserColorSpec` can also be converted to a `termcolor::ColorSpec`: /// A `UserColorSpec` can also be converted to a `termcolor::ColorSpec`:
/// ///
/// ```rust /// ```rust
/// extern crate grep_printer;
/// extern crate termcolor;
///
/// # fn main() { /// # fn main() {
/// use termcolor::{Color, ColorSpec}; /// use termcolor::{Color, ColorSpec};
/// use grep_printer::UserColorSpec; /// use grep_printer::UserColorSpec;

View File

@ -27,10 +27,6 @@ contain matches.
This example shows how to create a "standard" printer and execute a search. This example shows how to create a "standard" printer and execute a search.
``` ```
extern crate grep_regex;
extern crate grep_printer;
extern crate grep_searcher;
use std::error::Error; use std::error::Error;
use grep_regex::RegexMatcher; use grep_regex::RegexMatcher;
@ -68,20 +64,6 @@ fn example() -> Result<(), Box<Error>> {
#![deny(missing_docs)] #![deny(missing_docs)]
#[cfg(feature = "serde1")]
extern crate base64;
#[cfg(feature = "serde1")]
#[macro_use]
extern crate serde_derive;
#[cfg(feature = "serde1")]
extern crate serde_json;
pub use crate::color::{ pub use crate::color::{
default_color_specs, ColorError, ColorSpecs, UserColorSpec, default_color_specs, ColorError, ColorSpecs, UserColorSpec,
}; };

View File

@ -8,7 +8,7 @@ use crate::util::NiceDuration;
/// When statistics are reported by a printer, they correspond to all searches /// When statistics are reported by a printer, they correspond to all searches
/// executed with that printer. /// executed with that printer.
#[derive(Clone, Debug, Default, PartialEq, Eq)] #[derive(Clone, Debug, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde1", derive(Serialize))] #[cfg_attr(feature = "serde1", derive(serde::Serialize))]
pub struct Stats { pub struct Stats {
elapsed: NiceDuration, elapsed: NiceDuration,
searches: u64, searches: u64,

View File

@ -26,9 +26,3 @@ Add this to your `Cargo.toml`:
[dependencies] [dependencies]
grep-regex = "0.1" grep-regex = "0.1"
``` ```
and this to your crate root:
```rust
extern crate grep_regex;
```

View File

@ -1,18 +1,8 @@
/*! /*!
An implementation of `grep-matcher`'s `Matcher` trait for Rust's regex engine. An implementation of `grep-matcher`'s `Matcher` trait for Rust's regex engine.
*/ */
#![deny(missing_docs)] #![deny(missing_docs)]
#[macro_use]
extern crate log;
pub use crate::error::{Error, ErrorKind}; pub use crate::error::{Error, ErrorKind};
pub use crate::matcher::{RegexCaptures, RegexMatcher, RegexMatcherBuilder}; pub use crate::matcher::{RegexCaptures, RegexMatcher, RegexMatcherBuilder};

View File

@ -55,7 +55,7 @@ impl LiteralSets {
if !word { if !word {
if self.prefixes.all_complete() && !self.prefixes.is_empty() { if self.prefixes.all_complete() && !self.prefixes.is_empty() {
debug!("literal prefixes detected: {:?}", self.prefixes); log::debug!("literal prefixes detected: {:?}", self.prefixes);
// When this is true, the regex engine will do a literal scan, // When this is true, the regex engine will do a literal scan,
// so we don't need to return anything. But we only do this // so we don't need to return anything. But we only do this
// if we aren't doing a word regex, since a word regex adds // if we aren't doing a word regex, since a word regex adds
@ -106,7 +106,7 @@ impl LiteralSets {
&& !any_empty && !any_empty
&& !any_white && !any_white
{ {
debug!("required literals found: {:?}", req_lits); log::debug!("required literals found: {:?}", req_lits);
let alts: Vec<String> = req_lits let alts: Vec<String> = req_lits
.into_iter() .into_iter()
.map(|x| util::bytes_to_regex(x)) .map(|x| util::bytes_to_regex(x))
@ -149,27 +149,27 @@ impl LiteralSets {
let lits = match (p_min_len, s_min_len) { let lits = match (p_min_len, s_min_len) {
(None, None) => return None, (None, None) => return None,
(Some(_), None) => { (Some(_), None) => {
debug!("prefix literals found"); log::debug!("prefix literals found");
self.prefixes.literals() self.prefixes.literals()
} }
(None, Some(_)) => { (None, Some(_)) => {
debug!("suffix literals found"); log::debug!("suffix literals found");
self.suffixes.literals() self.suffixes.literals()
} }
(Some(p), Some(s)) => { (Some(p), Some(s)) => {
if p >= s { if p >= s {
debug!("prefix literals found"); log::debug!("prefix literals found");
self.prefixes.literals() self.prefixes.literals()
} else { } else {
debug!("suffix literals found"); log::debug!("suffix literals found");
self.suffixes.literals() self.suffixes.literals()
} }
} }
}; };
debug!("prefix/suffix literals found: {:?}", lits); log::debug!("prefix/suffix literals found: {:?}", lits);
if has_only_whitespace(lits) { if has_only_whitespace(lits) {
debug!("dropping literals because one was whitespace"); log::debug!("dropping literals because one was whitespace");
return None; return None;
} }
let alts: Vec<String> = let alts: Vec<String> =
@ -177,9 +177,9 @@ impl LiteralSets {
// We're matching raw bytes, so disable Unicode mode. // We're matching raw bytes, so disable Unicode mode.
Some(format!("(?-u:{})", alts.join("|"))) Some(format!("(?-u:{})", alts.join("|")))
} else { } else {
debug!("required literal found: {:?}", util::show_bytes(lit)); log::debug!("required literal found: {:?}", util::show_bytes(lit));
if lit.chars().all(|c| c.is_whitespace()) { if lit.chars().all(|c| c.is_whitespace()) {
debug!("dropping literal because one was whitespace"); log::debug!("dropping literal because one was whitespace");
return None; return None;
} }
Some(format!("(?-u:{})", util::bytes_to_regex(&lit))) Some(format!("(?-u:{})", util::bytes_to_regex(&lit)))

View File

@ -47,11 +47,11 @@ impl RegexMatcherBuilder {
let fast_line_regex = chir.fast_line_regex()?; let fast_line_regex = chir.fast_line_regex()?;
let non_matching_bytes = chir.non_matching_bytes(); let non_matching_bytes = chir.non_matching_bytes();
if let Some(ref re) = fast_line_regex { if let Some(ref re) = fast_line_regex {
debug!("extracted fast line regex: {:?}", re); log::debug!("extracted fast line regex: {:?}", re);
} }
let matcher = RegexMatcherImpl::new(&chir)?; let matcher = RegexMatcherImpl::new(&chir)?;
trace!("final regex: {:?}", matcher.regex()); log::trace!("final regex: {:?}", matcher.regex());
Ok(RegexMatcher { Ok(RegexMatcher {
config: self.config.clone(), config: self.config.clone(),
matcher, matcher,

View File

@ -49,7 +49,7 @@ impl WordMatcher {
expr.with_pattern(|pat| format!("^(?:{})$", pat))?.regex()?; expr.with_pattern(|pat| format!("^(?:{})$", pat))?.regex()?;
let word_expr = expr.with_pattern(|pat| { let word_expr = expr.with_pattern(|pat| {
let pat = format!(r"(?:(?m:^)|\W)({})(?:\W|(?m:$))", pat); let pat = format!(r"(?:(?m:^)|\W)({})(?:\W|(?m:$))", pat);
debug!("word regex: {:?}", pat); log::debug!("word regex: {:?}", pat);
pat pat
})?; })?;
let regex = word_expr.regex()?; let regex = word_expr.regex()?;

View File

@ -28,9 +28,3 @@ Add this to your `Cargo.toml`:
[dependencies] [dependencies]
grep-searcher = "0.1" grep-searcher = "0.1"
``` ```
and this to your crate root:
```rust
extern crate grep_searcher;
```

View File

@ -48,10 +48,6 @@ using the
implementation of `Sink`. implementation of `Sink`.
``` ```
extern crate grep_matcher;
extern crate grep_regex;
extern crate grep_searcher;
use std::error::Error; use std::error::Error;
use grep_matcher::Matcher; use grep_matcher::Matcher;
@ -99,9 +95,6 @@ searches stdin.
#![deny(missing_docs)] #![deny(missing_docs)]
#[macro_use]
extern crate log;
pub use crate::lines::{LineIter, LineStep}; pub use crate::lines::{LineIter, LineStep};
pub use crate::searcher::{ pub use crate::searcher::{
BinaryDetection, ConfigError, Encoding, MmapChoice, Searcher, BinaryDetection, ConfigError, Encoding, MmapChoice, Searcher,

View File

@ -53,9 +53,9 @@ impl<'s, M: Matcher, S: Sink> Core<'s, M, S> {
}; };
if !core.searcher.multi_line_with_matcher(&core.matcher) { if !core.searcher.multi_line_with_matcher(&core.matcher) {
if core.is_line_by_line_fast() { if core.is_line_by_line_fast() {
trace!("searcher core: will use fast line searcher"); log::trace!("searcher core: will use fast line searcher");
} else { } else {
trace!("searcher core: will use slow line searcher"); log::trace!("searcher core: will use slow line searcher");
} }
} }
core core

View File

@ -83,13 +83,13 @@ impl MmapChoice {
Ok(mmap) => Some(mmap), Ok(mmap) => Some(mmap),
Err(err) => { Err(err) => {
if let Some(path) = path { if let Some(path) = path {
debug!( log::debug!(
"{}: failed to open memory map: {}", "{}: failed to open memory map: {}",
path.display(), path.display(),
err err
); );
} else { } else {
debug!("failed to open memory map: {}", err); log::debug!("failed to open memory map: {}", err);
} }
None None
} }

View File

@ -659,16 +659,19 @@ impl Searcher {
S: Sink, S: Sink,
{ {
if let Some(mmap) = self.config.mmap.open(file, path) { if let Some(mmap) = self.config.mmap.open(file, path) {
trace!("{:?}: searching via memory map", path); log::trace!("{:?}: searching via memory map", path);
return self.search_slice(matcher, &mmap, write_to); return self.search_slice(matcher, &mmap, write_to);
} }
// Fast path for multi-line searches of files when memory maps are // Fast path for multi-line searches of files when memory maps are
// not enabled. This pre-allocates a buffer roughly the size of the // not enabled. This pre-allocates a buffer roughly the size of the
// file, which isn't possible when searching an arbitrary io::Read. // file, which isn't possible when searching an arbitrary io::Read.
if self.multi_line_with_matcher(&matcher) { if self.multi_line_with_matcher(&matcher) {
trace!("{:?}: reading entire file on to heap for mulitline", path); log::trace!(
"{:?}: reading entire file on to heap for mulitline",
path
);
self.fill_multi_line_buffer_from_file::<S>(file)?; self.fill_multi_line_buffer_from_file::<S>(file)?;
trace!("{:?}: searching via multiline strategy", path); log::trace!("{:?}: searching via multiline strategy", path);
MultiLine::new( MultiLine::new(
self, self,
matcher, matcher,
@ -677,7 +680,7 @@ impl Searcher {
) )
.run() .run()
} else { } else {
trace!("{:?}: searching using generic reader", path); log::trace!("{:?}: searching using generic reader", path);
self.search_reader(matcher, file, write_to) self.search_reader(matcher, file, write_to)
} }
} }
@ -713,9 +716,11 @@ impl Searcher {
.map_err(S::Error::error_io)?; .map_err(S::Error::error_io)?;
if self.multi_line_with_matcher(&matcher) { if self.multi_line_with_matcher(&matcher) {
trace!("generic reader: reading everything to heap for multiline"); log::trace!(
"generic reader: reading everything to heap for multiline"
);
self.fill_multi_line_buffer_from_reader::<_, S>(decoder)?; self.fill_multi_line_buffer_from_reader::<_, S>(decoder)?;
trace!("generic reader: searching via multiline strategy"); log::trace!("generic reader: searching via multiline strategy");
MultiLine::new( MultiLine::new(
self, self,
matcher, matcher,
@ -726,7 +731,7 @@ impl Searcher {
} else { } else {
let mut line_buffer = self.line_buffer.borrow_mut(); let mut line_buffer = self.line_buffer.borrow_mut();
let rdr = LineBufferReader::new(decoder, &mut *line_buffer); let rdr = LineBufferReader::new(decoder, &mut *line_buffer);
trace!("generic reader: searching via roll buffer strategy"); log::trace!("generic reader: searching via roll buffer strategy");
ReadByLine::new(self, matcher, rdr, write_to).run() ReadByLine::new(self, matcher, rdr, write_to).run()
} }
} }
@ -747,14 +752,16 @@ impl Searcher {
// We can search the slice directly, unless we need to do transcoding. // We can search the slice directly, unless we need to do transcoding.
if self.slice_needs_transcoding(slice) { if self.slice_needs_transcoding(slice) {
trace!("slice reader: needs transcoding, using generic reader"); log::trace!(
"slice reader: needs transcoding, using generic reader"
);
return self.search_reader(matcher, slice, write_to); return self.search_reader(matcher, slice, write_to);
} }
if self.multi_line_with_matcher(&matcher) { if self.multi_line_with_matcher(&matcher) {
trace!("slice reader: searching via multiline strategy"); log::trace!("slice reader: searching via multiline strategy");
MultiLine::new(self, matcher, slice, write_to).run() MultiLine::new(self, matcher, slice, write_to).run()
} else { } else {
trace!("slice reader: searching via slice-by-line strategy"); log::trace!("slice reader: searching via slice-by-line strategy");
SliceByLine::new(self, matcher, slice, write_to).run() SliceByLine::new(self, matcher, slice, write_to).run()
} }
} }