Files | |
file | rpmlib.h |
In Memoriam: Steve Taylor <staylor@redhat.com> was here, now he's not. | |
file | dbconfig.c |
file | hdrNVR.c |
file | rpmdb.c |
file | rpmdb.h |
Access RPM indices using Berkeley DB interface(s). | |
Typedefs | |
typedef rpmdb_s * | rpmdb |
Database of headers and tag value indices. | |
typedef _rpmdbMatchIterator * | rpmdbMatchIterator |
Database iterator. | |
typedef _dbiIndexSet * | dbiIndexSet |
A single element (i.e. | |
Enumerations | |
enum | rpmdbFlags { RPMDB_FLAG_JUSTCHECK = (1 << 0), RPMDB_FLAG_MINIMAL = (1 << 1), RPMDB_FLAG_CHROOT = (1 << 2) } |
Functions | |
int | rpmdbFindFpList (rpmdb db, fingerPrint *fpList, dbiIndexSet *matchList, int numItems, unsigned int exclude) |
Find fingerprint matches in database. | |
rpmdb | rpmdbUnlink (rpmdb db, const char *msg) |
Unreference a database instance. | |
rpmdb | rpmdbLink (rpmdb db, const char *msg) |
Reference a database instance. | |
int | rpmdbOpen (const char *prefix, rpmdb *dbp, int mode, int perms) |
Open rpm database. | |
int | rpmdbInit (const char *prefix, int perms) |
Initialize database. | |
int | rpmdbVerifyAllDBI (rpmdb db) |
Verify all database components. | |
int | rpmdbVerify (const char *prefix) |
Open and verify all database components. | |
int | rpmdbClose (rpmdb db) |
Close all database indices and free rpmdb. | |
int | rpmdbSync (rpmdb db) |
Sync all database indices. | |
int | rpmdbOpenAll (rpmdb db) |
Open all database indices. | |
int | rpmdbCountPackages (rpmdb db, const char *name) |
Return number of instances of package in rpm database. | |
unsigned int | rpmdbGetIteratorOffset (rpmdbMatchIterator mi) |
Return header join key for current position of rpm database iterator. | |
int | rpmdbGetIteratorCount (rpmdbMatchIterator mi) |
Return number of elements in rpm database iterator. | |
int | rpmdbAppendIterator (rpmdbMatchIterator mi, const int *hdrNums, int nHdrNums) |
Append items to set of package instances to iterate. | |
int | rpmdbPruneIterator (rpmdbMatchIterator mi, int *hdrNums, int nHdrNums, int sorted) |
Remove items from set of package instances to iterate. | |
int | rpmdbSetIteratorRE (rpmdbMatchIterator mi, rpmTag tag, rpmMireMode mode, const char *pattern) |
Add pattern to iterator selector. | |
int | rpmdbSetIteratorRewrite (rpmdbMatchIterator mi, int rewrite) |
Prepare iterator for lazy writes. | |
int | rpmdbSetIteratorModified (rpmdbMatchIterator mi, int modified) |
Modify iterator to mark header for lazy write on release. | |
int | rpmdbSetHdrChk (rpmdbMatchIterator mi, rpmts ts, rpmRC(*hdrchk)(rpmts ts, const void *uh, size_t uc, const char **msg)) |
Modify iterator to verify retrieved header blobs. | |
rpmdbMatchIterator | rpmdbInitIterator (rpmdb db, rpmTag rpmtag, const void *keyp, size_t keylen) |
Return database iterator. | |
Header | rpmdbNextIterator (rpmdbMatchIterator mi) |
Return next package header from iteration. | |
int | rpmdbCheckSignals (void) |
Check rpmdb signal handler for trapped signal exit. | |
rpmdbMatchIterator | rpmdbFreeIterator (rpmdbMatchIterator mi) |
Destroy rpm database iterator. | |
int | rpmdbAdd (rpmdb db, int iid, Header h, rpmts ts, rpmRC(*hdrchk)(rpmts ts, const void *uh, size_t uc, const char **msg)) |
Add package header to rpm database and indices. | |
int | rpmdbRemove (rpmdb db, int rid, unsigned int hdrNum, rpmts ts, rpmRC(*hdrchk)(rpmts ts, const void *uh, size_t uc, const char **msg)) |
Remove package header from rpm database and indices. | |
int | rpmdbRebuild (const char *prefix, rpmts ts, rpmRC(*hdrchk)(rpmts ts, const void *uh, size_t uc, const char **msg)) |
Rebuild database indices from package headers. |
typedef struct _dbiIndexSet* dbiIndexSet |
typedef struct rpmdb_s* rpmdb |
typedef struct _rpmdbMatchIterator* rpmdbMatchIterator |
enum rpmdbFlags |
int rpmdbAdd | ( | rpmdb | db, | |
int | iid, | |||
Header | h, | |||
rpmts | ts, | |||
rpmRC(*)(rpmts ts, const void *uh, size_t uc, const char **msg) | hdrchk | |||
) |
Add package header to rpm database and indices.
db | rpm database | |
iid | install transaction id (iid = 0 or -1 to skip) | |
h | header | |
ts | (unused) transaction set (or NULL) | |
(*hdrchk) | (unused) headerCheck() vector (or NULL) |
Definition at line 3080 of file rpmdb.c.
References _, _db_tagged_file_indices, _DBSWAP, _free(), alloca(), blockSignals(), dbiAppendSet(), dbiFreeIndexSet(), dbiIndexNewItem(), dbiOpen(), dbt2set(), HEADER_MAGIC_NO, headerAddEntry(), headerFreeData(), headerGetEntryMinMemory(), headerIsEntry(), headerRemoveEntry(), headerSetInstance(), headerSizeof(), headerUnload(), hGetColor(), nibble(), pgpExtractPubkeyFingerprint(), RPM_BIN_TYPE, RPM_CHAR_TYPE, RPM_I18NSTRING_TYPE, RPM_INT16_TYPE, RPM_INT32_TYPE, RPM_INT8_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, RPMDBI_ADDED, RPMDBI_AVAILABLE, RPMDBI_DEPENDS, RPMDBI_PACKAGES, RPMDBI_REMOVED, RPMERR_DBCORRUPT, RPMERR_DBGETINDEX, RPMERR_DBPUTINDEX, rpmError, RPMMESS_DEBUG, RPMMESS_ERROR, rpmMessage, RPMRC_FAIL, RPMRC_NOTFOUND, RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, RPMTAG_FILEDIGESTS, RPMTAG_FILEMD5S, RPMTAG_GROUP, RPMTAG_INSTALLTID, RPMTAG_PACKAGECOLOR, RPMTAG_PUBKEYS, RPMTAG_REMOVETID, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_TRIGGERNAME, set2dbt(), taghash(), tagName(), _dbswap::ui, and xcalloc().
Referenced by rpmcliImportPubkey(), rpmdbRebuild(), and rpmpsmStage().
int rpmdbAppendIterator | ( | rpmdbMatchIterator | mi, | |
const int * | hdrNums, | |||
int | nHdrNums | |||
) |
Append items to set of package instances to iterate.
mi | rpm database iterator | |
hdrNums | array of package instances | |
nHdrNums | number of elements in array |
Definition at line 2617 of file rpmdb.c.
References dbiAppendSet(), _rpmdbMatchIterator::mi_set, and xcalloc().
Referenced by markReplacedFiles().
int rpmdbCheckSignals | ( | void | ) |
Check rpmdb signal handler for trapped signal exit.
Definition at line 707 of file rpmdb.c.
References EXIT_FAILURE, _rpmdbMatchIterator::mi_next, rpmdbClose(), rpmdbFreeIterator(), RPMMESS_DEBUG, rpmMessage, rpmmiRock, and rpmsqCaught.
Referenced by checkSignals(), rpmdbFreeIterator(), rpmdbInitIterator(), rpmQueryVerify(), rpmtsRun(), and unblockSignals().
int rpmdbClose | ( | rpmdb | db | ) |
Close all database indices and free rpmdb.
db | rpm database |
Definition at line 957 of file rpmdb.c.
References _free(), next, PBM_FREE, rpmdbRock, rpmdbUnlink, and rpmsqEnable().
Referenced by rpmdb_dealloc(), rpmdbCheckSignals(), rpmdbInit(), rpmdbRebuild(), rpmdbVerifyAllDBI(), rpmtsCloseDB(), and rpmtsCloseSDB().
int rpmdbCountPackages | ( | rpmdb | db, | |
const char * | name | |||
) |
Return number of instances of package in rpm database.
db | rpm database | |
name | rpm package name |
Definition at line 1536 of file rpmdb.c.
References _, alloca(), dbiFreeIndexSet(), dbiIndexSetCount(), dbiOpen(), dbt2set(), RPMERR_DBGETINDEX, rpmError, RPMTAG_NAME, and tagName().
Referenced by handleOneTrigger(), rpmpsmStage(), and runTriggers().
int rpmdbFindFpList | ( | rpmdb | db, | |
fingerPrint * | fpList, | |||
dbiIndexSet * | matchList, | |||
int | numItems, | |||
unsigned int | exclude | |||
) |
Find fingerprint matches in database.
db | rpm database | |
fpList | fingerprint array |
matchList | returned fingerprint matches |
numItems | number of fingerprint items | |
exclude | excluded header instance (0 to disable) |
Definition at line 3537 of file rpmdb.c.
References _db_tagged_file_indices, _free(), dbiAppendSet(), FP_EQUAL, fpCacheCreate(), fpCacheFree(), fpLookupList(), headerFreeData(), headerGetEntryMinMemory(), _rpmdbMatchIterator::mi_data, _rpmdbMatchIterator::mi_key, _rpmdbMatchIterator::mi_set, _rpmdbMatchIterator::mi_setx, rpmdbFreeIterator(), rpmdbGetIteratorCount(), rpmdbGrowIterator(), rpmdbInitIterator(), rpmdbNextIterator(), rpmdbSortIterator(), RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, taghash(), and xcalloc().
Referenced by rpmtsRun().
rpmdbMatchIterator rpmdbFreeIterator | ( | rpmdbMatchIterator | mi | ) |
Destroy rpm database iterator.
mi | rpm database iterator |
Definition at line 1877 of file rpmdb.c.
References _free(), dbiFreeIndexSet(), dbiOpen(), _rpmdbMatchIterator::mi_db, _rpmdbMatchIterator::mi_dbc, _rpmdbMatchIterator::mi_keyp, _rpmdbMatchIterator::mi_nre, _rpmdbMatchIterator::mi_re, _rpmdbMatchIterator::mi_set, miFreeHeader(), next, rpmdbCheckSignals(), RPMDBI_PACKAGES, rpmdbUnlink, and rpmmiRock.
Referenced by checkPackageSet(), dbiFindMatches(), handleInstInstalledFiles(), handleRmvdInstalledFiles(), IDTXload(), markReplacedFiles(), rpmcliShowMatches(), rpmdb_length(), rpmdb_subscript(), rpmdbCheckSignals(), rpmdbFindByFile(), rpmdbFindFpList(), rpmdbRebuild(), rpmdbRemove(), rpmErase(), rpmfcFindRequiredPackages(), rpmgiFree(), rpmgiInitFilter(), rpmgiNext(), rpmInstall(), rpmmi_dealloc(), rpmmi_iternext(), rpmpsmStage(), rpmts_AddErase(), rpmtsAddInstallElement(), rpmtsCheck(), rpmtsFindPubkey(), rpmtsRun(), rpmtsSolve(), runImmedTriggers(), runTriggers(), and unsatisfiedDepend().
int rpmdbGetIteratorCount | ( | rpmdbMatchIterator | mi | ) |
Return number of elements in rpm database iterator.
mi | rpm database iterator |
Definition at line 1931 of file rpmdb.c.
References _rpmdbMatchIterator::mi_set.
Referenced by rpmdbFindFpList(), rpmfcFindRequiredPackages(), rpmInstall(), rpmmi_Count(), rpmts_AddErase(), and runImmedTriggers().
unsigned int rpmdbGetIteratorOffset | ( | rpmdbMatchIterator | mi | ) |
Return header join key for current position of rpm database iterator.
mi | rpm database iterator |
Definition at line 1923 of file rpmdb.c.
References _rpmdbMatchIterator::mi_offset.
Referenced by IDTXload(), markReplacedFiles(), rpmErase(), rpmgiNext(), rpmmi_Instance(), rpmpsmStage(), rpmts_AddErase(), rpmtsAddInstallElement(), and rpmtsFindPubkey().
int rpmdbInit | ( | const char * | prefix, | |
int | perms | |||
) |
Initialize database.
prefix | path to top of install tree | |
perms | database permissions |
Definition at line 1294 of file rpmdb.c.
References RPMDB_FLAG_JUSTCHECK, rpmdbClose(), rpmdbOpenAll(), rpmdbOpenDatabase(), and rpmExpandNumeric().
Referenced by rpmtsInitDB().
rpmdbMatchIterator rpmdbInitIterator | ( | rpmdb | db, | |
rpmTag | rpmtag, | |||
const void * | keyp, | |||
size_t | keylen | |||
) |
Return database iterator.
db | rpm database | |
rpmtag | rpm tag | |
keyp | key data (NULL for sequential access) | |
keylen | key data length (0 will use strlen(keyp)) |
Definition at line 2628 of file rpmdb.c.
References _, _DBSWAP, _free(), dbiFindByLabel(), dbiFreeIndexSet(), dbiOpen(), dbt2set(), _rpmdbMatchIterator::mi_key, _rpmdbMatchIterator::mi_next, rpmdbCheckSignals(), rpmdbFindByFile(), RPMDBI_LABEL, RPMDBI_PACKAGES, rpmdbLink, RPMERR_DBGETINDEX, rpmError, rpmmiRock, RPMTAG_BASENAMES, RPMTAG_NAME, tagName(), _dbswap::ui, xcalloc(), and xmalloc().
Referenced by dbiFindMatches(), rpmdb_length(), rpmdb_Match(), rpmdb_subscript(), rpmdbFindByFile(), rpmdbFindFpList(), rpmdbRebuild(), rpmdbRemove(), rpmtsInitIterator(), and rpmtsSolve().
Reference a database instance.
db | rpm database | |
msg |
Header rpmdbNextIterator | ( | rpmdbMatchIterator | mi | ) |
Return next package header from iteration.
mi | rpm database iterator |
Definition at line 2271 of file rpmdb.c.
References _, _DBSWAP, _free(), _USE_COPY_LOAD, dbiIndexRecordFileNumber(), dbiIndexRecordOffset(), dbiOpen(), headerToken_s::flags, headerCopyLoad(), HEADERFLAG_ALLOCATED, headerIsEntry(), headerLoad(), headerSetInstance(), headerSetOrigin(), _rpmdbMatchIterator::mi_cflags, _rpmdbMatchIterator::mi_data, _rpmdbMatchIterator::mi_db, _rpmdbMatchIterator::mi_dbc, _rpmdbMatchIterator::mi_filenum, _rpmdbMatchIterator::mi_h, _rpmdbMatchIterator::mi_hdrchk, _rpmdbMatchIterator::mi_key, _rpmdbMatchIterator::mi_keylen, _rpmdbMatchIterator::mi_keyp, _rpmdbMatchIterator::mi_modified, _rpmdbMatchIterator::mi_offset, _rpmdbMatchIterator::mi_prevoffset, _rpmdbMatchIterator::mi_set, _rpmdbMatchIterator::mi_setx, _rpmdbMatchIterator::mi_ts, miFreeHeader(), mireSkip(), PBM_ISSET, PBM_REALLOC(), PBM_SET, RPMDBI_PACKAGES, RPMERR_BADHEADER, rpmError, RPMMESS_DEBUG, RPMMESS_ERROR, rpmMessage, RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, RPMTAG_NAME, and _dbswap::ui.
Referenced by checkPackageSet(), dbiFindMatches(), handleInstInstalledFiles(), handleRmvdInstalledFiles(), IDTXload(), markReplacedFiles(), rpmcliShowMatches(), rpmdb_length(), rpmdb_subscript(), rpmdbFindByFile(), rpmdbFindFpList(), rpmdbRebuild(), rpmdbRemove(), rpmErase(), rpmfcFindRequiredPackages(), rpmgiNext(), rpmInstall(), rpmmi_iternext(), rpmpsmStage(), rpmts_AddErase(), rpmtsAddInstallElement(), rpmtsFindPubkey(), rpmtsRun(), rpmtsSolve(), runImmedTriggers(), runTriggers(), and unsatisfiedDepend().
int rpmdbOpen | ( | const char * | prefix, | |
rpmdb * | dbp, | |||
int | mode, | |||
int | perms | |||
) |
Open rpm database.
prefix | path to top of install tree |
dbp | address of rpm database |
mode | open(2) flags: O_RDWR or O_RDONLY (O_CREAT also) | |
perms | database permissions |
Definition at line 1286 of file rpmdb.c.
References rpmdbOpenDatabase(), and rpmExpandNumeric().
Referenced by rpmtsOpenDB(), and rpmtsOpenSDB().
int rpmdbOpenAll | ( | rpmdb | db | ) |
Open all database indices.
db | rpm database |
Definition at line 882 of file rpmdb.c.
References dbiOpen(), RPMDBI_ADDED, RPMDBI_AVAILABLE, RPMDBI_DEPENDS, and RPMDBI_REMOVED.
Referenced by rpmdbInit(), rpmdbVerifyAllDBI(), and rpmtsRun().
int rpmdbPruneIterator | ( | rpmdbMatchIterator | mi, | |
int * | hdrNums, | |||
int | nHdrNums, | |||
int | sorted | |||
) |
Remove items from set of package instances to iterate.
mi | rpm database iterator | |
hdrNums | array of package instances | |
nHdrNums | number of elements in array | |
sorted | is the array sorted? (array will be sorted on return) |
Definition at line 2606 of file rpmdb.c.
References dbiPruneSet(), and _rpmdbMatchIterator::mi_set.
Referenced by checkPackageSet(), rpmtsAddInstallElement(), and unsatisfiedDepend().
int rpmdbRebuild | ( | const char * | prefix, | |
rpmts | ts, | |||
rpmRC(*)(rpmts ts, const void *uh, size_t uc, const char **msg) | hdrchk | |||
) |
Rebuild database indices from package headers.
prefix | path to top of install tree | |
ts | transaction set (or NULL) | |
(*hdrchk) | headerCheck() vector (or NULL) |
Definition at line 3881 of file rpmdb.c.
References _, _db_filter_dups, _free(), _rebuildinprogress, _RECNUM, Access(), dbiTagsInit(), errno, F_OK, headerCopy(), headerFree(), headerIsEntry(), headerNVR(), Mkdir(), name, Rmdir(), RPMDB_FLAG_MINIMAL, rpmdbAdd(), rpmdbClose(), rpmdbFreeIterator(), RPMDBI_PACKAGES, rpmdbInitIterator(), rpmdbMoveDatabase(), rpmdbNextIterator(), rpmdbOpenDatabase(), rpmdbRemoveDatabase(), rpmdbSetHdrChk(), rpmdbSetIteratorRE(), rpmDefineMacro(), RPMERR_INTERNAL, RPMERR_MKDIR, rpmError, rpmExpandNumeric(), rpmGetPath(), RPMMESS_DEBUG, RPMMESS_ERROR, RPMMESS_NORMAL, rpmMessage, RPMTAG_BUILDTIME, RPMTAG_HEADERIMAGE, RPMTAG_NAME, RPMTAG_RELEASE, RPMTAG_VERSION, stpcpy(), URL_IS_UNKNOWN, urlPath(), xmalloc(), and xstrdup().
Referenced by rpmtsRebuildDB().
int rpmdbRemove | ( | rpmdb | db, | |
int | rid, | |||
unsigned int | hdrNum, | |||
rpmts | ts, | |||
rpmRC(*)(rpmts ts, const void *uh, size_t uc, const char **msg) | hdrchk | |||
) |
Remove package header from rpm database and indices.
db | rpm database | |
rid | (unused) remove transaction id (rid = 0 or -1 to skip) | |
hdrNum | package instance number in database | |
ts | (unused) transaction set (or NULL) | |
(*hdrchk) | (unused) headerCheck() vector (or NULL) |
Definition at line 2770 of file rpmdb.c.
References _, _DBSWAP, _free(), alloca(), blockSignals(), dbiFreeIndexSet(), dbiIndexNewItem(), dbiOpen(), dbiPruneSet(), dbt2set(), headerAddEntry(), headerFreeData(), headerGetEntryMinMemory(), headerLink(), headerNVR(), nibble(), pgpExtractPubkeyFingerprint(), RPM_BIN_TYPE, RPM_CHAR_TYPE, RPM_I18NSTRING_TYPE, RPM_INT16_TYPE, RPM_INT32_TYPE, RPM_INT8_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, rpmdbFreeIterator(), RPMDBI_ADDED, RPMDBI_AVAILABLE, RPMDBI_DEPENDS, RPMDBI_PACKAGES, RPMDBI_REMOVED, rpmdbInitIterator(), rpmdbNextIterator(), RPMERR_DBCORRUPT, RPMERR_DBGETINDEX, RPMERR_DBPUTINDEX, rpmError, RPMMESS_DEBUG, rpmMessage, RPMTAG_FILEDIGESTS, RPMTAG_PUBKEYS, RPMTAG_REMOVETID, set2dbt(), tagName(), _dbswap::ui, and xcalloc().
Referenced by rpmpsmStage(), and rpmtsRollback().
int rpmdbSetHdrChk | ( | rpmdbMatchIterator | mi, | |
rpmts | ts, | |||
rpmRC(*)(rpmts ts, const void *uh, size_t uc, const char **msg) | hdrchk | |||
) |
Modify iterator to verify retrieved header blobs.
mi | rpm database iterator | |
ts | transaction set | |
(*hdrchk) | headerCheck() vector |
Definition at line 2256 of file rpmdb.c.
References _rpmdbMatchIterator::mi_hdrchk, and _rpmdbMatchIterator::mi_ts.
Referenced by rpmdbRebuild(), and rpmtsInitIterator().
int rpmdbSetIteratorModified | ( | rpmdbMatchIterator | mi, | |
int | modified | |||
) |
Modify iterator to mark header for lazy write on release.
mi | rpm database iterator | |
modified | new value of modified |
Definition at line 2246 of file rpmdb.c.
References _rpmdbMatchIterator::mi_modified.
Referenced by markReplacedFiles().
int rpmdbSetIteratorRE | ( | rpmdbMatchIterator | mi, | |
rpmTag | tag, | |||
rpmMireMode | mode, | |||
const char * | pattern | |||
) |
Add pattern to iterator selector.
mi | rpm database iterator | |
tag | rpm tag | |
mode | type of pattern match | |
pattern | pattern to match |
Definition at line 2047 of file rpmdb.c.
References _free(), _rpmdbMatchIterator::mi_nre, _rpmdbMatchIterator::mi_re, mireCmp(), mireDup(), rpmExpand(), and xrealloc().
Referenced by dbiFindMatches(), IDTXload(), rpmdbRebuild(), rpmgiInitFilter(), rpmmi_Pattern(), rpmpsmStage(), rpmtsInitIterator(), and rpmtsRun().
int rpmdbSetIteratorRewrite | ( | rpmdbMatchIterator | mi, | |
int | rewrite | |||
) |
Prepare iterator for lazy writes.
mi | rpm database iterator | |
rewrite | new value of rewrite |
Definition at line 2233 of file rpmdb.c.
References _rpmdbMatchIterator::mi_cflags.
Referenced by markReplacedFiles().
int rpmdbSync | ( | rpmdb | db | ) |
Sync all database indices.
db | rpm database |
Definition at line 1016 of file rpmdb.c.
Referenced by rpmtsRun().
Unreference a database instance.
db | rpm database | |
msg |
int rpmdbVerify | ( | const char * | prefix | ) |
Open and verify all database components.
prefix | path to top of install tree |
Definition at line 1344 of file rpmdb.c.
References rpmdbOpenDatabase(), rpmdbVerifyAllDBI(), and rpmExpandNumeric().
Referenced by rpmtsVerifyDB().
int rpmdbVerifyAllDBI | ( | rpmdb | db | ) |
Verify all database components.
db | rpm database |
Definition at line 1315 of file rpmdb.c.
References rpmdbClose(), and rpmdbOpenAll().
Referenced by db3open(), and rpmdbVerify().