44
55use std:: {
66 collections:: HashMap ,
7- io:: { BufRead , BufReader , Write } ,
7+ io:: { BufReader , Write } ,
88 path:: PathBuf ,
99 process:: { Command as StdCommand , Stdio } ,
1010 sync:: { Arc , Mutex , RwLock } ,
@@ -384,7 +384,7 @@ fn spawn_pipe_reader<F: Fn(String) -> CommandEvent + Send + Copy + 'static>(
384384 let mut buf = Vec :: new ( ) ;
385385 loop {
386386 buf. clear ( ) ;
387- match read_command_output ( & mut reader, & mut buf) {
387+ match tauri_utils :: io :: read_line ( & mut reader, & mut buf) {
388388 Ok ( n) => {
389389 if n == 0 {
390390 break ;
@@ -407,52 +407,6 @@ fn spawn_pipe_reader<F: Fn(String) -> CommandEvent + Send + Copy + 'static>(
407407 } ) ;
408408}
409409
410- // adapted from https://doc.rust-lang.org/std/io/trait.BufRead.html#method.read_line
411- fn read_command_output < R : BufRead + ?Sized > (
412- r : & mut R ,
413- buf : & mut Vec < u8 > ,
414- ) -> std:: io:: Result < usize > {
415- let mut read = 0 ;
416- loop {
417- let ( done, used) = {
418- let available = match r. fill_buf ( ) {
419- Ok ( n) => n,
420- Err ( ref e) if e. kind ( ) == std:: io:: ErrorKind :: Interrupted => continue ,
421- Err ( e) => return Err ( e) ,
422- } ;
423- match memchr:: memchr ( b'\n' , available) {
424- Some ( i) => {
425- let end = i + 1 ;
426- buf. extend_from_slice ( & available[ ..end] ) ;
427- ( true , end)
428- }
429- None => match memchr:: memchr ( b'\r' , available) {
430- Some ( i) => {
431- let end = i + 1 ;
432- buf. extend_from_slice ( & available[ ..end] ) ;
433- ( true , end)
434- }
435- None => {
436- buf. extend_from_slice ( available) ;
437- ( false , available. len ( ) )
438- }
439- } ,
440- }
441- } ;
442- r. consume ( used) ;
443- read += used;
444- if done || used == 0 {
445- if buf. ends_with ( & [ b'\n' ] ) {
446- buf. pop ( ) ;
447- }
448- if buf. ends_with ( & [ b'\r' ] ) {
449- buf. pop ( ) ;
450- }
451- return Ok ( read) ;
452- }
453- }
454- }
455-
456410// tests for the commands functions.
457411#[ cfg( test) ]
458412mod test {
0 commit comments