| From: Jonathan Nieder <jrnieder@gmail.com> |
| Date: Wed, 4 Jul 2012 15:18:51 -0500 |
| Subject: Remove support for --block-list |
| |
| This reverts commit 88ccf47205d7f3aa314d358c72ef214f10f68b43. |
| |
| Various details about the --block-list option, such as its interaction |
| with --block-size, are not set in stone yet. Patch it out in Debian |
| to give the interface time to evolve. |
| |
| Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> |
| --- |
| src/xz/args.c | 78 -------------------------------------------------------- |
| src/xz/args.h | 1 - |
| src/xz/coder.c | 48 ++++++---------------------------- |
| src/xz/coder.h | 4 --- |
| src/xz/main.c | 1 - |
| src/xz/message.c | 6 ----- |
| src/xz/xz.1 | 23 ++--------------- |
| 7 files changed, 10 insertions(+), 151 deletions(-) |
| |
| diff --git a/src/xz/args.c b/src/xz/args.c |
| index 995b882..1b88c1e 100644 |
| --- a/src/xz/args.c |
| +++ b/src/xz/args.c |
| @@ -55,67 +55,6 @@ parse_memlimit(const char *name, const char *name_percentage, char *str, |
| |
| |
| static void |
| -parse_block_list(char *str) |
| -{ |
| - // It must be non-empty and not begin with a comma. |
| - if (str[0] == '\0' || str[0] == ',') |
| - message_fatal(_("%s: Invalid argument to --block-list"), str); |
| - |
| - // Count the number of comma-separated strings. |
| - size_t count = 1; |
| - for (size_t i = 0; str[i] != '\0'; ++i) |
| - if (str[i] == ',') |
| - ++count; |
| - |
| - // Prevent an unlikely integer overflow. |
| - if (count > SIZE_MAX / sizeof(uint64_t) - 1) |
| - message_fatal(_("%s: Too many arguments to --block-list"), |
| - str); |
| - |
| - // Allocate memory to hold all the sizes specified. |
| - // If --block-list was specified already, its value is forgotten. |
| - free(opt_block_list); |
| - opt_block_list = xmalloc((count + 1) * sizeof(uint64_t)); |
| - |
| - for (size_t i = 0; i < count; ++i) { |
| - // Locate the next comma and replace it with \0. |
| - char *p = strchr(str, ','); |
| - if (p != NULL) |
| - *p = '\0'; |
| - |
| - if (str[0] == '\0') { |
| - // There is no string, that is, a comma follows |
| - // another comma. Use the previous value. |
| - // |
| - // NOTE: We checked earler that the first char |
| - // of the whole list cannot be a comma. |
| - assert(i > 0); |
| - opt_block_list[i] = opt_block_list[i - 1]; |
| - } else { |
| - opt_block_list[i] = str_to_uint64("block-list", str, |
| - 0, UINT64_MAX); |
| - |
| - // Zero indicates no more new Blocks. |
| - if (opt_block_list[i] == 0) { |
| - if (i + 1 != count) |
| - message_fatal(_("0 can only be used " |
| - "as the last element " |
| - "in --block-list")); |
| - |
| - opt_block_list[i] = UINT64_MAX; |
| - } |
| - } |
| - |
| - str = p + 1; |
| - } |
| - |
| - // Terminate the array. |
| - opt_block_list[count] = 0; |
| - return; |
| -} |
| - |
| - |
| -static void |
| parse_real(args_info *args, int argc, char **argv) |
| { |
| enum { |
| @@ -134,7 +73,6 @@ parse_real(args_info *args, int argc, char **argv) |
| OPT_FILES, |
| OPT_FILES0, |
| OPT_BLOCK_SIZE, |
| - OPT_BLOCK_LIST, |
| OPT_MEM_COMPRESS, |
| OPT_MEM_DECOMPRESS, |
| OPT_NO_ADJUST, |
| @@ -169,7 +107,6 @@ parse_real(args_info *args, int argc, char **argv) |
| { "format", required_argument, NULL, 'F' }, |
| { "check", required_argument, NULL, 'C' }, |
| { "block-size", required_argument, NULL, OPT_BLOCK_SIZE }, |
| - { "block-list", required_argument, NULL, OPT_BLOCK_LIST }, |
| { "memlimit-compress", required_argument, NULL, OPT_MEM_COMPRESS }, |
| { "memlimit-decompress", required_argument, NULL, OPT_MEM_DECOMPRESS }, |
| { "memlimit", required_argument, NULL, 'M' }, |
| @@ -440,11 +377,6 @@ parse_real(args_info *args, int argc, char **argv) |
| 0, LZMA_VLI_MAX); |
| break; |
| |
| - case OPT_BLOCK_LIST: { |
| - parse_block_list(optarg); |
| - break; |
| - } |
| - |
| case OPT_SINGLE_STREAM: |
| opt_single_stream = true; |
| break; |
| @@ -657,13 +589,3 @@ args_parse(args_info *args, int argc, char **argv) |
| |
| return; |
| } |
| - |
| - |
| -#ifndef NDEBUG |
| -extern void |
| -args_free(void) |
| -{ |
| - free(opt_block_list); |
| - return; |
| -} |
| -#endif |
| diff --git a/src/xz/args.h b/src/xz/args.h |
| index 53c4a98..b23f4ef 100644 |
| --- a/src/xz/args.h |
| +++ b/src/xz/args.h |
| @@ -40,4 +40,3 @@ extern bool opt_robot; |
| extern const char stdin_filename[]; |
| |
| extern void args_parse(args_info *args, int argc, char **argv); |
| -extern void args_free(void); |
| diff --git a/src/xz/coder.c b/src/xz/coder.c |
| index 588f25a..a3366d0 100644 |
| --- a/src/xz/coder.c |
| +++ b/src/xz/coder.c |
| @@ -26,7 +26,6 @@ enum format_type opt_format = FORMAT_AUTO; |
| bool opt_auto_adjust = true; |
| bool opt_single_stream = false; |
| uint64_t opt_block_size = 0; |
| -uint64_t *opt_block_list = NULL; |
| |
| |
| /// Stream used to communicate with liblzma |
| @@ -475,36 +474,15 @@ coder_normal(file_pair *pair) |
| // Assume that something goes wrong. |
| bool success = false; |
| |
| - // block_remaining indicates how many input bytes to encode before |
| + // block_remaining indicates how many input bytes to encode until |
| // finishing the current .xz Block. The Block size is set with |
| - // --block-size=SIZE and --block-list. They have an effect only when |
| - // compressing to the .xz format. If block_remaining == UINT64_MAX, |
| - // only a single block is created. |
| + // --block-size=SIZE. It has an effect only when compressing |
| + // to the .xz format. If block_remaining == UINT64_MAX, only |
| + // a single block is created. |
| uint64_t block_remaining = UINT64_MAX; |
| - |
| - // Position in opt_block_list. Unused if --block-list wasn't used. |
| - size_t list_pos = 0; |
| - |
| - // Handle --block-size for single-threaded mode and the first step |
| - // of --block-list. |
| - if (opt_mode == MODE_COMPRESS && opt_format == FORMAT_XZ) { |
| - // --block-size doesn't do anything here in threaded mode, |
| - // because the threaded encoder will take care of splitting |
| - // to fixed-sized Blocks. |
| - if (opt_block_size > 0) |
| - block_remaining = opt_block_size; |
| - |
| - // If --block-list was used, start with the first size. |
| - // |
| - // FIXME: Currently this overrides --block-size but this isn't |
| - // good. For threaded case, we want --block-size to specify |
| - // how big Blocks the encoder needs to be prepared to create |
| - // at maximum and --block-list will simultaneously cause new |
| - // Blocks to be started at specified intervals. To keep things |
| - // logical, the same should be done in single-threaded mode. |
| - if (opt_block_list != NULL) |
| - block_remaining = opt_block_list[list_pos]; |
| - } |
| + if (opt_mode == MODE_COMPRESS && opt_format == FORMAT_XZ |
| + && opt_block_size > 0) |
| + block_remaining = opt_block_size; |
| |
| strm.next_out = out_buf.u8; |
| strm.avail_out = IO_BUFFER_SIZE; |
| @@ -549,17 +527,7 @@ coder_normal(file_pair *pair) |
| if (ret == LZMA_STREAM_END && action == LZMA_FULL_FLUSH) { |
| // Start a new Block. |
| action = LZMA_RUN; |
| - |
| - if (opt_block_list == NULL) { |
| - block_remaining = opt_block_size; |
| - } else { |
| - // FIXME: Make it work together with |
| - // --block-size. |
| - if (opt_block_list[list_pos + 1] != 0) |
| - ++list_pos; |
| - |
| - block_remaining = opt_block_list[list_pos]; |
| - } |
| + block_remaining = opt_block_size; |
| |
| } else if (ret != LZMA_OK) { |
| // Determine if the return value indicates that we |
| diff --git a/src/xz/coder.h b/src/xz/coder.h |
| index 583da8f..578d2d7 100644 |
| --- a/src/xz/coder.h |
| +++ b/src/xz/coder.h |
| @@ -48,10 +48,6 @@ extern bool opt_single_stream; |
| /// of input. This has an effect only when compressing to the .xz format. |
| extern uint64_t opt_block_size; |
| |
| -/// This is non-NULL if --block-list was used. This contains the Block sizes |
| -/// as an array that is terminated with 0. |
| -extern uint64_t *opt_block_list; |
| - |
| /// Set the integrity check type used when compressing |
| extern void coder_set_check(lzma_check check); |
| |
| diff --git a/src/xz/main.c b/src/xz/main.c |
| index a8f0683..4e5b49e 100644 |
| --- a/src/xz/main.c |
| +++ b/src/xz/main.c |
| @@ -277,7 +277,6 @@ main(int argc, char **argv) |
| |
| #ifndef NDEBUG |
| coder_free(); |
| - args_free(); |
| #endif |
| |
| // If we have got a signal, raise it to kill the program instead |
| diff --git a/src/xz/message.c b/src/xz/message.c |
| index abbd171..2b6ac5f 100644 |
| --- a/src/xz/message.c |
| +++ b/src/xz/message.c |
| @@ -1153,16 +1153,10 @@ message_help(bool long_help) |
| " does not affect decompressor memory requirements")); |
| |
| if (long_help) { |
| - // FIXME? Mention something about threading? |
| puts(_( |
| " --block-size=SIZE\n" |
| " when compressing to the .xz format, start a new block\n" |
| " after every SIZE bytes of input; 0=disabled (default)")); |
| - // FIXME |
| - puts(_( |
| -" --block-list=SIZES\n" |
| -" when compressing to the .xz format, start a new block\n" |
| -" after the given intervals of uncompressed data")); |
| puts(_( // xgettext:no-c-format |
| " --memlimit-compress=LIMIT\n" |
| " --memlimit-decompress=LIMIT\n" |
| diff --git a/src/xz/xz.1 b/src/xz/xz.1 |
| index 30f7252..0952f2d 100644 |
| --- a/src/xz/xz.1 |
| +++ b/src/xz/xz.1 |
| @@ -5,7 +5,7 @@ |
| .\" This file has been put into the public domain. |
| .\" You can do whatever you want with this file. |
| .\" |
| -.TH XZ 1 "2012-07-03" "Tukaani" "XZ Utils" |
| +.TH XZ 1 "2012-07-01" "Tukaani" "XZ Utils" |
| . |
| .SH NAME |
| xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files |
| @@ -807,26 +807,7 @@ format, split the input data into blocks of |
| .I size |
| bytes. |
| The blocks are compressed independently from each other. |
| -.\" FIXME: Explain how to these can be used for random access and threading. |
| -.TP |
| -.BI \-\-block\-list= sizes |
| -When compressing to the |
| -.B .xz |
| -format, start a new block after |
| -the given intervals of uncompressed data. |
| -.IP "" |
| -The uncompressed |
| -.I sizes |
| -of the blocks are specified as a comma-separated list. |
| -Omitting a size (two or more consecutive commas) is a shorthand |
| -to use the size of the previous block. |
| -A special value of |
| -.B 0 |
| -may be used as the last value to indicate that |
| -the rest of the file should be encoded as a single block. |
| -.IP "" |
| -.B "Currently this option is badly broken if used together with" |
| -.B "\-\-block\-size or with multithreading." |
| +.\" FIXME: Explain how to his can be used for random access and threading. |
| .TP |
| .BI \-\-memlimit\-compress= limit |
| Set a memory usage limit for compression. |
| -- |
| 1.7.11.rc3 |
| |