@@ -165,22 +165,18 @@ impl MultiWriter {
165165 let mut buffer = [ 0u8 ; BUF_SIZE ] ;
166166 // fast-path for small input. needs 2+ read to catch end of file
167167 for _ in 0 ..2 {
168- match input. read ( & mut buffer) {
169- Ok ( 0 ) => return Ok ( ( ) ) , // end of file
170- Ok ( received) => self . write_flush ( & buffer[ ..received] ) ?,
171- Err ( e) if e. kind ( ) != ErrorKind :: Interrupted => return Err ( e) ,
172- _ => { }
168+ match input. read ( & mut buffer) ? {
169+ 0 => return Ok ( ( ) ) , // end of file
170+ received => self . write_flush ( & buffer[ ..received] ) ?,
173171 }
174172 }
175173 // buffer is too small optimize for large input
176174 //stack array makes code path for smaller file slower
177175 let mut buffer = vec ! [ 0u8 ; 4 * BUF_SIZE ] ;
178176 loop {
179- match input. read ( & mut buffer) {
180- Ok ( 0 ) => return Ok ( ( ) ) , // end of file
181- Ok ( received) => self . write_flush ( & buffer[ ..received] ) ?,
182- Err ( e) if e. kind ( ) != ErrorKind :: Interrupted => return Err ( e) ,
183- _ => { }
177+ match input. read ( & mut buffer) ? {
178+ 0 => return Ok ( ( ) ) , // end of file
179+ received => self . write_flush ( & buffer[ ..received] ) ?,
184180 }
185181 }
186182 }
@@ -284,12 +280,19 @@ struct NamedReader {
284280
285281impl Read for NamedReader {
286282 fn read ( & mut self , buf : & mut [ u8 ] ) -> Result < usize > {
287- self . inner . read ( buf) . inspect_err ( |e| {
288- let _ = writeln ! (
289- stderr( ) ,
290- "tee: {}" ,
291- translate!( "tee-error-stdin" , "error" => strip_errno( e) )
292- ) ;
293- } )
283+ loop {
284+ match self . inner . read ( buf) {
285+ Ok ( n) => return Ok ( n) ,
286+ Err ( e) if e. kind ( ) == ErrorKind :: Interrupted => { }
287+ Err ( e) => {
288+ let _ = writeln ! (
289+ stderr( ) ,
290+ "tee: {}" ,
291+ translate!( "tee-error-stdin" , "error" => strip_errno( & e) )
292+ ) ;
293+ return Err ( e) ;
294+ }
295+ }
296+ }
294297 }
295298}
0 commit comments