RPM Tag Data Container API.
Querying package headers:

How to retrieve data from package headers. More...

Collaboration diagram for RPM Tag Data Container API.:

## Files

file | rpmtd.h
| RPM Tag Data Container API.

## Data Structures

struct | rpmtd_s
| Container for rpm tag data (from headers or extensions). More...

## Functions

rpmtd | rpmtdNew (void)
| Create new tag data container. More...
rpmtd | rpmtdFree (rpmtd td)
| Destroy tag data container. More...
void | rpmtdReset (rpmtd td)
| (Re-)initialize tag data container. More...
void | rpmtdFreeData (rpmtd td)
| Free contained data. More...
rpm_count_t | rpmtdCount (rpmtd td)
| Retrieve array size of the container. More...
rpm_count_t | rpmtdSize (rpmtd td)
| Retrieve container data size (eg required for allocation). More...
rpmTagVal | rpmtdTag (rpmtd td)
| Retrieve tag of the container. More...
rpmTagType | rpmtdType (rpmtd td)
| Retrieve type of the container. More...
rpmTagClass | rpmtdClass (rpmtd td)
| Retrieve class of the container. More...
rpmtdFlags | rpmtdGetFlags (rpmtd td)
| Retrieve flags of the container (allocation details etc) More...
int | rpmtdGetIndex (rpmtd td)
| Retrieve current iteration index of the container. More...
int | rpmtdSetIndex (rpmtd td, int index)
| Set iteration index of the container. More...
int | rpmtdInit (rpmtd td)
| Initialize tag container for iteration. More...
int | rpmtdNext (rpmtd td)
| Iterate over tag data container. More...
uint32_t * | rpmtdNextUint32 (rpmtd td)
| Iterate over uint32_t type tag data container. More...
uint64_t * | rpmtdNextUint64 (rpmtd td)
| Iterate over uint64_t type tag data container. More...
const char * | rpmtdNextString (rpmtd td)
| Iterate over string / string array type tag data container. More...
char * | rpmtdGetChar (rpmtd td)
| Return char data from tag container. More...
uint16_t * | rpmtdGetUint16 (rpmtd td)
| Return uint16_t data from tag container. More...
uint32_t * | rpmtdGetUint32 (rpmtd td)
| Return uint32_t data from tag container. More...
uint64_t * | rpmtdGetUint64 (rpmtd td)
| Return uint64_t data from tag container. More...
const char * | rpmtdGetString (rpmtd td)
| Return string data from tag container. More...
uint64_t | rpmtdGetNumber (rpmtd td)
| Return numeric value from tag container. More...
char * | rpmtdFormat (rpmtd td, rpmtdFormats fmt, const char *errmsg)
| Format data from tag container to string presentation of given format. More...
int | rpmtdSetTag (rpmtd td, rpmTagVal tag)
| Set container tag and type. More...
int | rpmtdFromUint8 (rpmtd td, rpmTagVal tag, uint8_t *data, rpm_count_t count)
| Construct tag container from uint8_t pointer. More...
int | rpmtdFromUint16 (rpmtd td, rpmTagVal tag, uint16_t *data, rpm_count_t count)
| Construct tag container from uint16_t pointer. More...
int | rpmtdFromUint32 (rpmtd td, rpmTagVal tag, uint32_t *data, rpm_count_t count)
| Construct tag container from uint32_t pointer. More...
int | rpmtdFromUint64 (rpmtd td, rpmTagVal tag, uint64_t *data, rpm_count_t count)
| Construct tag container from uint64_t pointer. More...
int | rpmtdFromString (rpmtd td, rpmTagVal tag, const char *data)
| Construct tag container from a string. More...
int | rpmtdFromStringArray (rpmtd td, rpmTagVal tag, const char **data, rpm_count_t count)
| Construct tag container from a string array. More...
int | rpmtdFromArgv (rpmtd td, rpmTagVal tag, ARGV_t argv)
| Construct tag container from ARGV_t array. More...
int | rpmtdFromArgi (rpmtd td, rpmTagVal tag, ARGI_t argi)
| Construct tag container from ARGI_t array. More...

## Detailed Description

How to retrieve data from package headers.

## Function Documentation

## rpmtdClass()

rpmTagClass rpmtdClass | ( | rpmtd | td | ) |

Retrieve class of the container.

Parameters

  td | Tag data container

Returns
  Rpm tag class

## rpmtdCount()

rpm_count_t rpmtdCount | ( | rpmtd | td | ) |

Retrieve array size of the container.

For non-array types this is always 1.

Parameters

  td | Tag data container

Returns
  Number of entries in contained data.

## rpmtdFormat()

char* rpmtdFormat | ( | rpmtd | td,
|  | rpmtdFormats | fmt,
|  | const char * | errmsg
| ) |  |

Format data from tag container to string presentation of given format.

Return malloced string presentation of current data in container, converting from integers etc as necessary. On array types, data from current iteration index is used for formatting.

