rpmtd.h
Go to the documentation of this file.
#ifndef _RPMTD_H
#define _RPMTD_H
#include <rpm/rpmtypes.h>
#include <rpm/argv.h>
#ifdef __cplusplus
extern "C" {
#endif
enum rpmtdFlags_e {
RPMTD_NONE = 0,
RPMTD_ALLOCED = (1 << 0), /* was memory allocated? */
RPMTD_PTR_ALLOCED = (1 << 1), /* were array pointers allocated? */
RPMTD_IMMUTABLE = (1 << 2), /* header data or modifiable? */
RPMTD_ARGV = (1 << 3), /* string array is NULL-terminated? */
RPMTD_INVALID = (1 << 4), /* invalid data (in header) */
};
typedef rpmFlags rpmtdFlags;
struct rpmtd_s {
rpm_tag_t tag; /* rpm tag of this data entry*/
rpm_tagtype_t type; /* data type */
rpm_count_t count; /* number of entries */
rpm_data_t data; /* pointer to actual data */
rpmtdFlags flags; /* flags on memory allocation etc */
int ix; /* iteration index */
rpm_count_t size; /* size of data (only works for RPMTD_IMMUTABLE atm) */
};
rpmtd rpmtdNew(void);
rpmtd rpmtdFree(rpmtd td);
void rpmtdReset(rpmtd td);
void rpmtdFreeData(rpmtd td);
rpm_count_t rpmtdCount(rpmtd td);
rpm_count_t rpmtdSize(rpmtd td);
rpmTagVal rpmtdTag(rpmtd td);
rpmTagType rpmtdType(rpmtd td);
rpmTagClass rpmtdClass(rpmtd td);
rpmtdFlags rpmtdGetFlags(rpmtd td);
int rpmtdGetIndex(rpmtd td);
int rpmtdSetIndex(rpmtd td, int index);
int rpmtdInit(rpmtd td);
int rpmtdNext(rpmtd td);
uint32_t *rpmtdNextUint32(rpmtd td);
uint64_t *rpmtdNextUint64(rpmtd td);
const char *rpmtdNextString(rpmtd td);
char *rpmtdGetChar(rpmtd td);
uint16_t * rpmtdGetUint16(rpmtd td);
uint32_t * rpmtdGetUint32(rpmtd td);
uint64_t * rpmtdGetUint64(rpmtd td);
const char * rpmtdGetString(rpmtd td);
uint64_t rpmtdGetNumber(rpmtd td);
typedef enum rpmtdFormats_e {
RPMTD_FORMAT_STRING = 0, /* plain string (any type) */
RPMTD_FORMAT_ARMOR = 1, /* ascii armor format (bin types) */
RPMTD_FORMAT_BASE64 = 2, /* base64 encoding (bin types) */
RPMTD_FORMAT_PGPSIG = 3, /* pgp/gpg signature (bin types) */
RPMTD_FORMAT_DEPFLAGS = 4, /* dependency flags (int types) */
RPMTD_FORMAT_FFLAGS = 5, /* file flags (int types) */
RPMTD_FORMAT_PERMS = 6, /* permission string (int types) */
RPMTD_FORMAT_TRIGGERTYPE = 7, /* trigger types (int types) */
RPMTD_FORMAT_XML = 8, /* xml format (any type) */
RPMTD_FORMAT_OCTAL = 9, /* octal format (int types) */
RPMTD_FORMAT_HEX = 10, /* hex format (int types) */
RPMTD_FORMAT_DATE = 11, /* date format (int types) */
RPMTD_FORMAT_DAY = 12, /* day format (int types) */
RPMTD_FORMAT_SHESCAPE = 13, /* shell escaped (any type) */
RPMTD_FORMAT_ARRAYSIZE = 14, /* size of contained array (any type) */
RPMTD_FORMAT_DEPTYPE = 15, /* dependency types (int types) */
RPMTD_FORMAT_FSTATE = 16, /* file states (int types) */
RPMTD_FORMAT_VFLAGS = 17, /* file verify flags (int types) */
RPMTD_FORMAT_EXPAND = 18, /* macro expansion (string types) */
RPMTD_FORMAT_FSTATUS = 19, /* file verify status (int types) */
RPMTD_FORMAT_HUMANSI = 20, /* human readable value, K = 1000 (int types) */
RPMTD_FORMAT_HUMANIEC = 21, /* human readable value, K = 1024 (int types) */
RPMTD_FORMAT_TAGNAME = 22, /* tag name (any type) */
RPMTD_FORMAT_TAGNUM = 23, /* tag number (any type) */
} rpmtdFormats;
char *rpmtdFormat(rpmtd td, rpmtdFormats fmt, const char *errmsg);
int rpmtdSetTag(rpmtd td, rpmTagVal tag);
int rpmtdFromUint8(rpmtd td, rpmTagVal tag, uint8_t *data, rpm_count_t count);
int rpmtdFromUint16(rpmtd td, rpmTagVal tag, uint16_t *data, rpm_count_t count);
int rpmtdFromUint32(rpmtd td, rpmTagVal tag, uint32_t *data, rpm_count_t count);
int rpmtdFromUint64(rpmtd td, rpmTagVal tag, uint64_t *data, rpm_count_t count);
int rpmtdFromString(rpmtd td, rpmTagVal tag, const char *data);
int rpmtdFromStringArray(rpmtd td, rpmTagVal tag, const char **data, rpm_count_t count);
int rpmtdFromArgv(rpmtd td, rpmTagVal tag, ARGV_t argv);
int rpmtdFromArgi(rpmtd td, rpmTagVal tag, ARGI_t argi);
rpmtd rpmtdDup(rpmtd td);
rpmsid * rpmtdToPool(rpmtd td, rpmstrPool pool);
#ifdef __cplusplus
}
#endif
#endif /* _RPMTD_H */
ARGV_t
char ** ARGV_t
Definition: argv.h:17
rpmTagType
enum rpmTagType_e rpmTagType
The basic types of data in tags from headers.
rpmTagClass
enum rpmTagClass_e rpmTagClass
The classes of data in tags from headers.
rpmtdNextString
const char * rpmtdNextString(rpmtd td)
Iterate over string / string array type tag data container.
rpmtdGetUint64
uint64_t * rpmtdGetUint64(rpmtd td)
Return uint64_t data from tag container.
rpmtdTag
rpmTagVal rpmtdTag(rpmtd td)
Retrieve tag of the container.
rpmtdFromUint32
int rpmtdFromUint32(rpmtd td, rpmTagVal tag, uint32_t *data, rpm_count_t count)
Construct tag container from uint32_t pointer.
rpmtdNextUint64
uint64_t * rpmtdNextUint64(rpmtd td)
Iterate over uint64_t type tag data container.
rpmtdFree
rpmtd rpmtdFree(rpmtd td)
Destroy tag data container.
rpmtdFromStringArray
int rpmtdFromStringArray(rpmtd td, rpmTagVal tag, const char **data, rpm_count_t count)
Construct tag container from a string array.
rpmtdSetIndex
int rpmtdSetIndex(rpmtd td, int index)
Set iteration index of the container.
rpmtdGetNumber
uint64_t rpmtdGetNumber(rpmtd td)
Return numeric value from tag container.
rpmtdFreeData
void rpmtdFreeData(rpmtd td)
Free contained data.
rpmtdNew
rpmtd rpmtdNew(void)
Create new tag data container.
rpmtdToPool
rpmsid * rpmtdToPool(rpmtd td, rpmstrPool pool)
Push string array container contents to a string pool, return string ids.
rpmtdClass
rpmTagClass rpmtdClass(rpmtd td)
Retrieve class of the container.
rpmtdNext
int rpmtdNext(rpmtd td)
Iterate over tag data container.
rpmtdSetTag
int rpmtdSetTag(rpmtd td, rpmTagVal tag)
Set container tag and type.
rpmtdCount
rpm_count_t rpmtdCount(rpmtd td)
Retrieve array size of the container.
rpmtdGetIndex
int rpmtdGetIndex(rpmtd td)
Retrieve current iteration index of the container.
rpmtdInit
int rpmtdInit(rpmtd td)
Initialize tag container for iteration.
rpmtdGetChar
char * rpmtdGetChar(rpmtd td)
Return char data from tag container.
rpmtdFromUint8
int rpmtdFromUint8(rpmtd td, rpmTagVal tag, uint8_t *data, rpm_count_t count)
Construct tag container from uint8_t pointer.
rpmtdFormat
char * rpmtdFormat(rpmtd td, rpmtdFormats fmt, const char *errmsg)
Format data from tag container to string presentation of given format.
rpmtdGetString
const char * rpmtdGetString(rpmtd td)
Return string data from tag container.
rpmtdGetUint32
uint32_t * rpmtdGetUint32(rpmtd td)
Return uint32_t data from tag container.
rpmtdGetUint16
uint16_t * rpmtdGetUint16(rpmtd td)
Return uint16_t data from tag container.
rpmtdFromArgi
int rpmtdFromArgi(rpmtd td, rpmTagVal tag, ARGI_t argi)
Construct tag container from ARGI_t array.
rpmtdDup
rpmtd rpmtdDup(rpmtd td)
Perform deep copy of container.
rpmtdFromArgv
int rpmtdFromArgv(rpmtd td, rpmTagVal tag, ARGV_t argv)
Construct tag container from ARGV_t array.
rpmtdSize
rpm_count_t rpmtdSize(rpmtd td)
Retrieve container data size (eg required for allocation).
rpmtdReset
void rpmtdReset(rpmtd td)
(Re-)initialize tag data container.
rpmtdFromUint64
int rpmtdFromUint64(rpmtd td, rpmTagVal tag, uint64_t *data, rpm_count_t count)
Construct tag container from uint64_t pointer.
rpmtdFromUint16
int rpmtdFromUint16(rpmtd td, rpmTagVal tag, uint16_t *data, rpm_count_t count)
Construct tag container from uint16_t pointer.
rpmtdFromString
int rpmtdFromString(rpmtd td, rpmTagVal tag, const char *data)
Construct tag container from a string.
rpmtdGetFlags
rpmtdFlags rpmtdGetFlags(rpmtd td)
Retrieve flags of the container (allocation details etc)
rpmtdType
rpmTagType rpmtdType(rpmtd td)
Retrieve type of the container.
rpmtdNextUint32
uint32_t * rpmtdNextUint32(rpmtd td)
Iterate over uint32_t type tag data container.
rpm_count_t
uint32_t rpm_count_t
Definition: rpmtypes.h:29
rpmTagVal
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
rpmFlags
uint32_t rpmFlags
Definition: rpmtypes.h:42
rpm_data_t
void * rpm_data_t
Definition: rpmtypes.h:33
rpm_tagtype_t
uint32_t rpm_tagtype_t
Definition: rpmtypes.h:28
rpm_tag_t
int32_t rpm_tag_t
Definition: rpmtypes.h:27
rpmtdFormats_e
rpmtdFormats_e
Definition: rpmtd.h:225
RPMTD_FORMAT_HUMANIEC
@ RPMTD_FORMAT_HUMANIEC
Definition: rpmtd.h:247
RPMTD_FORMAT_DEPFLAGS
@ RPMTD_FORMAT_DEPFLAGS
Definition: rpmtd.h:230
RPMTD_FORMAT_ARRAYSIZE
@ RPMTD_FORMAT_ARRAYSIZE
Definition: rpmtd.h:240
RPMTD_FORMAT_FSTATUS
@ RPMTD_FORMAT_FSTATUS
Definition: rpmtd.h:245
RPMTD_FORMAT_ARMOR
@ RPMTD_FORMAT_ARMOR
Definition: rpmtd.h:227
RPMTD_FORMAT_SHESCAPE
@ RPMTD_FORMAT_SHESCAPE
Definition: rpmtd.h:239
RPMTD_FORMAT_DAY
@ RPMTD_FORMAT_DAY
Definition: rpmtd.h:238
RPMTD_FORMAT_PGPSIG
@ RPMTD_FORMAT_PGPSIG
Definition: rpmtd.h:229
RPMTD_FORMAT_FFLAGS
@ RPMTD_FORMAT_FFLAGS
Definition: rpmtd.h:231
RPMTD_FORMAT_EXPAND
@ RPMTD_FORMAT_EXPAND
Definition: rpmtd.h:244
RPMTD_FORMAT_VFLAGS
@ RPMTD_FORMAT_VFLAGS
Definition: rpmtd.h:243
RPMTD_FORMAT_TAGNUM
@ RPMTD_FORMAT_TAGNUM
Definition: rpmtd.h:249
RPMTD_FORMAT_HEX
@ RPMTD_FORMAT_HEX
Definition: rpmtd.h:236
RPMTD_FORMAT_PERMS
@ RPMTD_FORMAT_PERMS
Definition: rpmtd.h:232
RPMTD_FORMAT_FSTATE
@ RPMTD_FORMAT_FSTATE
Definition: rpmtd.h:242
RPMTD_FORMAT_HUMANSI
@ RPMTD_FORMAT_HUMANSI
Definition: rpmtd.h:246
RPMTD_FORMAT_OCTAL
@ RPMTD_FORMAT_OCTAL
Definition: rpmtd.h:235
RPMTD_FORMAT_STRING
@ RPMTD_FORMAT_STRING
Definition: rpmtd.h:226
RPMTD_FORMAT_BASE64
@ RPMTD_FORMAT_BASE64
Definition: rpmtd.h:228
RPMTD_FORMAT_DEPTYPE
@ RPMTD_FORMAT_DEPTYPE
Definition: rpmtd.h:241
RPMTD_FORMAT_TRIGGERTYPE
@ RPMTD_FORMAT_TRIGGERTYPE
Definition: rpmtd.h:233
RPMTD_FORMAT_XML
@ RPMTD_FORMAT_XML
Definition: rpmtd.h:234
RPMTD_FORMAT_TAGNAME
@ RPMTD_FORMAT_TAGNAME
Definition: rpmtd.h:248
RPMTD_FORMAT_DATE
@ RPMTD_FORMAT_DATE
Definition: rpmtd.h:237
rpmtdFormats
enum rpmtdFormats_e rpmtdFormats
rpmtdFlags
rpmFlags rpmtdFlags
Definition: rpmtd.h:26
rpmtdFlags_e
rpmtdFlags_e
Definition: rpmtd.h:17
RPMTD_IMMUTABLE
@ RPMTD_IMMUTABLE
Definition: rpmtd.h:21
RPMTD_PTR_ALLOCED
@ RPMTD_PTR_ALLOCED
Definition: rpmtd.h:20
RPMTD_INVALID
@ RPMTD_INVALID
Definition: rpmtd.h:23
RPMTD_ARGV
@ RPMTD_ARGV
Definition: rpmtd.h:22
RPMTD_NONE
@ RPMTD_NONE
Definition: rpmtd.h:18
RPMTD_ALLOCED
@ RPMTD_ALLOCED
Definition: rpmtd.h:19
rpmsid
uint32_t rpmsid
Definition: rpmtypes.h:83
rpmstrPool
struct rpmstrPool_s * rpmstrPool
Definition: rpmtypes.h:84
ARGI_s
Definition: argv.h:21
rpmtd_s
Container for rpm tag data (from headers or extensions).
Definition: rpmtd.h:32
rpmtd_s::ix
int ix
Definition: rpmtd.h:38
rpmtd_s::data
rpm_data_t data
Definition: rpmtd.h:36
rpmtd_s::size
rpm_count_t size
Definition: rpmtd.h:39
rpmtd_s::type
rpm_tagtype_t type
Definition: rpmtd.h:34
rpmtd_s::count
rpm_count_t count
Definition: rpmtd.h:35
rpmtd_s::tag
rpm_tag_t tag
Definition: rpmtd.h:33
rpmtd_s::flags
rpmtdFlags flags
Definition: rpmtd.h:37