diff options
author | Daniel Baumann <mail@daniel-baumann.ch> | 2015-11-08 04:19:36 +0000 |
---|---|---|
committer | Daniel Baumann <mail@daniel-baumann.ch> | 2015-11-08 04:19:36 +0000 |
commit | 87a770d4123c1323068a5b3f01c805e715ea3024 (patch) | |
tree | 0cad244c41481b67718f1fe42b67f7cb4a223398 /zgrep.cc | |
parent | Adding upstream version 0.9~rc1. (diff) | |
download | zutils-87a770d4123c1323068a5b3f01c805e715ea3024.tar.xz zutils-87a770d4123c1323068a5b3f01c805e715ea3024.zip |
Adding upstream version 0.9~rc2.upstream/0.9_rc2
Signed-off-by: Daniel Baumann <mail@daniel-baumann.ch>
Diffstat (limited to 'zgrep.cc')
-rw-r--r-- | zgrep.cc | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -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 ) |