util.h File Reference

Miscellaneous utility functions. More...

## Macros

#define | xmalloc(size) xrealloc(NULL, size)
| Safe malloc() that never returns NULL. More...

## Enumerations

enum | nicestr_unit { NICESTR_B , NICESTR_KIB , NICESTR_MIB , NICESTR_GIB , NICESTR_TIB }

## Functions

void * | xrealloc (void *ptr, size_t size) lzma_attribute((__malloc__)) lzma_attr_alloc_size(2)
| Safe realloc() that never returns NULL. More...
char * | xstrdup (const char *src) lzma_attribute((__malloc__))
| Safe strdup() that never returns NULL. More...
uint64_t | str_to_uint64 (const char *name, const char *value, uint64_t min, uint64_t max)
| Fancy version of strtoull() More...
uint64_t | round_up_to_mib (uint64_t n)
| Round an integer up to the next full MiB and convert to MiB. More...
const char * | uint64_to_str (uint64_t value, uint32_t slot)
| Convert uint64_t to a string. More...
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. More...
void | my_snprintf (char **pos, size_t *left, const char *fmt,...) lzma_attribute((__format__(__printf__
| Wrapper for snprintf() to help constructing a string in pieces. More...
void bool | is_empty_filename (const char *filename)
| Check if filename is empty and print an error message. More...
bool | is_tty_stdin (void)
| Test if stdin is a terminal. More...
bool | is_tty_stdout (void)
| Test if stdout is a terminal. More...

## Detailed Description

Miscellaneous utility functions.

## Macro Definition Documentation

## xmalloc

#define xmalloc | ( |  | size | ) | xrealloc(NULL, size)

Safe malloc() that never returns NULL.

Note
  xmalloc(), xrealloc(), and xstrdup() must not be used when there are files open for writing, that should be cleaned up before exiting.

## Function Documentation

## xrealloc()

void* xrealloc | ( | void * | ptr,
|  | size_t | size
| ) |  |

Safe realloc() that never returns NULL.

## xstrdup()

char* xstrdup | ( | const char * | src | ) |

Safe strdup() that never returns NULL.

Referenced by parse_options().

## str_to_uint64()

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_fatal().

## round_up_to_mib()

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().

## uint64_to_str()

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).

## 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.

## my_snprintf()

void my_snprintf | ( | char ** | pos,
|  | size_t * | left,
|  | const char * | fmt,
|  |  | ...
| ) |  |

Wrapper for snprintf() to help constructing a string in pieces.

A maximum of *left bytes is written starting from *pos. *pos and *left are updated accordingly.

Referenced by message_filters_to_str().

## is_empty_filename()

void bool is_empty_filename | ( | const char * | filename | ) |

Check if filename is empty and print an error message.

References filename, and message_error().

Referenced by io_open_src().

## is_tty_stdin()

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.

## is_tty_stdout()

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.