From e85e4df0efbe6e7e19969c8d5dbec5bdeac5276a Mon Sep 17 00:00:00 2001 From: discomfitor Date: Thu, 11 Aug 2011 00:57:43 -0400 Subject: [PATCH] move compression overhead calcs out of main() --- main.c | 11 +---------- util.c | 14 ++++++++++++++ util.h | 1 + 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/main.c b/main.c index da1608e..654c12b 100644 --- a/main.c +++ b/main.c @@ -540,16 +540,7 @@ int main(int argc, char *argv[]) control->flags &= ~FLAG_UNLIMITED; } - /* Work out the compression overhead per compression thread for the - * compression back-ends that need a lot of ram */ - if (LZMA_COMPRESS) { - int level = control->compression_level * 7 / 9 ? : 1; - i64 dictsize = (level <= 5 ? (1 << (level * 2 + 14)) : - (level == 6 ? (1 << 25) : (1 << 26))); - - control->overhead = (dictsize * 23 / 2) + (4 * 1024 * 1024); - } else if (ZPAQ_COMPRESS) - control->overhead = 112 * 1024 * 1024; + setup_overhead(control); /* Set the main nice value to half that of the backend threads since * the rzip stage is usually the rate limiting step */ diff --git a/util.c b/util.c index 930a37f..a92fa7e 100644 --- a/util.c +++ b/util.c @@ -133,6 +133,20 @@ void failure(const char *format, ...) fatal_exit(); } +void setup_overhead(rzip_control *control) +{ + /* Work out the compression overhead per compression thread for the + * compression back-ends that need a lot of ram */ + if (LZMA_COMPRESS) { + int level = control->compression_level * 7 / 9 ? : 1; + i64 dictsize = (level <= 5 ? (1 << (level * 2 + 14)) : + (level == 6 ? (1 << 25) : (1 << 26))); + + control->overhead = (dictsize * 23 / 2) + (4 * 1024 * 1024); + } else if (ZPAQ_COMPRESS) + control->overhead = 112 * 1024 * 1024; +} + void setup_ram(rzip_control *control) { /* Use less ram when using STDOUT to store the temporary output file. */ diff --git a/util.h b/util.h index 8b8bf90..d70a7a9 100644 --- a/util.h +++ b/util.h @@ -27,6 +27,7 @@ void unlink_files(void); void register_outputfile(FILE *f); void fatal(const char *format, ...); void failure(const char *format, ...); +void setup_overhead(rzip_control *control); void setup_ram(rzip_control *control); void round_to_page(i64 *size); void get_rand(uchar *buf, int len);