From 3edd69686171314709676dafc694fd6ba2533def Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 13 Oct 2019 11:09:52 +0200 Subject: Merging upstream version 0.16. Signed-off-by: Daniel Baumann --- delete_lz.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'delete_lz.cc') diff --git a/delete_lz.cc b/delete_lz.cc index 11c3a14..6888520 100644 --- a/delete_lz.cc +++ b/delete_lz.cc @@ -51,7 +51,7 @@ int delete_members_lz( const char * const archive_namep, long long istream_pos = 0; // source of next data move const long long cdata_size = lzip_index.cdata_size(); - int retval = 0; + int retval = 0, retval2 = 0; for( long i = 0; i < lzip_index.members(); ++i ) { const long long mdata_pos = lzip_index.dblock( i ).pos(); @@ -142,16 +142,16 @@ int delete_members_lz( const char * const archive_namep, if( member_begin != mdata_pos || data_pos != mdata_end ) { show_file_error( extended.path().c_str(), "Can't delete: not individually compressed." ); - retval = 2; extended.reset(); continue; } + retval2 = 2; extended.reset(); continue; } if( !show_member_name( extended, header, 1, rbuf ) ) { retval = 1; goto done; } const long long size = member_pos - istream_pos; if( size > 0 ) // move pending data each time a member is deleted { if( istream_pos == 0 ) - { if( !safe_seek( outfd, size ) ) { retval = 1; break; } } + { if( !safe_seek( outfd, size ) ) { retval = 1; goto done; } } else if( !safe_seek( infd, istream_pos ) || - !copy_file( infd, outfd, size ) ) { retval = 1; break; } + !copy_file( infd, outfd, size ) ) { retval = 1; goto done; } } istream_pos = member_end; } @@ -159,6 +159,7 @@ int delete_members_lz( const char * const archive_namep, } } done: + if( retval < retval2 ) retval = retval2; if( LZ_decompress_close( decoder ) < 0 && !retval ) { show_error( "LZ_decompress_close failed." ); retval = 1; } // tail copy keeps trailing data -- cgit v1.2.3