#include "system.h"
#include <rpmio.h>
#include <header_internal.h>
#include "debug.h"
Go to the source code of this file.
Data Structures | |
struct | headerIterator_s |
Header tag iterator data structure. More... | |
Defines | |
#define | _RPMTAG_INTERNAL |
Functions | |
void * | headerGetStats (Header h, int opx) |
Return header stats accumulator structure. | |
Header | headerLink (Header h) |
Reference a header instance. | |
Header | headerUnlink (Header h) |
Dereference a header instance. | |
Header | headerFree (Header h) |
Dereference a header instance. | |
Header | headerNew (void) |
Create new (empty) header instance. | |
static int | indexCmp (const void *avp, const void *bvp) |
static void | headerSort (Header h) |
Sort tags in header. | |
static int | offsetCmp (const void *avp, const void *bvp) |
static void | headerUnsort (Header h) |
Restore tags in header to original ordering. | |
size_t | headerSizeof (Header h) |
Return size of on-disk header representation in bytes. | |
static size_t | dataLength (rpmTagType type, rpmTagData *p, rpmTagCount count, int onDisk, rpmTagData *pend) |
Return length of entry data. | |
static uint32_t | regionSwab (indexEntry entry, uint32_t il, uint32_t dl, entryInfo pe, unsigned char *dataStart, const unsigned char *dataEnd, int32_t regionid) |
Swap uint32_t and uint16_t arrays within header region. | |
void * | headerUnload (Header h, size_t *lenp) |
static indexEntry | findEntry (Header h, rpmTag tag, rpmTagType type) |
Find matching (tag,type) entry in header. | |
static int | headerRemoveEntry (Header h, rpmTag tag) |
Delete tag in header. | |
Header | headerLoad (void *uh) |
Convert header to in-memory representation. | |
int | headerGetMagic (Header h, unsigned char **magicp, size_t *nmagicp) |
Return header magic. | |
int | headerSetMagic (Header h, unsigned char *magic, size_t nmagic) |
Store header magic. | |
const char * | headerGetOrigin (Header h) |
Return header origin (e.g path or URL). | |
int | headerSetOrigin (Header h, const char *origin) |
Store header origin (e.g path or URL). | |
uint32_t | headerGetInstance (Header h) |
Return header instance (if from rpmdb). | |
uint32_t | headerSetInstance (Header h, uint32_t instance) |
Store header instance (e.g path or URL). | |
Header | headerReload (Header h, int tag) |
Convert header to on-disk representation, and then reload. | |
Header | headerCopyLoad (const void *uh) |
Make a copy and convert header to in-memory representation. | |
int | headerIsEntry (Header h, rpmTag tag) |
Check if tag is in header. | |
static int | copyEntry (const indexEntry entry, HE_t he, int minMem) |
Retrieve data from header entry. | |
static int | headerMatchLocale (const char *td, const char *l, const char *le) |
Does locale match entry in header i18n table? | |
static char * | headerFindI18NString (Header h, indexEntry entry) |
Return i18n string from header that matches locale. | |
static int | intGetEntry (Header h, HE_t he, int flags) |
Retrieve tag data from header. | |
static void | copyData (rpmTagType type, rpmTagData *dest, rpmTagData *src, rpmTagCount cnt, size_t len) |
static void * | grabData (rpmTagType type, rpmTagData *p, rpmTagCount c, size_t *lenp) |
Return (malloc'ed) copy of entry data. | |
static int | headerAddEntry (Header h, HE_t he) |
Add tag to header. | |
static int | headerAppendEntry (Header h, HE_t he) |
Append element to tag array in header. | |
static int | headerAddOrAppendEntry (Header h, HE_t he) |
Add or append element to tag array in header. | |
int | headerAddI18NString (Header h, rpmTag tag, const char *string, const char *lang) |
Add locale specific tag to header. | |
static int | headerModifyEntry (Header h, HE_t he) |
Modify tag in header. | |
static int | rpmheRealloc (HE_t he) |
Always realloc HE_t memory. | |
HeaderIterator | headerFini (HeaderIterator hi) |
Destroy header tag container iterator. | |
HeaderIterator | headerInit (Header h) |
Create header tag iterator. | |
int | headerNext (HeaderIterator hi, HE_t he, unsigned int flags) |
Return next tag from header. | |
Header | headerCopy (Header h) |
Duplicate a header. | |
void | headerCopyTags (Header headerFrom, Header headerTo, rpmTag *tagstocopy) |
Duplicate tag values from one header into another. | |
int | headerGet (Header h, HE_t he, unsigned int flags) |
Retrieve extension or tag value from a header. | |
int | headerPut (Header h, HE_t he, unsigned int flags) |
Add or append tag container to header. | |
int | headerDel (Header h, HE_t he, unsigned int flags) |
Remove tag container from header. | |
int | headerMod (Header h, HE_t he, unsigned int flags) |
Modify tag container in header. | |
Variables | |
int | _hdr_debug = 0 |
static unsigned char | header_magic [8] |
static int | typeSizes [16] |
Size of header data types. | |
static size_t | headerMaxbytes = (1024*1024*1024) |
Maximum no. | |
int | _hdr_stats = 0 |
Global header stats enabler. | |
static struct rpmop_s | hdr_loadops |
rpmop | _hdr_loadops = &hdr_loadops |
static struct rpmop_s | hdr_getops |
rpmop | _hdr_getops = &hdr_getops |
Definition in file header.c.
static void copyData | ( | rpmTagType | type, |
rpmTagData * | dest, | ||
rpmTagData * | src, | ||
rpmTagCount | cnt, | ||
size_t | len | ||
) | [static] |
Definition at line 1480 of file header.c.
References RPM_I18NSTRING_TYPE, and RPM_STRING_ARRAY_TYPE.
Referenced by grabData(), and headerAppendEntry().
static size_t dataLength | ( | rpmTagType | type, |
rpmTagData * | p, | ||
rpmTagCount | count, | ||
int | onDisk, | ||
rpmTagData * | pend | ||
) | [static] |
Return length of entry data.
type | entry data type |
*p | tag container data |
count | entry item count |
onDisk | data is concatenated strings (with NUL's))? |
*pend | pointer to end of tag container data (or NULL) |
Definition at line 307 of file header.c.
References RPM_I18NSTRING_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, typeSizes, and rpmDataType_u::ui8p.
Referenced by grabData(), headerAppendEntry(), and regionSwab().
static indexEntry findEntry | ( | Header | h, |
rpmTag | tag, | ||
rpmTagType | type | ||
) | [static] |
Find matching (tag,type) entry in header.
h | header |
tag | entry tag |
type | entry type |
< Are header entries sorted?
Definition at line 818 of file header.c.
References headerToken_s::flags, HEADERFLAG_SORTED, headerSort(), headerToken_s::index, indexCmp(), headerToken_s::indexUsed, indexEntry_s::info, entryInfo_s::tag, and entryInfo_s::type.
Referenced by headerAddI18NString(), headerAddOrAppendEntry(), headerAppendEntry(), headerFindI18NString(), headerIsEntry(), headerModifyEntry(), headerRemoveEntry(), and intGetEntry().
static void* grabData | ( | rpmTagType | type, |
rpmTagData * | p, | ||
rpmTagCount | c, | ||
size_t * | lenp | ||
) | [static] |
Return (malloc'ed) copy of entry data.
type | entry data type |
*p | tag container data |
c | entry item count |
*lenp | no. bytes in returned data |
Definition at line 1515 of file header.c.
References copyData(), dataLength(), rpmDataType_u::ptr, and xmalloc().
Referenced by headerAddEntry(), and headerModifyEntry().
static char* headerFindI18NString | ( | Header | h, |
indexEntry | entry | ||
) | [static] |
Return i18n string from header that matches locale.
h | header |
entry | i18n string data |
Definition at line 1388 of file header.c.
References indexEntry_s::data, findEntry(), getenv(), HEADER_I18NTABLE, headerMatchLocale(), lang, and RPM_STRING_ARRAY_TYPE.
Referenced by intGetEntry().
static int headerMatchLocale | ( | const char * | td, |
const char * | l, | ||
const char * | le | ||
) | [static] |
Does locale match entry in header i18n table?
* The range [l,le) contains the next locale to match: * ll[_CC][.EEEEE][@dddd] * where * ll ISO language code (in lowercase). * CC (optional) ISO coutnry code (in uppercase). * EEEEE (optional) encoding (not really standardized). * dddd (optional) dialect. *
td | header i18n table data, NUL terminated |
l | start of locale to match |
le | end of locale to match |
Definition at line 1315 of file header.c.
References alloca().
Referenced by headerFindI18NString().
static int indexCmp | ( | const void * | avp, |
const void * | bvp | ||
) | [static] |
Definition at line 190 of file header.c.
References indexEntry_s::info, and entryInfo_s::tag.
Referenced by findEntry(), and headerSort().
Retrieve tag data from header.
h | header |
he | tag container |
flags | headerGet flags |
Definition at line 1439 of file header.c.
References _HE_s::c, copyEntry(), findEntry(), headerFindI18NString(), HEADERGET_NOI18NSTRING, indexEntry_s::info, _HE_s::p, rpmDataType_u::ptr, RPM_I18NSTRING_TYPE, RPM_STRING_TYPE, rpmDataType_u::str, _HE_s::t, _HE_s::tag, and entryInfo_s::type.
Referenced by headerGet().
static int offsetCmp | ( | const void * | avp, |
const void * | bvp | ||
) | [static] |
Definition at line 215 of file header.c.
References indexEntry_s::data, indexEntry_s::info, entryInfo_s::offset, and entryInfo_s::tag.
Referenced by headerUnsort().
static int rpmheRealloc | ( | HE_t | he ) | [static] |
Always realloc HE_t memory.
he | tag container |
Definition at line 1854 of file header.c.
References _HE_s::c, _HE_s::freeData, _HE_s::p, rpmDataType_u::ptr, RPM_BIN_TYPE, RPM_I18NSTRING_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, RPM_UINT16_TYPE, RPM_UINT32_TYPE, RPM_UINT64_TYPE, RPM_UINT8_TYPE, rpmDataType_u::str, _HE_s::t, rpmDataType_u::ui16p, rpmDataType_u::ui32p, rpmDataType_u::ui64p, rpmDataType_u::ui8p, and xmalloc().
Referenced by headerGet(), and headerNext().
int _hdr_debug = 0 |
Definition at line 20 of file header.c.
Referenced by escapedChar(), headerLink(), headerSprintf(), headerUnlink(), parseExpression(), and parseFormat().
Definition at line 82 of file header.c.
Referenced by rpmtsPrintStats().
Definition at line 78 of file header.c.
Referenced by rpmtsPrintStats().
int _hdr_stats = 0 |
Global header stats enabler.
Definition at line 72 of file header.c.
Referenced by headerFree(), headerGetStats(), and rpmcliInit().
struct rpmop_s hdr_getops [static] |
struct rpmop_s hdr_loadops [static] |