XZ Utils  5.2.8
Data Structures | Macros | Functions | Variables
list.c File Reference

Listing information about .xz files. More...

#include "private.h"
#include "tuklib_integer.h"

Data Structures

struct  xz_file_info
 Information about a .xz file. More...
 
struct  block_header_info
 Information about a .xz Block. More...
 

Macros

#define XZ_FILE_INFO_INIT   { NULL, 0, 0, true, 50000002 }
 
#define CHECKS_STR_SIZE   1024
 

Functions

static const char * xz_ver_to_str (uint32_t ver)
 Convert XZ Utils version number to a string. More...
 
static bool parse_indexes (xz_file_info *xfi, file_pair *pair)
 Parse the Index(es) from the given .xz file. More...
 
static bool parse_block_header (file_pair *pair, const lzma_index_iter *iter, block_header_info *bhi, xz_file_info *xfi)
 Parse the Block Header. More...
 
static bool parse_check_value (file_pair *pair, const lzma_index_iter *iter)
 Parse the Check field and put it into check_value[]. More...
 
static bool parse_details (file_pair *pair, const lzma_index_iter *iter, block_header_info *bhi, xz_file_info *xfi)
 Parse detailed information about a Block. More...
 
static const char * get_ratio (uint64_t compressed_size, uint64_t uncompressed_size)
 Get the compression ratio. More...
 
static void get_check_names (char buf[CHECKS_STR_SIZE], uint32_t checks, bool space_after_comma)
 Get a comma-separated list of Check names. More...
 
static bool print_info_basic (const xz_file_info *xfi, file_pair *pair)
 
static void print_adv_helper (uint64_t stream_count, uint64_t block_count, uint64_t compressed_size, uint64_t uncompressed_size, uint32_t checks, uint64_t stream_padding)
 
static bool print_info_adv (xz_file_info *xfi, file_pair *pair)
 
static bool print_info_robot (xz_file_info *xfi, file_pair *pair)
 
static void update_totals (const xz_file_info *xfi)
 
static void print_totals_basic (void)
 
static void print_totals_adv (void)
 
static void print_totals_robot (void)
 
void list_totals (void)
 Show the totals after all files have been listed. More...
 
void list_file (const char *filename)
 List information about the given .xz file. More...
 

Variables

static const char check_names [LZMA_CHECK_ID_MAX+1][12]
 Check ID to string mapping. More...
 
static char check_value [2 *LZMA_CHECK_SIZE_MAX+1]
 
struct {
   uint64_t   files
 
   uint64_t   streams
 
   uint64_t   blocks
 
   uint64_t   compressed_size
 
   uint64_t   uncompressed_size
 
   uint64_t   stream_padding
 
   uint64_t   memusage_max
 
   uint32_t   checks
 
   uint32_t   min_version
 
   bool   all_have_sizes
 
totals = { 0, 0, 0, 0, 0, 0, 0, 0, 50000002, true }
 

Detailed Description

Listing information about .xz files.

Macro Definition Documentation

◆ CHECKS_STR_SIZE

#define CHECKS_STR_SIZE   1024

Buffer size for get_check_names(). This may be a bit ridiculous, but at least it's enough if some language needs many multibyte chars.

Function Documentation

◆ xz_ver_to_str()

static const char* xz_ver_to_str ( uint32_t  ver)
static

Convert XZ Utils version number to a string.

◆ parse_indexes()

static bool parse_indexes ( xz_file_info xfi,
file_pair pair 
)
static

Parse the Index(es) from the given .xz file.

Parameters
xfiPointer to structure where the decoded information is stored.
pairInput file
Returns
On success, false is returned. On error, true is returned.

References message_error(), and file_pair::src_st.

◆ parse_block_header()

static bool parse_block_header ( file_pair pair,
const lzma_index_iter iter,
block_header_info bhi,
xz_file_info xfi 
)
static

Parse the Block Header.

The result is stored into *bhi. The caller takes care of initializing it.

Returns
False on success, true on error.

Referenced by parse_details().

◆ parse_check_value()

static bool parse_check_value ( file_pair pair,
const lzma_index_iter iter 
)
static

Parse the Check field and put it into check_value[].

Returns
False on success, true on error.

References lzma_stream_flags::check, check_value, lzma_index_iter::compressed_file_offset, lzma_index_iter::flags, io_pread(), LZMA_CHECK_NONE, lzma_check_size(), and lzma_index_iter::total_size.

Referenced by parse_details().

◆ parse_details()

static bool parse_details ( file_pair pair,
const lzma_index_iter iter,
block_header_info bhi,
xz_file_info xfi 
)
static

Parse detailed information about a Block.

Since this requires seek(s), listing information about all Blocks can be slow.

Parameters
pairInput file
iterLocation of the Block whose Check value should be printed.
bhiPointer to structure where to store the information about the Block Header field.
Returns
False on success, true on error. If an error occurs, the error message is printed too so the caller doesn't need to worry about that.

References parse_block_header(), and parse_check_value().

◆ get_ratio()

static const char* get_ratio ( uint64_t  compressed_size,
uint64_t  uncompressed_size 
)
static

Get the compression ratio.

This has slightly different format than that is used in message.c.

◆ get_check_names()

static void get_check_names ( char  buf[CHECKS_STR_SIZE],
uint32_t  checks,
bool  space_after_comma 
)
static

Get a comma-separated list of Check names.

The check names are translated with gettext except when in robot mode.

Parameters
bufBuffer to hold the resulting string
checksBit mask of Checks to print
space_after_commaIt's better to not use spaces in table-like listings, but in more verbose formats a space after a comma is good for readability.

◆ list_totals()

void list_totals ( void  )

Show the totals after all files have been listed.

◆ list_file()

void list_file ( const char *  filename)

List information about the given .xz file.

References opt_format.

Variable Documentation

◆ check_names

const char check_names[LZMA_CHECK_ID_MAX+1][12]
static
Initial value:
= {
N_("None"),
"CRC32",
N_("Unknown-2"),
N_("Unknown-3"),
"CRC64",
N_("Unknown-5"),
N_("Unknown-6"),
N_("Unknown-7"),
N_("Unknown-8"),
N_("Unknown-9"),
"SHA-256",
N_("Unknown-11"),
N_("Unknown-12"),
N_("Unknown-13"),
N_("Unknown-14"),
N_("Unknown-15"),
}

Check ID to string mapping.

◆ check_value

char check_value[2 *LZMA_CHECK_SIZE_MAX+1]
static

Value of the Check field as hexadecimal string. This is set by parse_check_value().

Referenced by parse_check_value().

◆ 

struct { ... } totals

Totals that are displayed if there was more than one file. The "files" counter is also used in print_info_adv() to show the file number.