aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2008-12-10 01:23:58 +0200
committerLasse Collin <lasse.collin@tukaani.org>2008-12-10 01:23:58 +0200
commit1ea9e7f15afd5d3981e2432710e932320597bca9 (patch)
tree30e37f2a2f2ae6ffc7ee3901d317b365c489b9bc
parentPut the file format specification into the public domain. (diff)
downloadxz-1ea9e7f15afd5d3981e2432710e932320597bca9.tar.xz
Added preset=NUM to --lzma1 and --lzma2. This makes it easy
to take a preset as a template and modify it a little.
-rw-r--r--src/xz/message.c1
-rw-r--r--src/xz/options.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/src/xz/message.c b/src/xz/message.c
index 0e1f2bc4..39f751e8 100644
--- a/src/xz/message.c
+++ b/src/xz/message.c
@@ -806,6 +806,7 @@ message_help(bool long_help)
"\n"
" --lzma1=[OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
" --lzma2=[OPTS] more of the following options (valid values; default):\n"
+" preset=NUM reset options to preset number NUM (1-9)\n"
" dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n"
" lc=NUM number of literal context bits (0-4; 3)\n"
" lp=NUM number of literal position bits (0-4; 0)\n"
diff --git a/src/xz/options.c b/src/xz/options.c
index 77ebddd6..e754c266 100644
--- a/src/xz/options.c
+++ b/src/xz/options.c
@@ -237,6 +237,7 @@ options_delta(const char *str)
//////////
enum {
+ OPT_PRESET,
OPT_DICT,
OPT_LC,
OPT_LP,
@@ -254,6 +255,12 @@ set_lzma(void *options, uint32_t key, uint64_t value)
lzma_options_lzma *opt = options;
switch (key) {
+ case OPT_PRESET:
+ if (lzma_lzma_preset(options, (uint32_t)(value)))
+ message_fatal("LZMA1/LZMA2 preset %u is not supported",
+ (unsigned int)(value));
+ break;
+
case OPT_DICT:
opt->dict_size = value;
break;
@@ -308,6 +315,7 @@ options_lzma(const char *str)
};
static const option_map opts[] = {
+ { "preset", NULL, 1, 9 },
{ "dict", NULL, LZMA_DICT_SIZE_MIN,
(UINT32_C(1) << 30) + (UINT32_C(1) << 29) },
{ "lc", NULL, LZMA_LCLP_MIN, LZMA_LCLP_MAX },