From 87a770d4123c1323068a5b3f01c805e715ea3024 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 8 Nov 2015 05:19:36 +0100 Subject: Adding upstream version 0.9~rc2. Signed-off-by: Daniel Baumann --- zgrep.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'zgrep.cc') diff --git a/zgrep.cc b/zgrep.cc index 41317a5..d0e69e3 100644 --- a/zgrep.cc +++ b/zgrep.cc @@ -84,9 +84,12 @@ int zgrep_stdin( int infd, const std::vector< const char * > & grep_args ) // parent if( grep_pid < 0 ) { show_fork_error( GREP ); return 2; } - int retval = 0; - if( pid && wait_for_child( pid, "data feeder" ) != 0 ) retval = 2; - if( wait_for_child( grep_pid, GREP ) != 0 ) retval = 2; + + int retval = wait_for_child( grep_pid, GREP ); + if( retval != 1 ) + { if( pid ) kill( pid, SIGTERM ); } + else + if( pid && wait_for_child( pid, "data feeder" ) != 0 ) retval = 2; if( close( infd ) != 0 ) { show_close_error( "data feeder" ); return 2; } return retval; @@ -146,9 +149,12 @@ int zgrep_file( int infd, const std::string & input_filename, } if( size < buffer_size ) break; } - int retval = 0; - if( pid && wait_for_child( pid, "data feeder" ) != 0 ) retval = 2; - if( wait_for_child( grep_pid, GREP ) != 0 ) retval = 2; + + int retval = wait_for_child( grep_pid, GREP ); + if( retval != 1 ) + { if( pid ) kill( pid, SIGTERM ); } + else + if( pid && wait_for_child( pid, "data feeder" ) != 0 ) retval = 2; if( grep_list && retval == 0 ) std::printf( "%s\n", input_filename.c_str() ); if( close( infd ) != 0 ) -- cgit v1.2.3