rpm
5.4.15
|
#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. More... | |
static void | headerScrub (void *_h) |
static Header | headerGetPool (rpmioPool pool) |
Header | headerNew (void) |
Create new (empty) header instance. More... | |
static int | indexCmp (const void *avp, const void *bvp) |
static void | headerSort (Header h) |
Sort tags in header. More... | |
static int | offsetCmp (const void *avp, const void *bvp) |
static void | headerUnsort (Header h) |
Restore tags in header to original ordering. More... | |
size_t | headerSizeof (Header h) |
Return size of on-disk header representation in bytes. More... | |
static size_t | dataLength (rpmTagType type, rpmTagData *p, rpmTagCount count, int onDisk, rpmTagData *pend) |
Return length of entry data. More... | |
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. More... | |
static int | rpmheRealloc (HE_t he) |
Always realloc HE_t memory. More... | |
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. More... | |
void * | headerUnload (Header h, size_t *lenp) |
headerUnload. More... | |
static indexEntry | findEntry (Header h, rpmTag tag, rpmTagType type) |
Find matching (tag,type) entry in header. More... | |
static int | headerRemoveEntry (Header h, rpmTag tag) |
Delete tag in header. More... | |
Header | headerLoad (void *uh) |
Convert header to in-memory representation. More... | |
int | headerGetMagic (Header h, unsigned char **magicp, size_t *nmagicp) |
Return header magic. More... | |
int | headerSetMagic (Header h, unsigned char *magic, size_t nmagic) |
Store header magic. More... | |
const char * | headerGetOrigin (Header h) |
Return header origin (e.g path or URL). More... | |
int | headerSetOrigin (Header h, const char *origin) |
Store header origin (e.g path or URL). More... | |
const char * | headerGetParent (Header h) |
Return header parent identifier (e.g parent's NVRA). More... | |
int | headerSetParent (Header h, const char *parent) |
Store header parent (e.g parent's NVRA). More... | |
const char * | headerGetBaseURL (Header h) |
Return header base URL (e.g path or URL). More... | |
int | headerSetBaseURL (Header h, const char *baseurl) |
Store header base URL (e.g path or URL). More... | |
struct stat * | headerGetStatbuf (Header h) |
Return header stat(2) buffer (of origin *.rpm file). More... | |
int | headerSetStatbuf (Header h, struct stat *st) |
Copy into header stat(2) buffer (of origin *.rpm file). More... | |
const char * | headerGetDigest (Header h) |
Return digest of origin *.rpm file. More... | |
int | headerSetDigest (Header h, const char *digest) |
Store digest of origin *.rpm file. More... | |
void * | headerGetRpmdb (Header h) |
Return rpmdb pointer. More... | |
void * | headerSetRpmdb (Header h, void *rpmdb) |
Store rpmdb pointer. More... | |
uint32_t | headerGetInstance (Header h) |
Return header instance (if from rpmdb). More... | |
uint32_t | headerSetInstance (Header h, uint32_t instance) |
Store header instance (e.g path or URL). More... | |
rpmuint32_t | headerGetStartOff (Header h) |
Return header starting byte offset. More... | |
rpmuint32_t | headerSetStartOff (Header h, rpmuint32_t startoff) |
Store header starting byte offset. More... | |
rpmuint32_t | headerGetEndOff (Header h) |
Return header ending byte offset. More... | |
rpmuint32_t | headerSetEndOff (Header h, rpmuint32_t endoff) |
Store header ending byte offset. More... | |
Header | headerReload (Header h, rpmTag tag) |
Convert header to on-disk representation, and then reload. More... | |
static Header | headerMap (const void *uh, int map) |
Header | headerCopyLoad (const void *uh) |
Make a copy and convert header to in-memory representation. More... | |
int | headerIsEntry (Header h, rpmTag tag) |
Check if tag is in header. More... | |
static int | copyEntry (const indexEntry entry, HE_t he, int minMem) |
Retrieve data from header entry. More... | |
static int | intGetEntry (Header h, HE_t he, int flags) |
Retrieve tag data from header. More... | |
static int | copyData (char *t, const HE_t he, size_t nb) |
Copy (swab'd) data into store. More... | |
static void * | grabData (HE_t he, size_t *lenp) |
Return (malloc'ed) copy of (swab'd) entry data. More... | |
static int | headerAddEntry (Header h, HE_t he) |
Add tag to header. More... | |
static int | headerAppendEntry (Header h, HE_t he) |
Append element to tag array in header. More... | |
static int | headerAddOrAppendEntry (Header h, HE_t he) |
Add or append element to tag array in header. More... | |
static int | headerModifyEntry (Header h, HE_t he) |
Modify tag in header. More... | |
HeaderIterator | headerFini (HeaderIterator hi) |
Destroy header tag container iterator. More... | |
HeaderIterator | headerInit (Header h) |
Create header tag iterator. More... | |
int | headerNext (HeaderIterator hi, HE_t he, unsigned int flags) |
Return next tag from header. More... | |
Header | headerCopy (Header h) |
Duplicate a header. More... | |
void | headerCopyTags (Header headerFrom, Header headerTo, rpmTag *tagstocopy) |
Duplicate tag values from one header into another. More... | |
int | headerGet (Header h, HE_t he, unsigned int flags) |
Retrieve extension or tag value from a header. More... | |
int | headerPut (Header h, HE_t he, unsigned int flags) |
Add or append tag container to header. More... | |
int | headerDel (Header h, HE_t he, unsigned int flags) |
Remove tag container from header. More... | |
int | headerMod (Header h, HE_t he, unsigned int flags) |
Modify tag container in header. More... | |
Variables | |
int | _hdr_debug = 0 |
static unsigned char | header_magic [8] |
static int | typeSizes [16] |
Size of header data types. More... | |
static size_t | headerMaxbytes = (1024*1024*1024) |
Maximum no. More... | |
int | _hdr_stats = 0 |
Global header stats enabler. More... | |
static struct rpmop_s | hdr_loadops |
rpmop | _hdr_loadops = &hdr_loadops |
static struct rpmop_s | hdr_getops |
rpmop | _hdr_getops = &hdr_getops |
rpmioPool | _headerPool |
|
static |
Copy (swab'd) data into store.
t | data store |
he | tag container |
nb | no. bytes in store |
Definition at line 1746 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 |
Retrieve data from header entry.
entry | header entry |
*he | tag container |
minMem | string pointers refer to header memory? |
Definition at line 1454 of file header.c.
References rpmDataType_u::argv, _HE_s::c, entryInfo_s::count, indexEntry_s::data, DRD_xmalloc, ENTRY_IS_REGION, HEADER_IMAGE, i, indexEntry_s::info, indexEntry_s::length, entryInfo_s::offset, _HE_s::p, rpmDataType_u::ptr, indexEntry_s::rdlen, REGION_TAG_COUNT, RPM_BIN_TYPE, RPM_I18NSTRING_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, rpmDataType_u::str, _HE_s::t, entryInfo_s::tag, entryInfo_s::type, and rpmDataType_u::ui32p.
Referenced by headerNext(), and intGetEntry().
|
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 1783 of file header.c.
References _free(), _HE_s::c, copyData(), dataLength(), _HE_s::p, _HE_s::t, and xmalloc.
Referenced by headerAddEntry(), and headerModifyEntry().
Add tag to header.
Duplicate tags are okay, but only defined for iteration (with the exceptions noted below). While you are allowed to add i18n string arrays through this function, you probably don't mean to. See headerAddI18NString() instead.
h | header |
he | tag container |
< Are header entries sorted?
Definition at line 1813 of file header.c.
References _HE_s::c, entryInfo_s::count, indexEntry_s::data, data, headerToken_s::flags, grabData(), hdrchkData, hdrchkType, HEADERFLAG_SORTED, headerToken_s::index, INDEX_MALLOC_SIZE, headerToken_s::indexAlloced, headerToken_s::indexUsed, indexEntry_s::info, indexEntry_s::length, entryInfo_s::offset, rpmDataType_u::ptr, _HE_s::t, entryInfo_s::tag, _HE_s::tag, entryInfo_s::type, and xrealloc.
Referenced by headerAddOrAppendEntry(), headerCopy(), and headerPut().
Add or append element to tag array in header.
h | header |
he | tag container |
Definition at line 1923 of file header.c.
References findEntry(), headerAddEntry(), headerAppendEntry(), _HE_s::t, and _HE_s::tag.
Referenced by headerPut().
Append element to tag array in header.
Appends item p to entry w/ tag and type as passed. Won't work on RPM_STRING_TYPE.
h | header |
he | tag container |
Definition at line 1867 of file header.c.
References _HE_s::c, copyData(), entryInfo_s::count, indexEntry_s::data, dataLength(), ENTRY_IN_REGION, findEntry(), indexEntry_s::info, indexEntry_s::length, entryInfo_s::offset, _HE_s::p, rpmDataType_u::ptr, RPM_I18NSTRING_TYPE, RPM_STRING_TYPE, SUPPORT_I18NSTRING_TYPE, _HE_s::t, _HE_s::tag, xmalloc, and xrealloc.
Referenced by headerAddOrAppendEntry().
Duplicate a header.
h | header |
Definition at line 2194 of file header.c.
References _free(), alloca(), HEADER_IMAGE, headerAddEntry(), headerFini(), headerInit(), headerNew(), headerNext(), headerReload(), _HE_s::p, and rpmDataType_u::ptr.
Referenced by hdrUnload().
Header headerCopyLoad | ( | const void * | uh | ) |
Make a copy and convert header to in-memory representation.
uh | on-disk header blob (i.e. with offsets) |
Definition at line 1433 of file header.c.
References headerMap().
Referenced by rpmmiNext(), rpmpsmStage(), and rpmReSign().
Duplicate tag values from one header into another.
headerFrom | source header |
headerTo | destination header |
tagstocopy | array of tags that are copied |
Definition at line 2211 of file header.c.
References _free(), alloca(), headerGet(), HEADERGET_NOEXTENSION, headerIsEntry(), headerPut(), _HE_s::p, rpmDataType_u::ptr, and _HE_s::tag.
Referenced by packageBinaries(), and parsePreamble().
Remove tag container from header.
h | header |
he | tag container |
flags | (unused) |
Definition at line 2313 of file header.c.
References headerRemoveEntry(), and _HE_s::tag.
Referenced by addFileToTag(), compressFilelist(), parseDescription(), rpmfcGenerateDepends(), and rpmReSign().
HeaderIterator headerFini | ( | HeaderIterator | hi | ) |
Destroy header tag container iterator.
hi | header tag container iterator |
Definition at line 2134 of file header.c.
References _free(), headerIterator_s::h, and headerFree().
Referenced by checkForDuplicates(), hdrKeyList(), headerCopy(), headerMergeLegacySigs(), headerRegenSigHeader(), hsaFini(), initSourceHeader(), rpmpsmStage(), rpmReSign(), and rpmVerifySignatures().
Retrieve extension or tag value from a header.
h | header |
he | tag container |
flags | tag retrieval flags |
Definition at line 2231 of file header.c.
References _HE_s::c, _HE_s::freeData, headerCompoundFormats, HEADERGET_NOEXTENSION, headerGetStats(), intGetEntry(), name, _HE_s::p, rpmDataType_u::ptr, rpmheRealloc(), rpmswEnter(), rpmswExit(), _HE_s::t, _HE_s::tag, tagName(), and xstrcasecmp().
Referenced by addFileToTag(), addReqProv(), addTE(), checkPackageSet(), compressFilelist(), db3Acallback(), debevrTag(), debmd5sumsTag(), ensureOlder(), FDGsqlTag(), FDGxmlTag(), FDGyamlTag(), fiIntersect(), findErases(), formatValue(), fssizesTag(), ftsCacheUpdate(), getSignid(), handleInstInstalledFile(), handleOneTrigger(), handlePreambleTag(), hBlobDigest(), hCopyTag(), hdr_subscript(), hdrColumn(), headerCopyTags(), headerMacrosLoad(), headerMacrosUnload(), headerNEVRA(), hGetColor(), hLoadTID(), i18nTag(), IDTXglob(), IDTXload(), instprefixTag(), isMemberInEntry(), localeTag(), lookupPackage(), main(), makeHDRSignature(), mireSkip(), needswhatTag(), nwlookupTag(), packageBinaries(), parseDescription(), parsePreamble(), parseSpec(), pkgbaseurlTag(), pkgoriginTag(), pkgUnpackagedSubdirs(), PRCOsqlTag(), PRCOxmlTag(), PRCOyamlTag(), printNewSpecfile(), processBinaryFiles(), processPackageFiles(), providePackageNVR(), rdSignature(), readFile(), relocateFileList(), removeSillyDeps(), rpmcliInstall(), rpmdbAdd(), rpmdbExportHR_MIB(), rpmdbRemove(), rpmdsNew(), rpmdsNVRMatchesDep(), rpmdsThis(), rpmfcGenerateScriptletDeps(), rpmfiBuildFNames(), rpmfiNew(), rpmhdrLoadTag(), rpmHeadersIdentical(), rpmInstallSourcePackage(), rpmmiInit(), rpmpsmStage(), rpmReadPackageFile(), rpmReSign(), rpmteChain(), rpmteNew(), rpmtsAddInstallElement(), rpmtsAddUpgrades(), rpmtsCallback(), rpmtsCheckInstalledFiles(), rpmtsEraseDebuginfo(), rpmtsFindPubkey(), rpmtsSanityCheck(), rpmtsSolve(), rpmVerifySignatures(), rpmVersionCompare(), runImmedTriggers(), runInstScript(), runScript(), singleSprintf(), stashSt(), tag2uuidv1(), tag2uuidv5(), timeCheck(), triggercondsTag(), triggertypeTag(), whatneedsTag(), wnlookupTag(), and writeRPM().
const char* headerGetBaseURL | ( | Header | h | ) |
Return header base URL (e.g path or URL).
h | header |
Definition at line 1212 of file header.c.
References headerToken_s::baseurl.
Referenced by pkgbaseurlTag().
const char* headerGetDigest | ( | Header | h | ) |
Return digest of origin *.rpm file.
h | header |
Definition at line 1242 of file header.c.
References headerToken_s::digest.
Referenced by pkgdigestTag(), and populateInstallHeader().
rpmuint32_t headerGetEndOff | ( | Header | h | ) |
Return header ending byte offset.
h | header |
Definition at line 1302 of file header.c.
References headerToken_s::endoff.
Referenced by headerendoffTag().
uint32_t headerGetInstance | ( | Header | h | ) |
Return header instance (if from rpmdb).
h | header |
Definition at line 1275 of file header.c.
References headerToken_s::instance.
Referenced by dbinstanceTag(), FDGsqlTag(), handleInstInstalledFile(), headerReload(), PRCOsqlTag(), rpmdbAdd(), rpmgiNext(), rpmpsmStage(), and verifyDependencies().
int headerGetMagic | ( | Header | h, |
unsigned char ** | magicp, | ||
size_t * | nmagicp | ||
) |
Return header magic.
h | header |
*magicp | magic array |
*nmagicp | no. bytes of magic |
Definition at line 1162 of file header.c.
References header_magic, and headerToken_s::magic.
Referenced by hBlobDigest(), makeHDRSignature(), rdSignature(), readFile(), rpmcliImportPubkey(), rpmReadHeader(), and rpmWriteHeader().
const char* headerGetOrigin | ( | Header | h | ) |
Return header origin (e.g path or URL).
h | header |
Definition at line 1184 of file header.c.
References headerToken_s::origin.
Referenced by hdrGetOrigin(), IDTXglob(), pkgoriginTag(), populateInstallHeader(), rpmhdr_getorigin(), rpmhdr_setorigin(), showVerifyPackage(), and verifyDependencies().
const char* headerGetParent | ( | Header | h | ) |
Return header parent identifier (e.g parent's NVRA).
h | header |
Definition at line 1198 of file header.c.
References headerToken_s::parent.
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().
void* headerGetRpmdb | ( | Header | h | ) |
Return rpmdb pointer.
h | header |
Definition at line 1259 of file header.c.
References headerToken_s::rpmdb.
Referenced by nwlookupTag(), and wnlookupTag().
rpmuint32_t headerGetStartOff | ( | Header | h | ) |
Return header starting byte offset.
h | header |
Definition at line 1290 of file header.c.
References headerToken_s::startoff.
Referenced by headerstartoffTag().
struct stat* headerGetStatbuf | ( | Header | h | ) |
Return header stat(2) buffer (of origin *.rpm file).
h | header |
Definition at line 1228 of file header.c.
References headerToken_s::sb.
Referenced by pkgmtimeTag(), pkgsizeTag(), populateInstallHeader(), and rpmReadHeader().
void* headerGetStats | ( | Header | h, |
int | opx | ||
) |
Return header stats accumulator structure.
h | header |
opx | per-header accumulator index (aka rpmtsOpX) |
Definition at line 97 of file header.c.
References headerToken_s::h_getops, headerToken_s::h_loadops, and op.
Referenced by headerGet(), headerLoad(), headerNext(), headerScrub(), and headerUnload().
HeaderIterator headerInit | ( | Header | h | ) |
Create header tag iterator.
h | header |
Definition at line 2144 of file header.c.
References headerIterator_s::h, headerLink(), headerSort(), headerIterator_s::next_index, and xmalloc.
Referenced by checkForDuplicates(), hdrKeyList(), headerCopy(), headerMergeLegacySigs(), headerRegenSigHeader(), hsaInit(), initSourceHeader(), rpmpsmStage(), rpmReSign(), and rpmVerifySignatures().
Check if tag is in header.
h | header |
tag | tag |
Definition at line 1439 of file header.c.
References findEntry().
Referenced by addTE(), checkForRequired(), compressFilelist(), fillOutMainPackage(), hdrIsSource(), headerCopyTags(), headerMergeLegacySigs(), headerNEVRA(), headerRegenSigHeader(), IDTXglob(), initSourceHeader(), makeHDRSignature(), parseScript(), parseSpec(), readFile(), relocateFileList(), rpmdbAdd(), rpmfiBuildFNames(), rpmfiNew(), rpmInstallSourcePackage(), rpmpsmStage(), rpmReadPackageFile(), rpmtsAddInstallElement(), rpmVerifySignatures(), showVerifyPackage(), singleSprintf(), unsatisfiedDepend(), and writeRPM().
Header headerLoad | ( | void * | uh | ) |
Convert header to in-memory representation.
uh | on-disk header blob (i.e. with offsets) |
< Are header entries sorted?
< Header came from legacy source?
< Header came from legacy source?
< Are header entries sorted?
Definition at line 970 of file header.c.
References _free(), headerToken_s::_item, alloca(), headerToken_s::baseurl, headerToken_s::blob, headerToken_s::bloblen, entryInfo_s::count, indexEntry_s::data, headerToken_s::digest, DRD_xcalloc, headerToken_s::endoff, ENTRY_IS_REGION, headerToken_s::flags, headerToken_s::h_getops, headerToken_s::h_loadops, hdrchkData, hdrchkTags, HEADER_BASENAMES, HEADER_I18NTABLE, HEADER_IMAGE, header_magic, HEADER_OLDFILENAMES, HEADERFLAG_LEGACY, HEADERFLAG_SORTED, headerGetPool(), headerGetStats(), headerLink(), headerRemoveEntry(), headerSort(), i, headerToken_s::index, headerToken_s::indexAlloced, headerToken_s::indexUsed, indexEntry_s::info, headerToken_s::instance, j, indexEntry_s::length, headerToken_s::magic, entryInfo_s::offset, headerToken_s::origin, headerToken_s::parent, indexEntry_s::rdlen, REGION_TAG_COUNT, REGION_TAG_TYPE, regionSwab(), headerToken_s::rpmdb, rpmioPutPool(), rpmswEnter(), rpmswExit(), headerToken_s::sb, headerToken_s::startoff, entryInfo_s::tag, entryInfo_s::type, rpmioItem_s::use, and yarnPossess().
Referenced by ckHeader(), db3Acallback(), hdrLoad(), headerMap(), headerReload(), rdSignature(), rpmmiInit(), rpmmiNext(), and rpmReadHeader().
|
static |
< Is 1st header region mmap'd?
< Is 1st header region rdonly?
< Is 1st header region allocated?
Definition at line 1378 of file header.c.
References _free(), headerToken_s::bloblen, errno, headerToken_s::flags, flags, hdrchkData, hdrchkTags, HEADERFLAG_ALLOCATED, HEADERFLAG_MAPPED, HEADERFLAG_RDONLY, headerLoad(), headerMaxbytes, and xmalloc.
Referenced by headerCopyLoad().
Modify tag container in header.
If there are multiple entries with this tag, the first one gets replaced.
h | header |
he | tag container |
flags | (unused) |
Definition at line 2319 of file header.c.
References headerModifyEntry().
Referenced by addReqProv(), relocateFileList(), and removeSillyDeps().
Modify tag in header.
If there are multiple entries with this tag, the first one gets replaced.
h | header |
he | tag container |
Definition at line 2088 of file header.c.
References _free(), _HE_s::c, entryInfo_s::count, indexEntry_s::data, ENTRY_IN_REGION, findEntry(), grabData(), headerToken_s::index, indexEntry_s::info, indexEntry_s::length, entryInfo_s::offset, rpmDataType_u::ptr, _HE_s::t, entryInfo_s::tag, _HE_s::tag, and entryInfo_s::type.
Referenced by headerMod().
Header headerNew | ( | void | ) |
Create new (empty) header instance.
< Are header entries sorted?
Definition at line 180 of file header.c.
References headerToken_s::baseurl, headerToken_s::blob, headerToken_s::bloblen, headerToken_s::digest, headerToken_s::endoff, headerToken_s::flags, headerToken_s::h_getops, headerToken_s::h_loadops, HEADERFLAG_SORTED, headerGetPool(), headerLink(), headerToken_s::index, INDEX_MALLOC_SIZE, headerToken_s::indexAlloced, headerToken_s::indexUsed, headerToken_s::instance, headerToken_s::magic, headerToken_s::origin, headerToken_s::parent, headerToken_s::rpmdb, headerToken_s::sb, headerToken_s::startoff, and xcalloc().
Referenced by headerCopy(), headerRegenSigHeader(), newPackage(), newSpec(), rpmcliImportPubkey(), rpmhdr_new(), rpmpsmStage(), rpmReSign(), and writeRPM().
int headerNext | ( | HeaderIterator | hi, |
HE_t | he, | ||
unsigned int | flags | ||
) |
Return next tag from header.
hi | header tag iterator |
he | tag container |
flags | (unused) |
Definition at line 2158 of file header.c.
References copyEntry(), ENTRY_IS_REGION, headerIterator_s::h, headerGetStats(), headerToken_s::index, headerToken_s::indexUsed, indexEntry_s::info, headerIterator_s::next_index, rpmheRealloc(), rpmswEnter(), rpmswExit(), entryInfo_s::tag, and _HE_s::tag.
Referenced by checkForDuplicates(), hdrKeyList(), headerCopy(), headerMergeLegacySigs(), headerRegenSigHeader(), hsaNext(), initSourceHeader(), rpmpsmStage(), rpmReSign(), and rpmVerifySignatures().
Add or append tag container to header.
h | header |
he | tag container |
flags | (unused) |
Definition at line 2294 of file header.c.
References _HE_s::append, headerAddEntry(), and headerAddOrAppendEntry().
Referenced by addChangelogEntry(), addFileToArrayTag(), addFileToTag(), addOrAppendListEntry(), addReqProv(), compressFilelist(), doIcon(), fillOutMainPackage(), ftsCacheUpdate(), genCpioListAndHeader(), getDigestAlgo(), handlePreambleTag(), hCopyTag(), headerCopyTags(), headerMergeLegacySigs(), headerRegenSigHeader(), hSaveBlinks(), hSaveFlinks(), initSourceHeader(), initSourceHeaderScriptlet(), makeHDRSignature(), packageBinaries(), packageSources(), parseDescription(), parsePreamble(), parseScript(), parseSpec(), populateInstallHeader(), postPopulateInstallHeader(), processMetadataFile(), processScriptFiles(), providePackageNVR(), relocateFileList(), rpmAddSignature(), rpmcliImportPubkey(), rpmdbAdd(), rpmfcGenerateDepends(), rpmlibMarkers(), rpmpsmStage(), rpmReSign(), and writeRPM().
Convert header to on-disk representation, and then reload.
This is used to insure that all header data is in a single contiguous memory allocation.
h | header (with pointers) |
tag | region tag |
< Is 1st header region mmap'd?
< Is 1st header region rdonly?
< Is 1st header region allocated?
Definition at line 1314 of file header.c.
References _free(), headerToken_s::baseurl, headerToken_s::blob, headerToken_s::bloblen, headerToken_s::digest, ENTRY_IS_REGION, headerToken_s::flags, HEADER_IMMUTABLE, HEADER_SIGNATURES, HEADERFLAG_ALLOCATED, HEADERFLAG_MAPPED, HEADERFLAG_RDONLY, headerFree(), headerGetInstance(), headerLoad(), headerSetBaseURL(), headerSetDigest(), headerSetInstance(), headerSetOrigin(), headerSetParent(), headerSetRpmdb(), headerUnload(), headerToken_s::index, indexEntry_s::info, headerToken_s::origin, headerToken_s::parent, headerToken_s::rpmdb, headerToken_s::sb, entryInfo_s::tag, and xstrdup().
Referenced by headerCopy(), rpmcliImportPubkey(), rpmpsmStage(), rpmReSign(), and writeRPM().
Delete tag in header.
Removes all entries of type tag from the header, returns 1 if none were found.
h | header |
tag | tag |
Definition at line 932 of file header.c.
References _free(), indexEntry_s::data, data, ENTRY_IN_REGION, findEntry(), headerToken_s::index, headerToken_s::indexUsed, indexEntry_s::info, indexEntry_s::length, and entryInfo_s::tag.
Referenced by headerDel(), and headerLoad().
|
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(), i, headerToken_s::index, headerToken_s::indexUsed, indexEntry_s::length, headerToken_s::origin, headerToken_s::parent, and rpmswAdd().
Referenced by headerGetPool().
int headerSetBaseURL | ( | Header | h, |
const char * | baseurl | ||
) |
Store header base URL (e.g path or URL).
h | header |
baseurl | new header baseurl |
Definition at line 1219 of file header.c.
References _free(), headerToken_s::baseurl, and xstrdup().
Referenced by headerReload(), and rpmrepoReadHeader().
int headerSetDigest | ( | Header | h, |
const char * | digest | ||
) |
Store digest of origin *.rpm file.
h | header |
digest | new header digest |
Definition at line 1249 of file header.c.
References _free(), headerToken_s::digest, and xstrdup().
Referenced by headerReload(), and rpmrepoReadHeader().
rpmuint32_t headerSetEndOff | ( | Header | h, |
rpmuint32_t | endoff | ||
) |
Store header ending byte offset.
h | header |
endoff | new header ending byte offset |
Definition at line 1307 of file header.c.
References headerToken_s::endoff.
Referenced by rdSignature(), and rpmReadHeader().
uint32_t headerSetInstance | ( | Header | h, |
uint32_t | instance | ||
) |
Store header instance (e.g path or URL).
h | header |
instance | new header instance |
Definition at line 1280 of file header.c.
References headerToken_s::instance.
Referenced by headerReload(), rpmdbAdd(), rpmmiNext(), rpmpsmStage(), and rpmrepoReadHeader().
int headerSetMagic | ( | Header | h, |
unsigned char * | magic, | ||
size_t | nmagic | ||
) |
Store header magic.
h | header |
magic | magic array |
nmagic | no. bytes of magic |
Definition at line 1172 of file header.c.
References headerToken_s::magic.
int headerSetOrigin | ( | Header | h, |
const char * | origin | ||
) |
Store header origin (e.g path or URL).
h | header |
origin | new header origin |
Definition at line 1189 of file header.c.
References _free(), headerToken_s::origin, and xstrdup().
Referenced by hdrSetOrigin(), headerReload(), rpmhdr_setorigin(), rpmmiNext(), and rpmReadHeader().
int headerSetParent | ( | Header | h, |
const char * | parent | ||
) |
Store header parent (e.g parent's NVRA).
h | header |
parent | new header parent |
Definition at line 1203 of file header.c.
References _free(), headerToken_s::parent, and xstrdup().
Referenced by headerReload().
void* headerSetRpmdb | ( | Header | h, |
void * | rpmdb | ||
) |
Store rpmdb pointer.
h | header |
rpmdb | new rpmdb pointer (or NULL to unset) |
Definition at line 1266 of file header.c.
References headerToken_s::rpmdb.
Referenced by headerReload(), and showQueryPackage().
rpmuint32_t headerSetStartOff | ( | Header | h, |
rpmuint32_t | startoff | ||
) |
Store header starting byte offset.
h | header |
startoff | new header starting byte offset |
Definition at line 1295 of file header.c.
References headerToken_s::startoff.
Referenced by rdSignature(), and rpmReadHeader().
int headerSetStatbuf | ( | Header | h, |
struct stat * | st | ||
) |
Copy into header stat(2) buffer (of origin *.rpm file).
h | header |
st | new header stat(2) buffer |
Definition at line 1235 of file header.c.
References headerToken_s::sb.
size_t headerSizeof | ( | Header | h | ) |
Return size of on-disk header representation in bytes.
h | header |
< Header came from legacy source?
Definition at line 266 of file header.c.
References entryInfo_s::count, ENTRY_IS_REGION, headerToken_s::flags, header_magic, HEADERFLAG_LEGACY, headerSort(), i, headerToken_s::index, indexEntry_s::info, indexEntry_s::length, entryInfo_s::offset, size, entryInfo_s::type, and type.
Referenced by rdSignature(), readFile(), and wrSignature().
|
static |
Sort tags in header.
h | header |
< Are header entries sorted?
< Are header entries sorted?
Definition at line 227 of file header.c.
References headerToken_s::flags, HEADERFLAG_SORTED, headerToken_s::index, indexCmp(), and headerToken_s::indexUsed.
Referenced by findEntry(), headerInit(), headerLoad(), headerSizeof(), and headerUnload().
void* headerUnload | ( | Header | h, |
size_t * | lenp | ||
) |
headerUnload.
h | header |
*lenp | no. bytes in unloaded header blob |
< Header came from legacy source?
< Header came from legacy source?
< Are header entries sorted?
Definition at line 648 of file header.c.
References _free(), entryInfo_s::count, indexEntry_s::data, ENTRY_IS_REGION, headerToken_s::flags, hdrchkData, hdrchkTags, HEADERFLAG_LEGACY, HEADERFLAG_SORTED, headerGetStats(), headerSort(), headerUnsort(), i, headerToken_s::index, headerToken_s::indexUsed, indexEntry_s::info, len, indexEntry_s::length, entryInfo_s::offset, indexEntry_s::rdlen, rpmswEnter(), rpmswExit(), entryInfo_s::tag, entryInfo_s::type, type, and xmalloc.
Referenced by hdrUnload(), headerReload(), miFreeHeader(), rpmcliImportPubkey(), rpmdbAdd(), rpmWriteHeader(), showVerifyPackage(), and writeRPM().
|
static |
Restore tags in header to original ordering.
h | header |
Definition at line 260 of file header.c.
References headerToken_s::index, headerToken_s::indexUsed, and offsetCmp().
Referenced by headerUnload().
|
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 1698 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 |
Swab rpmuint64_t/rpmuint32_t/rpmuint16_t arrays within header region.
This code is way more twisty than I would like.
A bug with RPM_I18NSTRING_TYPE in rpm-2.5.x (fixed in August 1998) causes the offset and length of elements in a header region to disagree regarding the total length of the region data.
The "fix" is to compute the size using both offset and length and return the larger of the two numbers as the size of the region. Kinda like computing left and right Riemann sums of the data elements to determine the size of a data structure, go figger :-).
There's one other twist if a header region tag is in the set to be swabbed, as the data for a header region is located after all other tag data.
entry | header entry |
il | no. of entries |
dl | start no. bytes of data |
pe | header physical entry pointer (swapped) |
dataStart | header data start |
dataEnd | header data end |
regionid | region offset |
Definition at line 527 of file header.c.
References alloca(), entryInfo_s::count, indexEntry_s::data, dataLength(), hdrchkAlign, hdrchkData, hdrchkType, HEADER_I18NTABLE, HEADER_IMAGE, indexEntry_s::info, indexEntry_s::length, entryInfo_s::offset, rpmDataType_u::ptr, indexEntry_s::rdlen, REGION_TAG_COUNT, RPM_I18NSTRING_TYPE, entryInfo_s::tag, entryInfo_s::type, type, and rpmDataType_u::ui8p.
Referenced by headerLoad().
|
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().
|
static |
Swab rpmuint64_t/rpmuint32_t/rpmuint16_t arrays within header region.
Definition at line 392 of file header.c.
References b, _HE_s::c, i, j, _HE_s::p, rpmDataType_u::ptr, RPM_UINT16_TYPE, RPM_UINT32_TYPE, RPM_UINT64_TYPE, _HE_s::t, rpmDataType_u::ui16p, and rpmDataType_u::ui32p.
Referenced by copyData(), and rpmheRealloc().
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().
|
static |
Definition at line 46 of file header.c.
Referenced by headerGetMagic(), headerLoad(), and headerSizeof().
|
static |
Maximum no.
of bytes permitted in a header.
Definition at line 78 of file header.c.
Referenced by headerMap().