Parameters

  td | Tag data container
  fmt | Format to apply
  errmsg | Error message from conversion (or NULL)

Returns
  String representation of current data (malloc'ed), NULL on error

## rpmtdFree()

rpmtd rpmtdFree | ( | rpmtd | td | ) |

Destroy tag data container.

Parameters

  td | Tag data container

Returns
  NULL always

## rpmtdFreeData()

void rpmtdFreeData | ( | rpmtd | td | ) |

Free contained data.

This is always safe to call as the container knows if data was malloc'ed or not. Container is reinitialized.

Parameters

  td | Tag data container

## rpmtdFromArgi()

int rpmtdFromArgi | ( | rpmtd | td,
|  | rpmTagVal | tag,
|  | ARGI_t | argi
| ) |  |

Construct tag container from ARGI_t array.

Tag type is checked to be of integer array type and array is checked to be non-empty.

Parameters

  td | Tag data container
  tag | Rpm tag to construct
  argi | ARGI array

Returns
  1 on success, 0 on error (eg wrong type)

## rpmtdFromArgv()

int rpmtdFromArgv | ( | rpmtd | td,
|  | rpmTagVal | tag,
|  | ARGV_t | argv
| ) |  |

Construct tag container from ARGV_t array.

Tag type is checked to be of string array type and array is checked to be non-empty.

Parameters

  td | Tag data container
  tag | Rpm tag to construct
  argv | ARGV array

Returns
  1 on success, 0 on error (eg wrong type)

## rpmtdFromString()

int rpmtdFromString | ( | rpmtd | td,
|  | rpmTagVal | tag,
|  | const char * | data
| ) |  |

Construct tag container from a string.

Tag type is checked to be of string type.

Parameters

  td | Tag data container
  tag | Rpm tag to construct
  data | String to use

Returns
  1 on success, 0 on error (eg wrong type)

## rpmtdFromStringArray()

int rpmtdFromStringArray | ( | rpmtd | td,
|  | rpmTagVal | tag,
|  | const char ** | data,
|  | rpm_count_t | count
| ) |  |

Construct tag container from a string array.

Tag type is checked to be of string or string array type. For non-array types count must be exactly 1.

Parameters

  td | Tag data container
  tag | Rpm tag to construct
  data | Pointer to string array
  count | Number of entries

Returns
  1 on success, 0 on error (eg wrong type)

## rpmtdFromUint16()

int rpmtdFromUint16 | ( | rpmtd | td,
|  | rpmTagVal | tag,
|  | uint16_t * | data,
|  | rpm_count_t | count
| ) |  |

Construct tag container from uint16_t pointer.

Tag type is checked to be of INT16 type. For non-array types count must be exactly 1.

Parameters

  td | Tag data container
  tag | Rpm tag to construct
  data | Pointer to uint16_t (value or array)
  count | Number of entries

Returns
  1 on success, 0 on error (eg wrong type)

## rpmtdFromUint32()

int rpmtdFromUint32 | ( | rpmtd | td,
|  | rpmTagVal | tag,
|  | uint32_t * | data,
|  | rpm_count_t | count
| ) |  |

Construct tag container from uint32_t pointer.

Tag type is checked to be of INT32 type. For non-array types count must be exactly 1.

Parameters

  td | Tag data container
  tag | Rpm tag to construct
  data | Pointer to uint32_t (value or array)
  count | Number of entries

Returns
  1 on success, 0 on error (eg wrong type)

## rpmtdFromUint64()

int rpmtdFromUint64 | ( | rpmtd | td,
|  | rpmTagVal | tag,
|  | uint64_t * | data,
|  | rpm_count_t | count
| ) |  |

Construct tag container from uint64_t pointer.

Tag type is checked to be of INT64 type. For non-array types count must be exactly 1.

Parameters

  td | Tag data container
  tag | Rpm tag to construct
  data | Pointer to uint64_t (value or array)
  count | Number of entries

Returns
  1 on success, 0 on error (eg wrong type)

## rpmtdFromUint8()

int rpmtdFromUint8 | ( | rpmtd | td,
|  | rpmTagVal | tag,
|  | uint8_t * | data,
|  | rpm_count_t | count
| ) |  |

Construct tag container from uint8_t pointer.

Tag type is checked to be of compatible type (CHAR, INT8 or BIN). For non-array types (BIN is a special case of INT8 array) count must be exactly 1.

Parameters

  td | Tag data container
  tag | Rpm tag to construct
  data | Pointer to uint8_t (value or array)
  count | Number of entries

Returns
  1 on success, 0 on error (eg wrong type)

## rpmtdGetChar()

char* rpmtdGetChar | ( | rpmtd | td | ) |

Return char data from tag container.

For scalar return type, just return pointer to the integer. On array types, return pointer to current iteration index. If the tag container is not for char type, NULL is returned.

Parameters

  td | Tag data container

Returns
  Pointer to uint16_t, NULL on error

## rpmtdGetFlags()

rpmtdFlags rpmtdGetFlags | ( | rpmtd | td | ) |

Retrieve flags of the container (allocation details etc)

Parameters

  td | Tag data container

Returns
  Container flags

## rpmtdGetIndex()

int rpmtdGetIndex | ( | rpmtd | td | ) |

Retrieve current iteration index of the container.

Parameters

  td | Tag data container

Returns
  Iteration index (or -1 if not iterating)

## rpmtdGetNumber()

uint64_t rpmtdGetNumber | ( | rpmtd | td | ) |

Return numeric value from tag container.

Returns the value of numeric container (RPM_NUMERIC_CLASS) from current iteration index as uint64_t regardless of its internal presentation (8/16/32/64-bit integer).

Parameters

  td | Tag data container

Returns
  Value of current iteration item as uint64_t, 0 for non-numeric types (error)

## rpmtdGetString()

const char* rpmtdGetString | ( | rpmtd | td | ) |

Return string data from tag container.

For string types, just return the string. On string array types, return the string from current iteration index. If the tag container is not for a string type, NULL is returned.

Parameters

  td | Tag data container

Returns
  String constant from container, NULL on error

## rpmtdGetUint16()

uint16_t* rpmtdGetUint16 | ( | rpmtd | td | ) |

Return uint16_t data from tag container.

For scalar return type, just return pointer to the integer. On array types, return pointer to current iteration index. If the tag container is not for int16 type, NULL is returned.

Parameters

  td | Tag data container

Returns
  Pointer to uint16_t, NULL on error

## rpmtdGetUint32()

uint32_t* rpmtdGetUint32 | ( | rpmtd | td | ) |

Return uint32_t data from tag container.

For scalar return type, just return pointer to the integer. On array types, return pointer to current iteration index. If the tag container is not for int32 type, NULL is returned.

Parameters

  td | Tag data container

Returns
  Pointer to uint32_t, NULL on error

## rpmtdGetUint64()

uint64_t* rpmtdGetUint64 | ( | rpmtd | td | ) |

Return uint64_t data from tag container.

For scalar return type, just return pointer to the integer. On array types, return pointer to current iteration index. If the tag container is not for int64 type, NULL is returned.

Parameters

  td | Tag data container

Returns
  Pointer to uint64_t, NULL on error

## rpmtdInit()

int rpmtdInit | ( | rpmtd | td | ) |

Initialize tag container for iteration.

Parameters

  td | Tag data container

Returns
  0 on success

## rpmtdNew()

rpmtd rpmtdNew | ( | void |  | ) |

Create new tag data container.

Returns
  New, initialized tag data container.

## rpmtdNext()

int rpmtdNext | ( | rpmtd | td | ) |

Iterate over tag data container.

Parameters

  td | Tag data container

Returns
  Tag data container iterator index, -1 on termination

## rpmtdNextString()

const char* rpmtdNextString | ( | rpmtd | td | ) |

Iterate over string / string array type tag data container.

Parameters

  td | Tag data container

Returns
  Pointer to next value, NULL on termination or error

## rpmtdNextUint32()

uint32_t* rpmtdNextUint32 | ( | rpmtd | td | ) |

Iterate over uint32_t type tag data container.

Parameters

  td | Tag data container

Returns
  Pointer to next value, NULL on termination or error

## rpmtdNextUint64()

uint64_t* rpmtdNextUint64 | ( | rpmtd | td | ) |

Iterate over uint64_t type tag data container.

Parameters

  td | Tag data container

Returns
  Pointer to next value, NULL on termination or error

## rpmtdReset()

void rpmtdReset | ( | rpmtd | td | ) |

(Re-)initialize tag data container.

Contents will be zeroed out and iteration index reset.

Parameters

  td | Tag data container

## rpmtdSetIndex()

int rpmtdSetIndex | ( | rpmtd | td,
|  | int | index
| ) |  |

Set iteration index of the container.

If new index is out of bounds for the container, -1 is returned and iteration index is left untouched.

Parameters

  td | Tag data container
  index | New index

Returns
  New index, or -1 if index out of bounds

## rpmtdSetTag()

int rpmtdSetTag | ( | rpmtd | td,
|  | rpmTagVal | tag
| ) |  |

Set container tag and type.

For empty container, any valid tag can be set. If the container has data, changing is only permitted to tag of same type.

Parameters

  td | Tag data container
  tag | New tag

Returns
  1 on success, 0 on error

## rpmtdSize()

rpm_count_t rpmtdSize | ( | rpmtd | td | ) |

Retrieve container data size (eg required for allocation).

Note this currently only works for RPMTD_IMMUTABLE data.

Parameters

  td | Tag data container

Returns
  Data size in bytes.

## rpmtdTag()

rpmTagVal rpmtdTag | ( | rpmtd | td | ) |

Retrieve tag of the container.

Parameters

  td | Tag data container

Returns
  Rpm tag.

## rpmtdType()

rpmTagType rpmtdType | ( | rpmtd | td | ) |

Retrieve type of the container.

Parameters

  td | Tag data container

Returns
  Rpm tag type.