From 67258f475f17f3824c5715eaa4ebdfee86f20142 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 8 Nov 2015 05:19:00 +0100 Subject: Merging upstream version 0.9~rc1. Signed-off-by: Daniel Baumann --- zutils.cc | 53 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) (limited to 'zutils.cc') diff --git a/zutils.cc b/zutils.cc index 5451534..01a0152 100644 --- a/zutils.cc +++ b/zutils.cc @@ -119,32 +119,24 @@ bool set_data_feeder( int * const infdp, pid_t * const pidp ) close( fda[0] ) == 0 && close( fda[1] ) == 0 && close( fda2[0] ) == 0 && close( fda2[1] ) == 0 ) execlp( file_type.c_str(), file_type.c_str(), "-cdfq", (char *)0 ); - if( verbosity >= 0 ) - std::fprintf( stderr, "%s: Can't exec `%s': %s.\n", - util_name, file_type.c_str(), std::strerror( errno ) ); + show_exec_error( file_type.c_str() ); _exit( 2 ); } if( pid2 < 0 ) - { - if( verbosity >= 0 ) - std::fprintf( stderr, "%s: Can't fork `%s': %s.\n", - util_name, file_type.c_str(), std::strerror( errno ) ); - _exit( 2 ); - } + { show_fork_error( file_type.c_str() ); _exit( 2 ); } if( close( fda[0] ) != 0 || close( fda2[0] ) != 0 || close( fda2[1] ) != 0 || !feed_data( old_infd, fda[1], magic_data, magic_size ) ) _exit( 2 ); if( close( fda[1] ) != 0 ) - { show_error( "Can't close output of decompressor feeder", errno ); - _exit( 2 ); } + { show_close_error( "decompressor feeder" ); _exit( 2 ); } _exit( wait_for_child( pid2, file_type.c_str() ) ); } // parent close( fda[0] ); close( fda[1] ); close( fda2[1] ); if( pid < 0 ) - { show_error( "Can't fork decompressor feeder", errno ); return false; } + { show_fork_error( "decompressor feeder" ); return false; } *pidp = pid; } else // not compressed @@ -161,14 +153,13 @@ bool set_data_feeder( int * const infdp, pid_t * const pidp ) !feed_data( old_infd, fda[1], magic_data, magic_size ) ) _exit( 2 ); if( close( fda[1] ) != 0 ) - { show_error( "Can't close output of data feeder", errno ); - _exit( 2 ); } + { show_close_error( "data feeder" ); _exit( 2 ); } _exit( 0 ); } // parent close( fda[1] ); if( pid < 0 ) - { show_error( "Can't fork data feeder", errno ); return false; } + { show_fork_error( "data feeder" ); return false; } *pidp = pid; } return true; @@ -214,6 +205,38 @@ void show_error( const char * const msg, const int errcode, } +void show_error2( const char * const msg, const char * const name ) throw() + { + if( verbosity >= 0 ) + std::fprintf( stderr, "%s: %s `%s': %s.\n", + util_name, msg, name, std::strerror( errno ) ); + } + + +void show_close_error( const char * const prog_name ) throw() + { + if( verbosity >= 0 ) + std::fprintf( stderr, "%s: Can't close output of %s: %s.\n", + util_name, prog_name, std::strerror( errno ) ); + } + + +void show_exec_error( const char * const prog_name ) throw() + { + if( verbosity >= 0 ) + std::fprintf( stderr, "%s: Can't exec `%s': %s.\n", + util_name, prog_name, std::strerror( errno ) ); + } + + +void show_fork_error( const char * const prog_name ) throw() + { + if( verbosity >= 0 ) + std::fprintf( stderr, "%s: Can't fork `%s': %s.\n", + util_name, prog_name, std::strerror( errno ) ); + } + + void internal_error( const char * const msg ) { if( verbosity >= 0 ) -- cgit v1.2.3