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