summaryrefslogtreecommitdiffstats
path: root/lzip.h
diff options
context:
space:
mode:
authorDaniel Baumann <mail@daniel-baumann.ch>2015-11-07 10:16:06 +0000
committerDaniel Baumann <mail@daniel-baumann.ch>2015-11-07 10:16:06 +0000
commit0d53d0bcfd869d5b4eb69238c0c0022debc3aa60 (patch)
tree9e0fbce89572e5400e31491fa3130b220afcf189 /lzip.h
parentAdding upstream version 1.13~rc1. (diff)
downloadlziprecover-0d53d0bcfd869d5b4eb69238c0c0022debc3aa60.tar.xz
lziprecover-0d53d0bcfd869d5b4eb69238c0c0022debc3aa60.zip
Adding upstream version 1.13~rc2.upstream/1.13_rc2
Signed-off-by: Daniel Baumann <mail@daniel-baumann.ch>
Diffstat (limited to 'lzip.h')
-rw-r--r--lzip.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/lzip.h b/lzip.h
index 440ce71..1c67344 100644
--- a/lzip.h
+++ b/lzip.h
@@ -60,6 +60,7 @@ enum {
min_dictionary_size = 1 << min_dictionary_bits,
max_dictionary_bits = 29,
max_dictionary_size = 1 << max_dictionary_bits,
+ min_member_size = 36,
literal_context_bits = 3,
pos_state_bits = 2,
pos_states = 1 << pos_state_bits,
@@ -128,6 +129,15 @@ public:
if( longest_name == 0 ) longest_name = stdin_name_len;
}
+ Pretty_print( const std::string & filename, const int v )
+ : stdin_name( "(stdin)" ), verbosity_( v ), first_post( false )
+ {
+ const unsigned int stdin_name_len = std::strlen( stdin_name );
+ longest_name = ( ( filename == "-" ) ? stdin_name_len : filename.size() );
+ if( longest_name == 0 ) longest_name = stdin_name_len;
+ set_name( filename );
+ }
+
void set_name( const std::string & filename )
{
if( filename.size() && filename != "-" ) name_ = filename;
@@ -288,12 +298,35 @@ struct Error
#endif
+class Block
+ {
+ long long pos_, size_; // pos + size <= LLONG_MAX
+
+public:
+ Block( const long long p, const long long s ) throw()
+ : pos_( p ), size_( s ) {}
+
+ long long pos() const throw() { return pos_; }
+ long long size() const throw() { return size_; }
+ long long end() const throw() { return pos_ + size_; }
+
+ void pos( const long long p ) throw() { pos_ = p; }
+ void size( const long long s ) throw() { size_ = s; }
+
+ bool overlaps( const Block & b ) const throw()
+ { return ( pos_ < b.end() && b.pos_ < end() ); }
+ void shift( Block & b ) throw() { ++size_; ++b.pos_; --b.size_; }
+ };
+
+
// defined in decoder.cc
int readblock( const int fd, uint8_t * const buf, const int size ) throw();
int writeblock( const int fd, const uint8_t * const buf, const int size ) throw();
// defined in main.cc
extern int verbosity;
+const char * format_num( long long num, long long limit = LLONG_MAX,
+ const int set_prefix = 0 ) throw();
int open_instream( const std::string & name, struct stat * const in_statsp,
const bool to_stdout, const bool reg_only = false ) throw();
int open_outstream_rw( const std::string & output_filename,
@@ -314,6 +347,13 @@ bool verify_single_member( const int fd, const long long file_size );
int merge_files( const std::vector< std::string > & filenames,
const std::string & output_filename, const bool force );
+// defined in range_dec.cc
+int list_file( const std::string & input_filename );
+int range_decompress( const std::string & input_filename,
+ const std::string & default_output_filename,
+ const std::string & range_string,
+ const bool to_stdout, const bool force );
+
// defined in repair.cc
int repair_file( const std::string & input_filename,
const std::string & output_filename, const bool force );