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

Miscellaneous utility functions. More...

#include "private.h"
#include <stdarg.h>

Functions

void * xrealloc (void *ptr, size_t size)
 Safe realloc() that never returns NULL.
char * xstrdup (const char *src)
 Safe strdup() that never returns NULL.
uint64_t str_to_uint64 (const char *name, const char *value, uint64_t min, uint64_t max)
 Fancy version of strtoull().
uint64_t round_up_to_mib (uint64_t n)
 Round an integer up to the next full MiB and convert to MiB.
const char * uint64_to_str (uint64_t value, uint32_t slot)
 Convert uint64_t to a string.
const char * uint64_to_nicestr (uint64_t value, enum nicestr_unit unit_min, enum nicestr_unit unit_max, bool always_also_bytes, uint32_t slot)
 Convert uint64_t to a nice human readable string.
const char * double_to_str (double value)
 Convert double to a string with one decimal place.
void my_snprintf (char **pos, size_t *left, const char *fmt,...)
bool is_empty_filename (const char *filename)
 Check if filename is empty and print an error message.
bool is_tty_stdin (void)
 Test if stdin is a terminal.
bool is_tty_stdout (void)
 Test if stdout is a terminal.


Detailed Description

Miscellaneous utility functions.


Function Documentation

void* xrealloc ( void *  ptr,
size_t  size 
)

Safe realloc() that never returns NULL.

References message_fatal().

char* xstrdup ( const char *  src  ) 

Safe strdup() that never returns NULL.

References xmalloc.

Referenced by parse_options(), and suffix_set().

uint64_t str_to_uint64 ( const char *  name,
const char *  value,
uint64_t  min,
uint64_t  max 
)

Fancy version of strtoull().

Parameters:
name Name of the option to show in case of an error
value String containing the number to be parsed; may contain suffixes "k", "M", "G", "Ki", "Mi", or "Gi"
min Minimum valid value
max Maximum valid value
Returns:
Parsed value that is in the range [min, max]. Does not return if an error occurs.

References message(), message_fatal(), and V_ERROR.

Referenced by parse_options().

uint64_t round_up_to_mib ( uint64_t  n  ) 

Round an integer up to the next full MiB and convert to MiB.

This is used when printing memory usage and limit.

Referenced by message_mem_needed().

const char* uint64_to_str ( uint64_t  value,
uint32_t  slot 
)

Convert uint64_t to a string.

Convert the given value to a string with locale-specific thousand separators, if supported by the snprintf() implementation. The string is stored into an internal static buffer indicated by the slot argument. A pointer to the selected buffer is returned.

This function exists, because non-POSIX systems don't support thousand separator in format strings. Solving the problem in a simple way doesn't work, because it breaks gettext (specifically, the xgettext tool).

Referenced by message_help(), message_mem_needed(), message_memlimit(), and uint64_to_nicestr().

const char* uint64_to_nicestr ( uint64_t  value,
enum nicestr_unit  unit_min,
enum nicestr_unit  unit_max,
bool  always_also_bytes,
uint32_t  slot 
)

Convert uint64_t to a nice human readable string.

This is like uint64_to_str() but uses B, KiB, MiB, GiB, or TiB suffix and optionally includes the exact size in parenthesis.

Parameters:
value Value to be printed
unit_min Smallest unit to use. This and unit_max are used e.g. when showing the progress indicator to force the unit to MiB.
unit_max Biggest unit to use. assert(unit_min <= unit_max).
always_also_bytes Show also the exact byte value in parenthesis if the nicely formatted string uses bigger unit than bytes.
slot Which static buffer to use to hold the string. This is shared with uint64_to_str().
Returns:
Pointer to statically allocated buffer containing the string.
Note:
This uses double_to_str() internally so the static buffer in double_to_str() will be overwritten.

References double_to_str(), my_snprintf(), and uint64_to_str().

Referenced by progress_sizes().

const char* double_to_str ( double  value  ) 

Convert double to a string with one decimal place.

This is like uint64_to_str() except that this converts a double and uses exactly one decimal place.

Referenced by uint64_to_nicestr().

bool is_empty_filename ( const char *  filename  ) 

Check if filename is empty and print an error message.

References message_error().

Referenced by io_open_src().

bool is_tty_stdin ( void   ) 

Test if stdin is a terminal.

If stdin is a terminal, an error message is printed and exit status set to EXIT_ERROR.

References message_error().

bool is_tty_stdout ( void   ) 

Test if stdout is a terminal.

If stdout is a terminal, an error message is printed and exit status set to EXIT_ERROR.

References message_error().


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