diff --git a/src/args.rs b/src/args.rs index c2b14f7c..ed129439 100644 --- a/src/args.rs +++ b/src/args.rs @@ -192,6 +192,7 @@ pub struct Args { files: bool, follow: bool, glob_overrides: Option, + grep: Grep, heading: bool, hidden: bool, ignore_case: bool, @@ -283,6 +284,12 @@ impl RawArgs { btypes.add_defaults(); try!(self.add_types(&mut btypes)); let types = try!(btypes.build()); + let grep = try!( + GrepBuilder::new(&pattern) + .case_insensitive(self.flag_ignore_case) + .line_terminator(eol) + .build() + ); let mut args = Args { pattern: pattern, paths: paths, @@ -295,6 +302,7 @@ impl RawArgs { files: self.flag_files, follow: self.flag_follow, glob_overrides: glob_overrides, + grep: grep, heading: !self.flag_no_heading && self.flag_heading, hidden: self.flag_hidden, ignore_case: self.flag_ignore_case, @@ -378,12 +386,8 @@ impl Args { /// basic searching of regular expressions in a single buffer. /// /// The pattern and other flags are taken from the command line. - pub fn grep(&self) -> Result { - GrepBuilder::new(&self.pattern) - .case_insensitive(self.ignore_case) - .line_terminator(self.eol) - .build() - .map_err(From::from) + pub fn grep(&self) -> Grep { + self.grep.clone() } /// Creates a new input buffer that is used in searching. diff --git a/src/main.rs b/src/main.rs index 55be1969..10611907 100644 --- a/src/main.rs +++ b/src/main.rs @@ -99,7 +99,7 @@ fn run(args: Args) -> Result { chan_work: stealer.clone(), inpbuf: args.input_buffer(), outbuf: Some(vec![]), - grep: try!(args.grep()), + grep: args.grep(), match_count: 0, }; workers.push(thread::spawn(move || worker.run()));