|
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().
1.8.1.2