rpm
5.4.10
|
#include "system.h"
#include <rpmiotypes.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... |
Macros | |
#define | _RPMTAG_INTERNAL |
Functions | |
void * | headerGetStats (Header h, int opx) |
Return header stats accumulator structure. | |
static void | headerScrub (void *_h) |
static Header | headerGetPool (rpmioPool pool) |
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 unsigned char * | tagSwab (unsigned char *t, const HE_t he, size_t nb) |
Swab rpmuint64_t/rpmuint32_t/rpmuint16_t arrays within header region. | |
static int | rpmheRealloc (HE_t he) |
Always realloc HE_t memory. | |
static rpmuint32_t | regionSwab (indexEntry entry, rpmuint32_t il, rpmuint32_t dl, entryInfo pe, unsigned char *dataStart, const unsigned char *dataEnd, rpmint32_t regionid) |
Swab rpmuint64_t/rpmuint32_t/rpmuint16_t arrays within header region. | |
void * | headerUnload (Header h, size_t *lenp) |
headerUnload. | |
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). | |
const char * | headerGetParent (Header h) |
Return header parent identifier (e.g parent's NVRA). | |
int | headerSetParent (Header h, const char *parent) |
Store header parent (e.g parent's NVRA). | |
const char * | headerGetBaseURL (Header h) |
Return header base URL (e.g path or URL). | |
int | headerSetBaseURL (Header h, const char *baseurl) |
Store header base URL (e.g path or URL). | |
struct stat * | headerGetStatbuf (Header h) |
Return header stat(2) buffer (of origin *.rpm file). | |
int | headerSetStatbuf (Header h, struct stat *st) |
Copy into header stat(2) buffer (of origin *.rpm file). | |
const char * | headerGetDigest (Header h) |
Return digest of origin *.rpm file. | |
int | headerSetDigest (Header h, const char *digest) |
Store digest of origin *.rpm file. | |
void * | headerGetRpmdb (Header h) |
Return rpmdb pointer. | |
void * | headerSetRpmdb (Header h, void *rpmdb) |
Store rpmdb pointer. | |
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). | |
rpmuint32_t | headerGetStartOff (Header h) |
Return header starting byte offset. | |
rpmuint32_t | headerSetStartOff (Header h, rpmuint32_t startoff) |
Store header starting byte offset. | |
rpmuint32_t | headerGetEndOff (Header h) |
Return header ending byte offset. | |
rpmuint32_t | headerSetEndOff (Header h, rpmuint32_t endoff) |
Store header ending byte offset. | |
Header | headerReload (Header h, rpmTag tag) |
Convert header to on-disk representation, and then reload. | |
static Header | headerMap (const void *uh, int map) |
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 | intGetEntry (Header h, HE_t he, int flags) |
Retrieve tag data from header. | |
static int | copyData (char *t, const HE_t he, size_t nb) |
Copy (swab'd) data into store. | |
static void * | grabData (HE_t he, size_t *lenp) |
Return (malloc'ed) copy of (swab'd) 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. | |
static int | headerModifyEntry (Header h, HE_t he) |
Modify tag in header. | |
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 |
rpmioPool | _headerPool |
Definition in file header.c.
|
static |
Copy (swab'd) data into store.
t | data store |
he | tag container |
nb | no. bytes in store |
Definition at line 1737 of file header.c.
References rpmDataType_u::argv, _HE_s::c, _HE_s::p, RPM_I18NSTRING_TYPE, RPM_STRING_ARRAY_TYPE, _HE_s::t, and tagSwab().
Referenced by grabData(), and headerAppendEntry().
|
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 330 of file header.c.
References RPM_I18NSTRING_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, and rpmDataType_u::ui8p.
Referenced by grabData(), headerAppendEntry(), and regionSwab().
|
static |
Find matching (tag,type) entry in header.
h | header |
tag | entry tag |
type | entry type |
< Are header entries sorted?
Definition at line 884 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 headerAddOrAppendEntry(), headerAppendEntry(), headerIsEntry(), headerModifyEntry(), headerRemoveEntry(), and intGetEntry().
|
static |
Return (malloc'ed) copy of (swab'd) entry data.
he | tag container |
*lenp | no. bytes in returned data |
Definition at line 1774 of file header.c.
References _free(), _HE_s::c, copyData(), dataLength(), _HE_s::p, _HE_s::t, and xmalloc.
Referenced by headerAddEntry(), and headerModifyEntry().
Definition at line 163 of file header.c.
References _headerPool, headerToken_s::_item, ANNOTATE_BENIGN_RACE, headerScrub(), rpmioGetPool(), and rpmioNewPool().
Referenced by headerLoad(), and headerNew().
|
static |
< Is 1st header region mmap'd?
< Is 1st header region rdonly?
< Is 1st header region allocated?
Definition at line 1371 of file header.c.
References _free(), headerToken_s::bloblen, errno, headerToken_s::flags, hdrchkData, hdrchkTags, HEADERFLAG_ALLOCATED, HEADERFLAG_MAPPED, HEADERFLAG_RDONLY, headerLoad(), headerMaxbytes, and xmalloc.
Referenced by headerCopyLoad().
|
static |
< Is 1st header region allocated?
< Is 1st header region mmap'd?
< Is 1st header region mmap'd?
Definition at line 109 of file header.c.
References _free(), headerToken_s::baseurl, headerToken_s::blob, headerToken_s::bloblen, indexEntry_s::data, headerToken_s::digest, ENTRY_IN_REGION, ENTRY_IS_REGION, errno, headerToken_s::flags, HEADERFLAG_ALLOCATED, HEADERFLAG_MAPPED, headerGetStats(), headerToken_s::index, headerToken_s::indexUsed, indexEntry_s::length, headerToken_s::origin, headerToken_s::parent, and rpmswAdd().
Referenced by headerGetPool().
|
static |
Definition at line 213 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 1689 of file header.c.
References _HE_s::c, copyEntry(), findEntry(), 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 |
Definition at line 238 of file header.c.
References indexEntry_s::data, indexEntry_s::info, entryInfo_s::offset, and entryInfo_s::tag.
Referenced by headerUnsort().
|
static |
Always realloc HE_t memory.
he | tag container |
Definition at line 438 of file header.c.
References _free(), _HE_s::c, DRD_xmalloc, _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, tagSwab(), rpmDataType_u::ui16p, rpmDataType_u::ui32p, rpmDataType_u::ui64p, and rpmDataType_u::ui8p.
Referenced by headerGet(), and headerNext().
rpmop _hdr_getops = &hdr_getops |
Definition at line 94 of file header.c.
Referenced by rpmtsPrintStats().
rpmop _hdr_loadops = &hdr_loadops |
Definition at line 90 of file header.c.
Referenced by rpmtsPrintStats().
rpmioPool _headerPool |
Definition at line 161 of file header.c.
Referenced by headerGetPool(), and rpmcliFini().