Compresses or uncompresses a file. More...
#include "private.h"
Enumerations | |
enum | coder_init_ret { CODER_INIT_NORMAL, CODER_INIT_PASSTHRU, CODER_INIT_ERROR } |
Return value type for coder_init(). More... | |
Functions | |
void | coder_set_check (lzma_check new_check) |
Set the integrity check type used when compressing. | |
void | coder_set_preset (size_t new_preset) |
Set preset number. | |
void | coder_set_extreme (void) |
Enable extreme mode. | |
void | coder_add_filter (lzma_vli id, void *options) |
Add a filter to the custom filter chain. | |
static void | lzma_attribute ((noreturn)) |
void | coder_set_compression_settings (void) |
static bool | is_format_xz (void) |
Return true if the data in in_buf seems to be in the .xz format. | |
static bool | is_format_lzma (void) |
Return true if the data in in_buf seems to be in the .lzma format. | |
static enum coder_init_ret | coder_init (file_pair *pair) |
static bool | coder_normal (file_pair *pair) |
Compress or decompress using liblzma. | |
static bool | coder_passthru (file_pair *pair) |
void | coder_run (const char *filename) |
Compress or decompress the given file. | |
Variables | |
enum operation_mode | opt_mode = MODE_COMPRESS |
enum format_type | opt_format = FORMAT_AUTO |
bool | opt_auto_adjust = true |
static lzma_stream | strm = LZMA_STREAM_INIT |
Stream used to communicate with liblzma. | |
static lzma_filter | filters [LZMA_FILTERS_MAX+1] |
Filters needed for all encoding all formats, and also decoding in raw data. | |
static io_buf | in_buf |
Input and output buffers. | |
static io_buf | out_buf |
static size_t | filters_count = 0 |
Number of filters. Zero indicates that we are using a preset. | |
static size_t | preset_number = 6 |
Number of the preset (0-9). | |
static bool | preset_extreme = false |
static lzma_check | check |
Integrity check type. | |
static bool | check_default = true |
This becomes false if the --check=CHECK option is used. |
Compresses or uncompresses a file.
enum coder_init_ret |
Return value type for coder_init().
void coder_set_check | ( | lzma_check | new_check | ) |
Set the integrity check type used when compressing.
References check, and check_default.
void coder_set_preset | ( | size_t | new_preset | ) |
Set preset number.
References filters_count, lzma_filter::options, and preset_number.
void coder_set_extreme | ( | void | ) |
Enable extreme mode.
References preset_extreme.
void coder_add_filter | ( | lzma_vli | id, | |
void * | options | |||
) |
Add a filter to the custom filter chain.
References filters_count, lzma_filter::id, LZMA_FILTERS_MAX, message_fatal(), and lzma_filter::options.
static bool is_format_xz | ( | void | ) | [static] |
Return true if the data in in_buf seems to be in the .xz format.
References lzma_stream::avail_in.
Referenced by coder_init().
static bool is_format_lzma | ( | void | ) | [static] |
Return true if the data in in_buf seems to be in the .lzma format.
References lzma_stream::avail_in, lzma_options_lzma::dict_size, LZMA_FILTER_LZMA1, LZMA_OK, lzma_properties_decode(), and lzma_filter::options.
Referenced by coder_init().
static enum coder_init_ret coder_init | ( | file_pair * | pair | ) | [static] |
Detect the input file type (for now, this done only when decompressing), and initialize an appropriate coder. Return value indicates if a normal liblzma-based coder was initialized (CODER_INIT_NORMAL), if passthru mode should be used (CODER_INIT_PASSTHRU), or if an error occurred (CODER_INIT_ERROR).
References lzma_stream::avail_out, check, hardware_memlimit_get(), is_format_lzma(), is_format_xz(), lzma_alone_decoder(), lzma_alone_encoder(), lzma_code(), lzma_memusage(), LZMA_OK, lzma_raw_decoder(), lzma_raw_encoder(), LZMA_RUN, lzma_stream_decoder(), lzma_stream_encoder(), LZMA_TELL_UNSUPPORTED_CHECK, message_error(), message_mem_needed(), message_strm(), lzma_stream::next_out, opt_format, opt_mode, file_pair::src_name, and V_ERROR.
Referenced by coder_run().
static bool coder_normal | ( | file_pair * | pair | ) | [static] |
Compress or decompress using liblzma.
References lzma_stream::avail_in, lzma_stream::avail_out, io_read(), io_write(), lzma_code(), LZMA_FINISH, lzma_memusage(), LZMA_NO_CHECK, LZMA_OK, LZMA_STREAM_END, message_error(), message_mem_needed(), message_progress_update(), message_strm(), message_warning(), lzma_stream::next_in, lzma_stream::next_out, opt_mode, file_pair::src_eof, file_pair::src_name, user_abort, and V_ERROR.
Referenced by coder_run().
static bool coder_passthru | ( | file_pair * | pair | ) | [static] |
Copy from input file to output file without processing the data in any way. This is used only when trying to decompress unrecognized files with --decompress --stdout --force, so the output is always stdout.
References lzma_stream::avail_in, io_read(), io_write(), message_progress_update(), lzma_stream::total_in, lzma_stream::total_out, and user_abort.
Referenced by coder_run().
void coder_run | ( | const char * | filename | ) |
Compress or decompress the given file.
References lzma_stream::avail_in, coder_init(), coder_normal(), coder_passthru(), io_close(), io_open_dest(), io_open_src(), io_read(), message_filename(), message_progress_end(), message_progress_start(), lzma_stream::next_in, opt_mode, file_pair::src_st, and user_abort.
enum operation_mode opt_mode = MODE_COMPRESS |
Operation mode of the command line tool. This is set in args.c and read in several files.
Referenced by coder_init(), coder_normal(), coder_run(), message_filename(), message_mem_needed(), print_filename(), progress_pos(), and suffix_get_dest_name().
enum format_type opt_format = FORMAT_AUTO |
File format to use when encoding or what format(s) to accept when decoding. This is a global because it's needed also in suffix.c. This is set in args.c.
Referenced by coder_init(), compressed_name(), list_file(), and uncompressed_name().
bool opt_auto_adjust = true |
If true, the compression settings are automatically adjusted down if they exceed the memory usage limit.
lzma_stream strm = LZMA_STREAM_INIT [static] |
Stream used to communicate with liblzma.
Referenced by parse_indexes().
lzma_filter filters[LZMA_FILTERS_MAX+1] [static] |
Filters needed for all encoding all formats, and also decoding in raw data.
Referenced by parse_block_header().
size_t filters_count = 0 [static] |
Number of filters. Zero indicates that we are using a preset.
Referenced by coder_add_filter(), and coder_set_preset().
size_t preset_number = 6 [static] |
Number of the preset (0-9).
Referenced by coder_set_preset().
bool preset_extreme = false [static] |
If a preset is used (no custom filter chain) and preset_extreme is true, a significantly slower compression is used to achieve slightly better compression ratio.
Referenced by coder_set_extreme().
lzma_check check [static] |
Integrity check type.
Referenced by coder_init(), coder_set_check(), and lzma_block_buffer_encode().
bool check_default = true [static] |
This becomes false if the --check=CHECK option is used.
Referenced by coder_set_check().