@@ -205,31 +205,20 @@ fn process_error(
205205 writer : & NamedWriter ,
206206 ignored_errors : & mut usize ,
207207) -> Result < ( ) > {
208- match mode {
209- Some ( OutputErrorMode :: Warn ) => {
210- let _ = writeln ! ( stderr( ) , "{}: {f}" , writer. name. maybe_quote( ) ) ;
211- * ignored_errors += 1 ;
212- Ok ( ( ) )
213- }
214- Some ( OutputErrorMode :: WarnNoPipe ) | None => {
215- if f. kind ( ) != ErrorKind :: BrokenPipe {
216- let _ = writeln ! ( stderr( ) , "{}: {f}" , writer. name. maybe_quote( ) ) ;
217- * ignored_errors += 1 ;
218- }
219- Ok ( ( ) )
220- }
221- Some ( OutputErrorMode :: Exit ) => {
222- let _ = writeln ! ( stderr( ) , "{}: {f}" , writer. name. maybe_quote( ) ) ;
223- Err ( f)
224- }
225- Some ( OutputErrorMode :: ExitNoPipe ) => {
226- if f. kind ( ) == ErrorKind :: BrokenPipe {
227- Ok ( ( ) )
228- } else {
229- let _ = writeln ! ( stderr( ) , "{}: {f}" , writer. name. maybe_quote( ) ) ;
230- Err ( f)
231- }
232- }
208+ let ignore_pipe = matches ! (
209+ mode,
210+ None | Some ( OutputErrorMode :: WarnNoPipe ) | Some ( OutputErrorMode :: ExitNoPipe )
211+ ) ;
212+
213+ if ignore_pipe && f. kind ( ) == ErrorKind :: BrokenPipe {
214+ return Ok ( ( ) ) ;
215+ }
216+ let _ = writeln ! ( stderr( ) , "{}: {f}" , writer. name. maybe_quote( ) ) ;
217+ if let Some ( OutputErrorMode :: Exit | OutputErrorMode :: ExitNoPipe ) = mode {
218+ Err ( f)
219+ } else {
220+ * ignored_errors += 1 ;
221+ Ok ( ( ) )
233222 }
234223}
235224
@@ -274,11 +263,7 @@ impl Write for MultiWriter {
274263 . is_ok ( )
275264 } ) ;
276265 self . ignored_errors += errors;
277- if let Some ( e) = aborted {
278- Err ( e)
279- } else {
280- Ok ( ( ) )
281- }
266+ aborted. map_or ( Ok ( ( ) ) , Err )
282267 }
283268}
284269
@@ -324,16 +309,12 @@ struct NamedReader {
324309
325310impl Read for NamedReader {
326311 fn read ( & mut self , buf : & mut [ u8 ] ) -> Result < usize > {
327- match self . inner . read ( buf) {
328- Err ( f) => {
329- let _ = writeln ! (
330- stderr( ) ,
331- "tee: {}" ,
332- translate!( "tee-error-stdin" , "error" => strip_errno( & f) )
333- ) ;
334- Err ( f)
335- }
336- okay => okay,
337- }
312+ self . inner . read ( buf) . inspect_err ( |e| {
313+ let _ = writeln ! (
314+ stderr( ) ,
315+ "tee: {}" ,
316+ translate!( "tee-error-stdin" , "error" => strip_errno( e) )
317+ ) ;
318+ } )
338319 }
339320}
0 commit comments