/home/steven/tmp/wz/xz-utils/xz-utils-4.999.9beta+20100131/src/xz/options.c File Reference

Parser for filter-specific options. More...

#include "private.h"

Data Structures

struct  name_id_map
struct  option_map

Enumerations

enum  { OPT_SIZE, OPT_RLE, OPT_ALIGN }
enum  { OPT_DIST }
enum  { OPT_START_OFFSET }
enum  {
  OPT_PRESET, OPT_DICT, OPT_LC, OPT_LP,
  OPT_PB, OPT_MODE, OPT_NICE, OPT_MF,
  OPT_DEPTH
}

Functions

static void parse_options (const char *str, const option_map *opts, void(*set)(void *filter_options, uint32_t key, uint64_t value, const char *valuestr), void *filter_options)
static void set_subblock (void *options, uint32_t key, uint64_t value, const char *valuestr lzma_attribute((unused)))
lzma_options_subblockoptions_subblock (const char *str)
 Parser for Subblock options.
static void set_delta (void *options, uint32_t key, uint64_t value, const char *valuestr lzma_attribute((unused)))
lzma_options_deltaoptions_delta (const char *str)
 Parser for Delta options.
static void set_bcj (void *options, uint32_t key, uint64_t value, const char *valuestr lzma_attribute((unused)))
lzma_options_bcjoptions_bcj (const char *str)
 Parser for BCJ options.
static void lzma_attribute ((noreturn))
static void set_lzma (void *options, uint32_t key, uint64_t value, const char *valuestr)
lzma_options_lzmaoptions_lzma (const char *str)
 Parser for LZMA options.


Detailed Description

Parser for filter-specific options.


Function Documentation

static void parse_options ( const char *  str,
const option_map *  opts,
void(*)(void *filter_options, uint32_t key, uint64_t value, const char *valuestr)  set,
void *  filter_options 
) [static]

Parses option=value pairs that are separated with colons, semicolons, or commas: opt=val:opt=val;opt=val,opt=val

Each option is a string, that is converted to an integer using the index where the option string is in the array.

Value can be

  • a string-id map mapping a list of possible string values to integers (opts[i].map != NULL, opts[i].min and opts[i].max are ignored);
  • a number with minimum and maximum value limit (opts[i].map == NULL && opts[i].min != UINT64_MAX);
  • a string that will be parsed by the filter-specific code (opts[i].map == NULL && opts[i].min == UINT64_MAX, opts[i].max ignored)

When parsing both option and value succeed, a filter-specific function is called, which should update the given value to filter-specific options structure.

Parameters:
str String containing the options from the command line
opts Filter-specific option map
set Filter-specific function to update filter_options
filter_options Pointer to filter-specific options structure
Returns:
Returns only if no errors occur.

References message_fatal(), str_to_uint64(), and xstrdup().

Referenced by options_bcj(), options_delta(), options_lzma(), and options_subblock().

lzma_options_subblock* options_subblock ( const char *  str  ) 

Parser for Subblock options.

Returns:
Pointer to allocated options structure. Doesn't return on error.

References lzma_options_subblock::allow_subfilters, parse_options(), and xmalloc.

lzma_options_delta* options_delta ( const char *  str  ) 

Parser for Delta options.

Returns:
Pointer to allocated options structure. Doesn't return on error.

References parse_options(), lzma_options_delta::type, and xmalloc.

lzma_options_bcj* options_bcj ( const char *  str  ) 

Parser for BCJ options.

Returns:
Pointer to allocated options structure. Doesn't return on error.

References parse_options(), lzma_options_bcj::start_offset, and xmalloc.

lzma_options_lzma* options_lzma ( const char *  str  ) 


Generated on Mon Feb 15 15:28:22 2010 for XZ Utils by  doxygen 1.5.6