Data Structures | Defines | Functions | Variables

/tmp/buildd/xz-utils-5.0.0/src/xz/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...

Defines

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

Functions

static bool parse_indexes (xz_file_info *xfi, file_pair *pair)
 Parse the Index(es) from the given .xz file.
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.
static bool parse_check_value (file_pair *pair, const lzma_index_iter *iter)
 Parse the Check field and put it into check_value[].
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.
static const char * get_ratio (uint64_t compressed_size, uint64_t uncompressed_size)
 Get the compression ratio.
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.
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.
void list_file (const char *filename)
 List information about the given .xz file.

Variables

static const char check_names [LZMA_CHECK_ID_MAX+1][12]
 Check ID to string mapping.
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
   bool   all_have_sizes
totals

Detailed Description

Listing information about .xz files.


Define Documentation

#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

static bool parse_indexes ( xz_file_info xfi,
file_pair pair 
) [static]
static bool parse_block_header ( file_pair pair,
const lzma_index_iter iter,
block_header_info bhi,
xz_file_info xfi 
) [static]
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().

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:
pair Input file
iter Location of the Block whose Check value should be printed.
bhi Pointer 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().

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.

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:
buf Buffer to hold the resulting string
checks Bit mask of Checks to print
space_after_comma It's better to not use spaces in table-like listings, but in more verbose formats a space after a comma is good for readability.

References check_names, and my_snprintf().

void list_totals ( void   ) 

Show the totals after all files have been listed.

References message_verbosity_get(), totals, and V_WARNING.

void list_file ( const char *  filename  ) 

Variable Documentation

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.

Referenced by get_check_names().

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 [static]

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.

Referenced by list_totals().