How to manipulate package headers (which carries all information about a package).
More...
|
enum | hMagic { HEADER_MAGIC_NO = 0,
HEADER_MAGIC_YES = 1
} |
|
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)
} |
|
enum | rpmTagType_e {
RPM_NULL_TYPE = 0,
RPM_CHAR_TYPE = 1,
RPM_INT8_TYPE = 2,
RPM_INT16_TYPE = 3,
RPM_INT32_TYPE = 4,
RPM_INT64_TYPE = 5,
RPM_STRING_TYPE = 6,
RPM_BIN_TYPE = 7,
RPM_STRING_ARRAY_TYPE = 8,
RPM_I18NSTRING_TYPE = 9
} |
|
enum | rpmTagReturnType_e {
RPM_ANY_RETURN_TYPE = 0,
RPM_SCALAR_RETURN_TYPE = 0x00010000,
RPM_ARRAY_RETURN_TYPE = 0x00020000,
RPM_MAPPING_RETURN_TYPE = 0x00040000,
RPM_MASK_RETURN_TYPE = 0xffff0000
} |
|
|
Header | headerNew (void) |
|
Header | headerFree (Header h) |
|
Header | headerLink (Header h) |
|
unsigned int | headerSizeof (Header h, int magicp) |
|
void * | headerUnload (Header h) |
|
void * | headerExport (Header h, unsigned int *bsize) |
|
Header | headerReload (Header h, rpmTagVal tag) |
|
Header | headerCopy (Header h) |
|
Header | headerLoad (void *uh) |
|
Header | headerCopyLoad (const void *uh) |
|
Header | headerImport (void *blob, unsigned int bsize, headerImportFlags flags) |
|
Header | headerRead (FD_t fd, int magicp) |
|
int | headerWrite (FD_t fd, Header h, int magicp) |
|
int | headerIsEntry (Header h, rpmTagVal tag) |
|
int | headerGet (Header h, rpmTagVal tag, rpmtd td, headerGetFlags flags) |
|
int | headerPut (Header h, rpmtd td, headerPutFlags flags) |
|
int | headerAddI18NString (Header h, rpmTagVal tag, const char *string, const char *lang) |
|
int | headerMod (Header h, rpmtd td) |
|
int | headerDel (Header h, rpmTagVal tag) |
|
char * | headerFormat (Header h, const char *fmt, errmsg_t *errmsg) |
|
void | headerCopyTags (Header headerFrom, Header headerTo, const rpmTagVal *tagstocopy) |
|
HeaderIterator | headerFreeIterator (HeaderIterator hi) |
|
HeaderIterator | headerInitIterator (Header h) |
|
int | headerNext (HeaderIterator hi, rpmtd td) |
|
rpmTagVal | headerNextTag (HeaderIterator hi) |
|
char * | headerGetAsString (Header h, rpmTagVal tag) |
|
const char * | headerGetString (Header h, rpmTagVal tag) |
|
int | headerIsSource (Header h) |
|
unsigned int | headerGetInstance (Header h) |
|
int | headerConvert (Header h, int op) |
|
|
const unsigned char | rpm_header_magic [8] |
|
int | headerPutBin (Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size) |
|
int | headerPutString (Header h, rpmTagVal tag, const char *val) |
|
int | headerPutStringArray (Header h, rpmTagVal tag, const char **val, rpm_count_t size) |
|
int | headerPutChar (Header h, rpmTagVal tag, const char *val, rpm_count_t size) |
|
int | headerPutUint8 (Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size) |
|
int | headerPutUint16 (Header h, rpmTagVal tag, const uint16_t *val, rpm_count_t size) |
|
int | headerPutUint32 (Header h, rpmTagVal tag, const uint32_t *val, rpm_count_t size) |
|
int | headerPutUint64 (Header h, rpmTagVal tag, const uint64_t *val, rpm_count_t size) |
|
How to manipulate package headers (which carries all information about a package).
/**
◆ rpmTagType
The basic types of data in tags from headers.
◆ 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 | |
Definition at line 163 of file header.h.
◆ hMagic
Include calculation for 8 bytes of (magic, 0)?
Enumerator |
---|
HEADER_MAGIC_NO | |
HEADER_MAGIC_YES | |
Definition at line 32 of file header.h.
◆ rpmTagReturnType_e
- Identify how to return the header data type.
Enumerator |
---|
RPM_ANY_RETURN_TYPE | |
RPM_SCALAR_RETURN_TYPE | |
RPM_ARRAY_RETURN_TYPE | |
RPM_MAPPING_RETURN_TYPE | |
RPM_MASK_RETURN_TYPE | |
Definition at line 468 of file rpmtag.h.
◆ rpmTagType_e
The basic types of data in tags from headers.
Enumerator |
---|
RPM_NULL_TYPE | |
RPM_CHAR_TYPE | |
RPM_INT8_TYPE | |
RPM_INT16_TYPE | |
RPM_INT32_TYPE | |
RPM_INT64_TYPE | |
RPM_STRING_TYPE | |
RPM_BIN_TYPE | |
RPM_STRING_ARRAY_TYPE | |
RPM_I18NSTRING_TYPE | |
Definition at line 438 of file rpmtag.h.
◆ headerAddI18NString()
int headerAddI18NString |
( |
Header |
h, |
|
|
rpmTagVal |
tag, |
|
|
const char * |
string, |
|
|
const char * |
lang |
|
) |
| |
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().
- Parameters
-
h | header |
tag | tag |
string | tag value |
lang | locale |
- Returns
- 1 on success, 0 on failure
◆ headerCheck()
rpmRC headerCheck |
( |
rpmts |
ts, |
|
|
const void * |
uh, |
|
|
size_t |
uc, |
|
|
char ** |
msg |
|
) |
| |
Check header consistency, performing headerGetEntry() the hard way.
Sanity checks on the header are performed while looking for a header-only digest or signature to verify the blob. If found, the digest or signature is verified.
- Parameters
-
ts | transaction set |
uh | unloaded header blob |
uc | no. of bytes in blob (or 0 to disable) |
- Return values
-
*msg | verification error message (or NULL) |
- Returns
- RPMRC_OK on success
◆ headerConvert()
int headerConvert |
( |
Header |
h, |
|
|
int |
op |
|
) |
| |
Convert header to/from (legacy) data presentation
- Parameters
-
h | header |
op | one of headerConvOps operations |
- Returns
- 1 on success, 0 on failure
◆ headerCopy()
Duplicate a header.
- Parameters
-
- Returns
- new header instance
◆ headerCopyLoad()
Header headerCopyLoad |
( |
const void * |
uh | ) |
|
Make a copy and convert header to in-memory representation.
- Deprecated:
- Use headerImport() instead
- Parameters
-
uh | on-disk header blob (i.e. with offsets) |
- Returns
- header
◆ headerCopyTags()
Duplicate tag values from one header into another.
- Parameters
-
headerFrom | source header |
headerTo | destination header |
tagstocopy | array of tags that are copied |
◆ headerDel()
Delete tag in header. Removes all entries of type tag from the header, returns 1 if none were found.
- Parameters
-
- Returns
- 0 on success, 1 on failure (INCONSISTENT)
◆ headerExport()
void* headerExport |
( |
Header |
h, |
|
|
unsigned int * |
bsize |
|
) |
| |
Export header to on-disk representation.
- Parameters
-
- Return values
-
bsize | on-disk header blob size in bytes |
- Returns
- on-disk header blob (i.e. with offsets)
◆ headerFormat()
Return formatted output string from header tags. The returned string must be free()d.
- Parameters
-
- Return values
-
errmsg | error message (if any) |
- Returns
- formatted output string (malloc'ed)
◆ headerFree()
Dereference a header instance.
- Parameters
-
- Returns
- NULL always
◆ headerFreeIterator()
Destroy header tag iterator.
- Parameters
-
- Returns
- NULL always
◆ headerGet()
Retrieve tag value.
- Parameters
-
- Return values
-
- Parameters
-
flags | retrieval modifier flags |
- Returns
- 1 on success, 0 on failure
◆ headerGetAsString()
Return any non-array tag from header, converted to string
- Parameters
-
h | header |
tag | tag to retrieve |
- Returns
- string pointer (malloced) or NULL on failure
◆ headerGetInstance()
unsigned int headerGetInstance |
( |
Header |
h | ) |
|
Return header instance, ie is the header from rpmdb.
- Parameters
-
- Returns
- rpmdb record number or 0
◆ headerGetString()
Return a simple string tag from header
- Parameters
-
h | header |
tag | tag to retrieve |
- Returns
- string pointer (to header memory) or NULL on failure
◆ headerImport()
Import header to in-memory representation.
- Parameters
-
blob | on-disk header blob (i.e. with offsets) |
bsize | on-disk header blob size in bytes (0 if unknown) |
flags | flags to control operation |
- Returns
- header
◆ headerInitIterator()
Create header tag iterator.
- Parameters
-
- Returns
- header tag iterator
◆ headerIsEntry()
Check if tag is in header.
- Parameters
-
- Returns
- 1 on success, 0 on failure
◆ headerIsSource()
int headerIsSource |
( |
Header |
h | ) |
|
Check if header is a source or binary package header
- Parameters
-
- Returns
- 0 == binary, 1 == source
◆ headerLink()
Reference a header instance.
- Parameters
-
- Returns
- new header reference
◆ headerLoad()
Header headerLoad |
( |
void * |
uh | ) |
|
Convert header to in-memory representation.
- Deprecated:
- Use headerImport() instead
- Parameters
-
uh | on-disk header blob (i.e. with offsets) |
- Returns
- header
◆ headerMod()
Modify tag in header. If there are multiple entries with this tag, the first one gets replaced.
- Parameters
-
h | header |
td | tag data container |
- Returns
- 1 on success, 0 on failure
◆ headerNew()
Create new (empty) header instance.
- Returns
- header
◆ headerNext()
Return next tag contents from header.
- Parameters
-
- Return values
-
- Returns
- 1 on success, 0 on failure
◆ headerNextTag()
Return next tag number from header.
- Parameters
-
- Returns
- next tag, RPMTAG_NOT_FOUND to stop iteration
◆ headerPut()
Add or append tag to header.
- Parameters
-
h | header |
td | tag data container |
flags | flags to control operation |
- Returns
- 1 on success, 0 on failure
◆ headerPutBin()
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.
- Todo:
- Make doxygen group these meaningfully.
- Parameters
-
h | header |
tag | tag to insert |
val | pointer to value(s) |
size | number of items in array (1 or larger) |
- Returns
- 1 on success, 0 on failure
◆ headerPutChar()
◆ headerPutString()
◆ headerPutStringArray()
◆ headerPutUint16()
◆ headerPutUint32()
◆ headerPutUint64()
◆ headerPutUint8()
◆ headerRead()
Read (and load) header from file handle.
- Parameters
-
fd | file handle |
magicp | read (and verify) 8 bytes of (magic, 0)? |
- Returns
- header (or NULL on error)
◆ headerReload()
Convert header to on-disk representation, and then reload. This is used to insure that all header data is in one chunk.
- Parameters
-
h | header (with pointers) |
tag | region tag |
- Returns
- on-disk header (with offsets)
◆ headerSizeof()
unsigned int headerSizeof |
( |
Header |
h, |
|
|
int |
magicp |
|
) |
| |
Return size of on-disk header representation in bytes.
- Parameters
-
h | header |
magicp | include size of 8 bytes for (magic, 0)? |
- Returns
- size of on-disk header
◆ headerUnload()
void* headerUnload |
( |
Header |
h | ) |
|
Convert header to on-disk representation.
- Deprecated:
- Use headerExport() instead
- Parameters
-
- Returns
- on-disk header blob (i.e. with offsets)
◆ headerWrite()
Write (with unload) header to file handle.
- Parameters
-
fd | file handle |
h | header |
magicp | prefix write with 8 bytes of (magic, 0)? |
- Returns
- 0 on success, 1 on error
◆ rpmReadHeader()
Return checked and loaded header.
- Parameters
-
- Return values
-
hdrp | address of header (or NULL) |
*msg | verification error message (or NULL) |
- Returns
- RPMRC_OK on success
◆ rpmReadPackageFile()
Return package header from file handle, verifying digests/signatures.
- Parameters
-
ts | transaction set |
fd | file handle |
fn | file name |
- Return values
-
hdrp | address of header (or NULL) |
- Returns
- RPMRC_OK on success
◆ rpm_header_magic
const unsigned char rpm_header_magic[8] |