@@ -19,7 +19,7 @@ use clap::{Arg, ArgAction, Command};
1919use regex:: Regex ;
2020use thiserror:: Error ;
2121use uucore:: display:: Quotable ;
22- use uucore:: error:: { FromIo , UError , UResult , UUsageError } ;
22+ use uucore:: error:: { FromIo , UError , UResult , USimpleError , UUsageError } ;
2323use uucore:: format_usage;
2424use uucore:: translate;
2525
@@ -301,9 +301,15 @@ fn read_input(input_files: &[OsString]) -> std::io::Result<FileMap> {
301301}
302302
303303/// Go through every lines in the input files and record each match occurrence as a `WordRef`.
304- fn create_word_set ( config : & Config , filter : & WordFilter , file_map : & FileMap ) -> BTreeSet < WordRef > {
305- let reg = Regex :: new ( & filter. word_regex ) . unwrap ( ) ;
306- let ref_reg = Regex :: new ( & config. context_regex ) . unwrap ( ) ;
304+ fn create_word_set (
305+ config : & Config ,
306+ filter : & WordFilter ,
307+ file_map : & FileMap ,
308+ ) -> UResult < BTreeSet < WordRef > > {
309+ let reg = Regex :: new ( & filter. word_regex )
310+ . map_err ( |e| USimpleError :: new ( 1 , format ! ( "invalid regular expression: {}" , e) ) ) ?;
311+ let ref_reg = Regex :: new ( & config. context_regex )
312+ . map_err ( |e| USimpleError :: new ( 1 , format ! ( "invalid regular expression: {}" , e) ) ) ?;
307313 let mut word_set: BTreeSet < WordRef > = BTreeSet :: new ( ) ;
308314 for ( file, lines) in file_map {
309315 let mut count: usize = 0 ;
@@ -342,7 +348,7 @@ fn create_word_set(config: &Config, filter: &WordFilter, file_map: &FileMap) ->
342348 count += 1 ;
343349 }
344350 }
345- word_set
351+ Ok ( word_set)
346352}
347353
348354fn get_reference ( config : & Config , word_ref : & WordRef , line : & str , context_reg : & Regex ) -> String {
@@ -884,7 +890,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
884890
885891 let word_filter = WordFilter :: new ( & matches, & config) ?;
886892 let file_map = read_input ( & input_files) . map_err_context ( String :: new) ?;
887- let word_set = create_word_set ( & config, & word_filter, & file_map) ;
893+ let word_set = create_word_set ( & config, & word_filter, & file_map) ? ;
888894 write_traditional_output ( & mut config, & file_map, & word_set, & output_file)
889895}
890896
0 commit comments