Merging upstream version 1.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
95e76700ee
commit
3ab3342c4f
21 changed files with 729 additions and 460 deletions
|
@ -1,6 +1,6 @@
|
|||
/* Plzip - Parallel compressor compatible with lzip
|
||||
/* Plzip - Massively parallel implementation of lzip
|
||||
Copyright (C) 2009 Laszlo Ersek.
|
||||
Copyright (C) 2009-2018 Antonio Diaz Diaz.
|
||||
Copyright (C) 2009-2019 Antonio Diaz Diaz.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -253,8 +253,8 @@ extern "C" void * dsplitter_s( void * arg )
|
|||
Packet_courier & courier = *tmp.courier;
|
||||
const Pretty_print & pp = *tmp.pp;
|
||||
const int infd = tmp.infd;
|
||||
const int hsize = File_header::size;
|
||||
const int tsize = File_trailer::size;
|
||||
const int hsize = Lzip_header::size;
|
||||
const int tsize = Lzip_trailer::size;
|
||||
const int buffer_size = max_packet_size;
|
||||
const int base_buffer_size = tsize + buffer_size + hsize;
|
||||
uint8_t * const base_buffer = new( std::nothrow ) uint8_t[base_buffer_size];
|
||||
|
@ -268,7 +268,7 @@ extern "C" void * dsplitter_s( void * arg )
|
|||
if( size + hsize < min_member_size )
|
||||
{ show_file_error( pp.name(), "Input file is too short." );
|
||||
cleanup_and_fail( 2 ); }
|
||||
const File_header & header = *(File_header *)buffer;
|
||||
const Lzip_header & header = *(const Lzip_header *)buffer;
|
||||
if( !header.verify_magic() )
|
||||
{ show_file_error( pp.name(), bad_magic_msg ); cleanup_and_fail( 2 ); }
|
||||
if( !header.verify_version() )
|
||||
|
@ -288,11 +288,12 @@ extern "C" void * dsplitter_s( void * arg )
|
|||
newpos = find_magic( buffer, newpos, size + 4 - newpos );
|
||||
if( newpos <= size )
|
||||
{
|
||||
const File_trailer & trailer = *(File_trailer *)(buffer + newpos - tsize);
|
||||
const Lzip_trailer & trailer =
|
||||
*(const Lzip_trailer *)(buffer + newpos - tsize);
|
||||
const unsigned long long member_size = trailer.member_size();
|
||||
if( partial_member_size + newpos - pos == member_size )
|
||||
{ // header found
|
||||
const File_header & header = *(File_header *)(buffer + newpos);
|
||||
const Lzip_header & header = *(const Lzip_header *)(buffer + newpos);
|
||||
if( !header.verify_version() )
|
||||
{ pp( bad_version( header.version() ) ); cleanup_and_fail( 2 ); }
|
||||
const unsigned dictionary_size = header.dictionary_size();
|
||||
|
@ -354,7 +355,7 @@ struct Worker_arg
|
|||
// if not testing, give the produced packets to courier.
|
||||
extern "C" void * dworker_s( void * arg )
|
||||
{
|
||||
const Worker_arg & tmp = *(Worker_arg *)arg;
|
||||
const Worker_arg & tmp = *(const Worker_arg *)arg;
|
||||
Packet_courier & courier = *tmp.courier;
|
||||
const Pretty_print & pp = *tmp.pp;
|
||||
const int worker_id = tmp.worker_id;
|
||||
|
@ -479,15 +480,14 @@ void muxer( Packet_courier & courier, const Pretty_print & pp, const int outfd )
|
|||
int dec_stream( const unsigned long long cfile_size,
|
||||
const int num_workers, const int infd, const int outfd,
|
||||
const Pretty_print & pp, const int debug_level,
|
||||
const int in_slots, const int out_slots,
|
||||
const bool ignore_trailing, const bool loose_trailing )
|
||||
{
|
||||
const int in_slots_per_worker = 2;
|
||||
const int out_slots = 32;
|
||||
const int in_slots = ( INT_MAX / num_workers >= in_slots_per_worker ) ?
|
||||
num_workers * in_slots_per_worker : INT_MAX;
|
||||
const int total_in_slots = ( INT_MAX / num_workers >= in_slots ) ?
|
||||
num_workers * in_slots : INT_MAX;
|
||||
in_size = 0;
|
||||
out_size = 0;
|
||||
Packet_courier courier( num_workers, in_slots, out_slots );
|
||||
Packet_courier courier( num_workers, total_in_slots, out_slots );
|
||||
|
||||
Splitter_arg splitter_arg;
|
||||
splitter_arg.cfile_size = cfile_size;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue