rpm
4.8.1
|
An rpm header carries all information about a package. More...
#include <rpm/rpmio.h>
#include <rpm/rpmtypes.h>
#include <rpm/rpmtd.h>
#include <rpm/rpmutil.h>
Go to the source code of this file.
Typedefs | |
typedef enum headerGetFlags_e | headerGetFlags |
Modifier flags for headerGet() operation. More... | |
typedef enum headerPutFlags_e | headerPutFlags |
typedef enum headerConvOps_e | headerConvOps |
Enumerations | |
enum | hMagic { HEADER_MAGIC_NO = 0, HEADER_MAGIC_YES = 1 } |
Include calculation for 8 bytes of (magic, 0)? More... | |
enum | headerGetFlags_e { HEADERGET_DEFAULT = 0, HEADERGET_MINMEM = (1 << 0), HEADERGET_EXT = (1 << 1), HEADERGET_RAW = (1 << 2), HEADERGET_ALLOC = (1 << 3), HEADERGET_ARGV = (1 << 4) } |
Modifier flags for headerGet() operation. More... | |
enum | headerPutFlags_e { HEADERPUT_DEFAULT = 0, HEADERPUT_APPEND = (1 << 0) } |
enum | headerConvOps_e { HEADERCONV_EXPANDFILELIST = 0, HEADERCONV_COMPRESSFILELIST = 1, HEADERCONV_RETROFIT_V3 = 2 } |
Functions | |
Header | headerNew (void) |
Create new (empty) header instance. More... | |
Header | headerFree (Header h) |
Dereference a header instance. More... | |
Header | headerLink (Header h) |
Reference a header instance. More... | |
Header | headerUnlink (Header h) |
Dereference a header instance. More... | |
void | headerSort (Header h) |
Sort tags in header. More... | |
void | headerUnsort (Header h) |
Restore tags in header to original ordering. More... | |
unsigned int | headerSizeof (Header h, enum hMagic magicp) |
Return size of on-disk header representation in bytes. More... | |
int | headerVerifyInfo (int il, int dl, const void *pev, void *iv, int negate) |
Perform simple sanity and range checks on header tag(s). More... | |
void * | headerUnload (Header h) |
Convert header to on-disk representation. More... | |
Header | headerReload (Header h, rpmTag tag) |
Convert header to on-disk representation, and then reload. More... | |
Header | headerCopy (Header h) |
Duplicate a header. More... | |
Header | headerLoad (void *uh) |
Convert header to in-memory representation. More... | |
Header | headerCopyLoad (const void *uh) |
Make a copy and convert header to in-memory representation. More... | |
Header | headerRead (FD_t fd, enum hMagic magicp) |
Read (and load) header from file handle. More... | |
int | headerWrite (FD_t fd, Header h, enum hMagic magicp) |
Write (with unload) header to file handle. More... | |
int | headerIsEntry (Header h, rpmTag tag) |
Check if tag is in header. More... | |
int | headerGet (Header h, rpmTag tag, rpmtd td, headerGetFlags flags) |
Retrieve tag value. More... | |
int | headerPut (Header h, rpmtd td, headerPutFlags flags) |
Add or append tag to header. More... | |
int | headerAddI18NString (Header h, rpmTag tag, const char *string, const char *lang) |
Add locale specific tag to header. More... | |
int | headerMod (Header h, rpmtd td) |
Modify tag in header. More... | |
int | headerDel (Header h, rpmTag tag) |
Delete tag in header. More... | |
char * | headerFormat (Header h, const char *fmt, errmsg_t *errmsg) |
Return formatted output string from header tags. More... | |
void | headerCopyTags (Header headerFrom, Header headerTo, const rpmTag *tagstocopy) |
Duplicate tag values from one header into another. More... | |
HeaderIterator | headerFreeIterator (HeaderIterator hi) |
Destroy header tag iterator. More... | |
HeaderIterator | headerInitIterator (Header h) |
Create header tag iterator. More... | |
int | headerNext (HeaderIterator hi, rpmtd td) |
Return next tag contents from header. More... | |
rpmTag | headerNextTag (HeaderIterator hi) |
Return next tag number from header. More... | |
RPM_GNUC_DEPRECATED int | headerNVR (Header h, const char **np, const char **vp, const char **rp) |
Return name, version, release strings from header. More... | |
RPM_GNUC_DEPRECATED int | headerNEVRA (Header h, const char **np, uint32_t **ep, const char **vp, const char **rp, const char **ap) |
Return name, epoch, version, release, arch strings from header. More... | |
RPM_GNUC_DEPRECATED char * | headerGetNEVR (Header h, const char **np) |
Return (malloc'd) header name-version-release string. More... | |
RPM_GNUC_DEPRECATED char * | headerGetNEVRA (Header h, const char **np) |
Return (malloc'd) header name-version-release.arch string. More... | |
RPM_GNUC_DEPRECATED char * | headerGetEVR (Header h, const char **np) |
char * | headerGetAsString (Header h, rpmTag tag) |
Return any non-array tag from header, converted to string. More... | |
const char * | headerGetString (Header h, rpmTag tag) |
Return a simple string tag from header. More... | |
uint64_t | headerGetNumber (Header h, rpmTag tag) |
RPM_GNUC_DEPRECATED rpm_color_t | headerGetColor (Header h) |
Return header color. More... | |
int | headerIsSource (Header h) |
Check if header is a source or binary package header. More... | |
unsigned int | headerGetInstance (Header h) |
Return header instance, ie is the header from rpmdb. More... | |
int | headerConvert (Header h, headerConvOps op) |
Convert header to/from (legacy) data presentation. More... | |
int | headerPutString (Header h, rpmTag tag, const char *val) |
Type-safe methods for inserting tag data to header. More... | |
int | headerPutStringArray (Header h, rpmTag tag, const char **val, rpm_count_t size) |
int | headerPutBin (Header h, rpmTag tag, uint8_t *val, rpm_count_t size) |
int | headerPutChar (Header h, rpmTag tag, char *val, rpm_count_t size) |
int | headerPutUint8 (Header h, rpmTag tag, uint8_t *val, rpm_count_t size) |
int | headerPutUint16 (Header h, rpmTag tag, uint16_t *val, rpm_count_t size) |
int | headerPutUint32 (Header h, rpmTag tag, uint32_t *val, rpm_count_t size) |
int | headerPutUint64 (Header h, rpmTag tag, uint64_t *val, rpm_count_t size) |
Variables | |
const unsigned char | rpm_header_magic [8] |
Header magic value. More... | |
An rpm header carries all information about a package.
A header is a collection of data elements called tags. Each tag has a data type, and includes 1 or more values.
Definition in file header.h.
typedef enum headerConvOps_e headerConvOps |
typedef enum headerGetFlags_e headerGetFlags |
Modifier flags for headerGet() operation.
For consistent behavior you'll probably want to use ALLOC to ensure the caller owns the data, but MINMEM is useful for avoiding extra copy of data when you are sure the header wont go away. Most of the time you'll probably want EXT too, but note that extensions tags don't generally honor the other flags, MINMEM, RAW, ALLOC and ARGV are only relevant for non-extension data.
typedef enum headerPutFlags_e headerPutFlags |
enum headerConvOps_e |
enum headerGetFlags_e |
Modifier flags for headerGet() operation.
For consistent behavior you'll probably want to use ALLOC to ensure the caller owns the data, but MINMEM is useful for avoiding extra copy of data when you are sure the header wont go away. Most of the time you'll probably want EXT too, but note that extensions tags don't generally honor the other flags, MINMEM, RAW, ALLOC and ARGV are only relevant for non-extension data.
Enumerator | |
---|---|
HEADERGET_DEFAULT | |
HEADERGET_MINMEM | |
HEADERGET_EXT | |
HEADERGET_RAW | |
HEADERGET_ALLOC | |
HEADERGET_ARGV |
enum headerPutFlags_e |
enum hMagic |
Add locale specific tag to header.
A NULL lang is interpreted as the C locale. Here are the rules:
* - If the tag isn't in the header, it's added with the passed string * as new value. * - If the tag occurs multiple times in entry, which tag is affected * by the operation is undefined. * - If the tag is in the header w/ this language, the entry is * *replaced* (like headerMod()). *
This function is intended to just "do the right thing". If you need more fine grained control use headerPut() and headerMod().
h | header |
tag | tag |
string | tag value |
lang | locale |
int headerConvert | ( | Header | h, |
headerConvOps | op | ||
) |
Convert header to/from (legacy) data presentation.
h | header |
op | operation |
Header headerCopyLoad | ( | const void * | uh | ) |
Make a copy and convert header to in-memory representation.
uh | on-disk header blob (i.e. with offsets) |
Duplicate tag values from one header into another.
headerFrom | source header |
headerTo | destination header |
tagstocopy | array of tags that are copied |
Delete tag in header.
Removes all entries of type tag from the header, returns 1 if none were found.
h | header |
tag | tag |
Return formatted output string from header tags.
The returned string must be free()d.
h | header |
fmt | format to use |
errmsg | error message (if any) |
HeaderIterator headerFreeIterator | ( | HeaderIterator | hi | ) |
Destroy header tag iterator.
hi | header tag iterator |
int headerGet | ( | Header | h, |
rpmTag | tag, | ||
rpmtd | td, | ||
headerGetFlags | flags | ||
) |
Retrieve tag value.
h | header |
tag | tag |
td | tag data container |
flags | retrieval modifier flags |
Return any non-array tag from header, converted to string.
h | header |
tag | tag to retrieve |
RPM_GNUC_DEPRECATED rpm_color_t headerGetColor | ( | Header | h | ) |
Return header color.
h | header |
RPM_GNUC_DEPRECATED char* headerGetEVR | ( | Header | h, |
const char ** | np | ||
) |
unsigned int headerGetInstance | ( | Header | h | ) |
Return header instance, ie is the header from rpmdb.
h | header |
RPM_GNUC_DEPRECATED char* headerGetNEVR | ( | Header | h, |
const char ** | np | ||
) |
Return (malloc'd) header name-version-release string.
h | header |
np | name tag value |
RPM_GNUC_DEPRECATED char* headerGetNEVRA | ( | Header | h, |
const char ** | np | ||
) |
Return (malloc'd) header name-version-release.arch string.
h | header |
np | name tag value |
Return a simple string tag from header.
h | header |
tag | tag to retrieve |
Referenced by main().
HeaderIterator headerInitIterator | ( | Header | h | ) |
Create header tag iterator.
h | header |
Check if tag is in header.
h | header |
tag | tag |
Referenced by checkSpec().
int headerIsSource | ( | Header | h | ) |
Check if header is a source or binary package header.
h | header |
Reference a header instance.
h | header |
Header headerLoad | ( | void * | uh | ) |
Convert header to in-memory representation.
uh | on-disk header blob (i.e. with offsets) |
Modify tag in header.
If there are multiple entries with this tag, the first one gets replaced.
h | header |
td | tag data container |
RPM_GNUC_DEPRECATED int headerNEVRA | ( | Header | h, |
const char ** | np, | ||
uint32_t ** | ep, | ||
const char ** | vp, | ||
const char ** | rp, | ||
const char ** | ap | ||
) |
Return name, epoch, version, release, arch strings from header.
h | header |
*np | name pointer (or NULL) |
*ep | epoch pointer (or NULL) |
*vp | version pointer (or NULL) |
*rp | release pointer (or NULL) |
*ap | arch pointer (or NULL) |
Header headerNew | ( | void | ) |
Create new (empty) header instance.
int headerNext | ( | HeaderIterator | hi, |
rpmtd | td | ||
) |
Return next tag contents from header.
hi | header tag iterator |
td | tag data container |
rpmTag headerNextTag | ( | HeaderIterator | hi | ) |
Return next tag number from header.
hi | header tag iterator |
RPM_GNUC_DEPRECATED int headerNVR | ( | Header | h, |
const char ** | np, | ||
const char ** | vp, | ||
const char ** | rp | ||
) |
Return name, version, release strings from header.
h | header |
*np | name pointer (or NULL) |
*vp | version pointer (or NULL) |
*rp | release pointer (or NULL) |
int headerPut | ( | Header | h, |
rpmtd | td, | ||
headerPutFlags | flags | ||
) |
Add or append tag to header.
h | header |
td | tag data container |
flags | flags to control operation |
int headerPutBin | ( | Header | h, |
rpmTag | tag, | ||
uint8_t * | val, | ||
rpm_count_t | size | ||
) |
int headerPutChar | ( | Header | h, |
rpmTag | tag, | ||
char * | val, | ||
rpm_count_t | size | ||
) |
Type-safe methods for inserting tag data to header.
Tag data type is validated to match the function type, ie things like headerPutUint32(h, RPMTAG_NAME, ...) will return failure. For non-array types size must equal 1, and data is checked to be non-NULL. For array types, add-or-append mode is always used.
headerPutString() can be used on both RPM_STRING_TYPE and RPM_STRING_ARRAY_TYPE (to add a single string into the array) tags, for others the type must match exactly.
These are intended to "do the right thing" in the common case, if you need more fine grained control use headerPut() & friends instead.
h | header |
tag | tag to insert |
val | pointer to value(s) |
size | number of items in array (1 or larger) |
int headerPutStringArray | ( | Header | h, |
rpmTag | tag, | ||
const char ** | val, | ||
rpm_count_t | size | ||
) |
int headerPutUint16 | ( | Header | h, |
rpmTag | tag, | ||
uint16_t * | val, | ||
rpm_count_t | size | ||
) |
int headerPutUint32 | ( | Header | h, |
rpmTag | tag, | ||
uint32_t * | val, | ||
rpm_count_t | size | ||
) |
int headerPutUint64 | ( | Header | h, |
rpmTag | tag, | ||
uint64_t * | val, | ||
rpm_count_t | size | ||
) |
int headerPutUint8 | ( | Header | h, |
rpmTag | tag, | ||
uint8_t * | val, | ||
rpm_count_t | size | ||
) |
Read (and load) header from file handle.
fd | file handle |
magicp | read (and verify) 8 bytes of (magic, 0)? |
Convert header to on-disk representation, and then reload.
This is used to insure that all header data is in one chunk.
h | header (with pointers) |
tag | region tag |
Return size of on-disk header representation in bytes.
h | header |
magicp | include size of 8 bytes for (magic, 0)? |
void headerSort | ( | Header | h | ) |
Sort tags in header.
h | header |
Dereference a header instance.
h | header |
void* headerUnload | ( | Header | h | ) |
Convert header to on-disk representation.
h | header (with pointers) |
void headerUnsort | ( | Header | h | ) |
Restore tags in header to original ordering.
h | header |
int headerVerifyInfo | ( | int | il, |
int | dl, | ||
const void * | pev, | ||
void * | iv, | ||
int | negate | ||
) |
Perform simple sanity and range checks on header tag(s).
il | no. of tags in header |
dl | no. of bytes in header data. |
pev | 1st element in tag array, big-endian |
iv | failing (or last) tag element, host-endian |
negate | negative offset expected? |
Write (with unload) header to file handle.
fd | file handle |
h | header |
magicp | prefix write with 8 bytes of (magic, 0)? |
const unsigned char rpm_header_magic[8] |
Header magic value.