From 10a3854a23274599c9a0202753ba419a24d6c3e1 Mon Sep 17 00:00:00 2001 From: Christian Schneider Date: Fri, 23 Feb 2018 14:43:55 +0100 Subject: [PATCH] [WIP] Support zlib streams over 2 GB bzip2 routines --- precomp.cpp | 10 +++++----- precomp.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/precomp.cpp b/precomp.cpp index 1ffbd43..774a5e3 100644 --- a/precomp.cpp +++ b/precomp.cpp @@ -2497,7 +2497,7 @@ long long def_compare(FILE *compfile, int level, int windowbits, int memlevel, l z_stream strm; long long identical_bytes_compare = 0; - int comp_pos = 0; + long long comp_pos = 0; decompressed_bytes_used = 0; /* allocate deflate state */ @@ -2579,7 +2579,7 @@ long long def_compare_bzip2(FILE *source, FILE *compfile, int level, long long& bz_stream strm; long long identical_bytes_compare = 0; - int comp_pos = 0; + long long comp_pos = 0; decompressed_bytes_used = 0; /* allocate deflate state */ @@ -3182,12 +3182,12 @@ long long file_recompress(FILE* origfile, int compression_level, int windowbits, return retval; } -long long file_recompress_bzip2(FILE* origfile, int level, long long& decompressed_bytes_used, int& decompressed_bytes_total) { +long long file_recompress_bzip2(FILE* origfile, int level, long long& decompressed_bytes_used, long long& decompressed_bytes_total) { long long retval; ftempout = fopen(tempfile1,"rb"); fseek(ftempout, 0, SEEK_END); - decompressed_bytes_total = ftell(ftempout); + decompressed_bytes_total = tell_64(ftempout); if (ftempout == NULL) { error(ERR_TEMP_FILE_DISAPPEARED); } @@ -6083,7 +6083,7 @@ void try_recompress(FILE* origfile, int comp_level, int mem_level, int windowbit void try_recompress_bzip2(FILE* origfile, int level, int& compressed_stream_size) { print_work_sign(true); - int decomp_bytes_total; + long long decomp_bytes_total; identical_bytes = file_recompress_bzip2(origfile, level, identical_bytes_decomp, decomp_bytes_total); if (identical_bytes > -1) { // successfully recompressed? if ((identical_bytes > best_identical_bytes) || ((identical_bytes == best_identical_bytes) && (penalty_bytes_len < best_penalty_bytes_len))) { diff --git a/precomp.h b/precomp.h index 91e7f07..52225e2 100644 --- a/precomp.h +++ b/precomp.h @@ -1,6 +1,6 @@ int def(FILE *source, FILE *dest, int level, int windowbits, int memlevel); int def_compare(FILE *compfile, int level, int windowbits, int memlevel, int& decompressed_bytes_used, int decompressed_bytes_total, bool in_memory); -int def_compare_bzip2(FILE *source, FILE *compfile, int level, int& decompressed_bytes_used); +long long def_compare_bzip2(FILE *source, FILE *compfile, int level, long long& decompressed_bytes_used); int def_part(FILE *source, FILE *dest, int level, int windowbits, int memlevel, long long stream_size_in, long long stream_size_out); int def_part_skip(FILE *source, FILE *dest, int level, int windowbits, int memlevel, long long stream_size_in, long long stream_size_out, int bmp_width); int inf(FILE *source, int windowbits, int& compressed_stream_size, int& decompressed_stream_size, bool& in_memory); @@ -20,7 +20,7 @@ bool brute_mode_is_active(); int inf_bzip2(FILE *source, FILE *dest); int def_bzip2(FILE *source, FILE *dest, int level); long long file_recompress(FILE* origfile, int compression_level, int windowbits, int memlevel, long long& decompressed_bytes_used, long long decomp_bytes_total, bool in_memory); -long long file_recompress_bzip2(FILE* origfile, int level, int& decompressed_bytes_used, int& decompressed_bytes_total); +long long file_recompress_bzip2(FILE* origfile, int level, long long& decompressed_bytes_used, long long& decompressed_bytes_total); void write_decompressed_data(long long byte_count, char* decompressed_file_name = tempfile1); void write_decompressed_data_io_buf(long long byte_count, bool in_memory, char* decompressed_file_name = tempfile1); unsigned long long compare_files(FILE* file1, FILE* file2, unsigned int pos1, unsigned int pos2);