Merging upstream version 1.3~pre1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
f04d94e9dd
commit
e4e17ab53e
17 changed files with 387 additions and 259 deletions
|
@ -46,6 +46,8 @@ struct Packet // data block
|
|||
{
|
||||
uint8_t * data; // data == 0 means end of member
|
||||
int size; // number of bytes in data (if any)
|
||||
explicit Packet( uint8_t * const d = 0, const int s = 0 )
|
||||
: data( d ), size( s ) {}
|
||||
};
|
||||
|
||||
|
||||
|
@ -211,21 +213,16 @@ extern "C" void * dworker_o( void * arg )
|
|||
{
|
||||
if( new_pos > 0 ) // make data packet
|
||||
{
|
||||
Packet * opacket = new Packet;
|
||||
opacket->data = new_data;
|
||||
opacket->size = new_pos;
|
||||
Packet * const opacket = new Packet( new_data, new_pos );
|
||||
courier.collect_packet( opacket, worker_id );
|
||||
new_pos = 0;
|
||||
new_data = new( std::nothrow ) uint8_t[max_packet_size];
|
||||
if( !new_data ) { pp( "Not enough memory." ); cleanup_and_fail(); }
|
||||
}
|
||||
if( LZ_decompress_finished( decoder ) == 1 )
|
||||
{
|
||||
{ // end of member token
|
||||
courier.collect_packet( new Packet, worker_id );
|
||||
LZ_decompress_reset( decoder ); // prepare for new member
|
||||
Packet * opacket = new Packet; // end of member token
|
||||
opacket->data = 0;
|
||||
opacket->size = 0;
|
||||
courier.collect_packet( opacket, worker_id );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -250,15 +247,12 @@ void muxer( Packet_courier & courier, const Pretty_print & pp, const int outfd )
|
|||
{
|
||||
while( true )
|
||||
{
|
||||
Packet * opacket = courier.deliver_packet();
|
||||
Packet * const opacket = courier.deliver_packet();
|
||||
if( !opacket ) break; // queue is empty. all workers exited
|
||||
|
||||
if( outfd >= 0 )
|
||||
{
|
||||
const int wr = writeblock( outfd, opacket->data, opacket->size );
|
||||
if( wr != opacket->size )
|
||||
{ pp(); show_error( "Write error", errno ); cleanup_and_fail(); }
|
||||
}
|
||||
const int wr = writeblock( outfd, opacket->data, opacket->size );
|
||||
if( wr != opacket->size )
|
||||
{ pp(); show_error( "Write error", errno ); cleanup_and_fail(); }
|
||||
delete[] opacket->data;
|
||||
delete opacket;
|
||||
}
|
||||
|
@ -311,7 +305,7 @@ int dec_stdout( const int num_workers, const int infd, const int outfd,
|
|||
(double)out_size / in_size,
|
||||
( 8.0 * in_size ) / out_size,
|
||||
100.0 * ( 1.0 - ( (double)in_size / out_size ) ) );
|
||||
if( verbosity >= 3 )
|
||||
if( verbosity >= 4 )
|
||||
std::fprintf( stderr, "decompressed size %9llu, size %9llu. ",
|
||||
out_size, in_size );
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue