1
0
Fork 0

Merging upstream version 0.16.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-17 21:14:17 +01:00
parent cf7dc90711
commit e896ecf9fe
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
20 changed files with 854 additions and 662 deletions

View file

@ -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