Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

rpmdb/rpmdb.c File Reference

More...

#include "system.h"
#include <sys/file.h>
#include <signal.h>
#include <sys/signal.h>
#include <fnmatch.h>
#include <regex.h>
#include <rpmio_internal.h>
#include <rpmmacro.h>
#include "rpmdb.h"
#include "fprint.h"
#include "legacy.h"
#include "header_internal.h"
#include "debug.h"

Go to the source code of this file.

Data Structures

union  _dbswap
struct  _rpmdbMatchIterator
struct  miRE_s
struct  pbm_set
struct  sigtbl_s
struct  skipDir_s

Defines

#define _USE_COPY_LOAD
#define _DBI_FLAGS   0
#define _DBI_PERMS   0644
#define _DBI_MAJOR   -1
#define __PBM_NBITS   (8 * sizeof (__pbm_bits))
#define __PBM_IX(d)   ((d) / __PBM_NBITS)
#define __PBM_MASK(d)   ((__pbm_bits) 1 << (((unsigned)(d)) % __PBM_NBITS))
#define __PBM_BITS(set)   ((set)->bits)
#define PBM_FREE(s)   _free(s);
#define PBM_SET(d, s)   (__PBM_BITS (s)[__PBM_IX (d)] |= __PBM_MASK (d))
#define PBM_CLR(d, s)   (__PBM_BITS (s)[__PBM_IX (d)] &= ~__PBM_MASK (d))
#define PBM_ISSET(d, s)   ((__PBM_BITS (s)[__PBM_IX (d)] & __PBM_MASK (d)) != 0)
#define PBM_ALLOC(d)   xcalloc(__PBM_IX (d) + 1, sizeof(__pbm_bits))
#define DB1vec   NULL
#define DB2vec   NULL
#define DB3vec   &db3vec
#define _DBSWAP(_a)
#define _DB_ROOT   "/"
#define _DB_HOME   "%{_dbpath}"
#define _DB_FLAGS   0
#define _DB_MODE   0
#define _DB_PERMS   0644
#define _DB_MAJOR   -1
#define _DB_ERRPFX   "rpmdb"
#define _skip(_dn)   { sizeof(_dn)-1, (_dn) }
#define _RECNUM   rpmdbGetIteratorOffset(mi)

Typedefs

typedef unsigned int __pbm_bits
typedef miRE_smiRE

Functions

pbm_setPBM_REALLOC (pbm_set **sp, int *odp, int nd)
 Reallocate a bit map.

unsigned char nibble (char c)
 Convert hex to binary nibble.

int dbiTagToDbix (int rpmtag)
 Return dbi index used for rpm tag.

void dbiTagsInit (void)
 Initialize database (index, tag) tuple from configuration.

dbiIndex dbiOpen (rpmdb db, rpmTag rpmtag, unsigned int flags)
dbiIndexItem dbiIndexNewItem (unsigned int hdrNum, unsigned int tagNum)
 Create and initialize item for index database set.

int dbt2set (dbiIndex dbi, DBT *data, dbiIndexSet *setp)
 Convert retrieved data to index set.

int set2dbt (dbiIndex dbi, DBT *data, dbiIndexSet set)
 Convert index set to database representation.

int hdrNumCmp (void *one, void *two)
int dbiAppendSet (dbiIndexSet set, void *recs, int nrecs, size_t recsize, int sortset)
 Append element(s) to set of index database items.

int dbiPruneSet (dbiIndexSet set, void *recs, int nrecs, size_t recsize, int sorted)
 Remove element(s) from set of index database items.

unsigned int dbiIndexSetCount (dbiIndexSet set)
unsigned int dbiIndexRecordOffset (dbiIndexSet set, int recno)
unsigned int dbiIndexRecordFileNumber (dbiIndexSet set, int recno)
dbiIndexSet dbiFreeIndexSet (dbiIndexSet set)
void handler (int signum)
int enableSignals (void)
 Enable all signal handlers.

int rpmdbCheckSignals (void)
int disableSignals (void)
 Disable all signal handlers.

int blockSignals (rpmdb db, sigset_t *oldMask)
 Block all signals, returning previous signal mask.

int unblockSignals (rpmdb db, sigset_t *oldMask)
 Restore signal mask.

int rpmdbOpenAll (rpmdb db)
int rpmdbCloseDBI (rpmdb db, int rpmtag)
 Close a single database index.

int rpmdbClose (rpmdb db)
int rpmdbSync (rpmdb db)
rpmdb newRpmdb (char *root, char *home, int mode, int perms, int flags)
int openDatabase (char *prefix, char *dbpath, int _dbapi, rpmdb *dbp, int mode, int perms, int flags)
rpmdb XrpmdbUnlink (rpmdb db, char *msg, char *fn, unsigned ln)
rpmdb XrpmdbLink (rpmdb db, char *msg, char *fn, unsigned ln)
int rpmdbOpen (char *prefix, rpmdb *dbp, int mode, int perms)
int rpmdbInit (char *prefix, int perms)
int rpmdbVerify (char *prefix)
int rpmdbFindByFile (rpmdb db, char *filespec, DBT *key, DBT *data, dbiIndexSet *matches)
 Find file matches in database.

int rpmdbCountPackages (rpmdb db, char *name)
rpmRC dbiFindMatches (dbiIndex dbi, DBC *dbcursor, DBT *key, DBT *data, char *name, char *version, char *release, dbiIndexSet *matches)
 Attempt partial matches on name[-version[-release]] strings.

rpmRC dbiFindByLabel (dbiIndex dbi, DBC *dbcursor, DBT *key, DBT *data, char *arg, dbiIndexSet *matches)
 Lookup by name, name-version, and finally by name-version-release.

int miFreeHeader (rpmdbMatchIterator mi, dbiIndex dbi)
 Rewrite a header into packages (if necessary) and free the header.

rpmdbMatchIterator rpmdbFreeIterator (rpmdbMatchIterator mi)
unsigned int rpmdbGetIteratorOffset (rpmdbMatchIterator mi)
unsigned int rpmdbGetIteratorFileNum (rpmdbMatchIterator mi)
int rpmdbGetIteratorCount (rpmdbMatchIterator mi)
int miregexec (miRE mire, char *val)
 Return pattern match.

int mireCmp (void *a, void *b)
 Compare iterator selectors by rpm tag (qsort/bsearch).

char * mireDup (rpmTag tag, rpmMireMode *modep, char *pattern)
 Copy pattern, escaping for appropriate mode.

int rpmdbSetIteratorRE (rpmdbMatchIterator mi, rpmTag tag, rpmMireMode mode, char *pattern)
int mireSkip (rpmdbMatchIterator mi)
 Return iterator selector match.

int rpmdbSetIteratorRewrite (rpmdbMatchIterator mi, int rewrite)
int rpmdbSetIteratorModified (rpmdbMatchIterator mi, int modified)
int rpmdbSetHdrChk (rpmdbMatchIterator mi, rpmts ts, rpmRC(*hdrchk)(rpmts ts, void *uh, size_t uc, char **msg))
Header rpmdbNextIterator (rpmdbMatchIterator mi)
void rpmdbSortIterator (rpmdbMatchIterator mi)
int rpmdbGrowIterator (rpmdbMatchIterator mi, int fpNum)
int rpmdbPruneIterator (rpmdbMatchIterator mi, int *hdrNums, int nHdrNums, int sorted)
int rpmdbAppendIterator (rpmdbMatchIterator mi, int *hdrNums, int nHdrNums)
rpmdbMatchIterator rpmdbInitIterator (rpmdb db, rpmTag rpmtag, void *keyp, size_t keylen)
int rpmdbRemove (rpmdb db, int rid, unsigned int hdrNum, rpmts ts, rpmRC(*hdrchk)(rpmts ts, void *uh, size_t uc, char **msg))
int rpmdbAdd (rpmdb db, int iid, Header h, rpmts ts, rpmRC(*hdrchk)(rpmts ts, void *uh, size_t uc, char **msg))
int skipDir (char *dn)
int rpmdbFindFpList (rpmdb db, fingerPrint *fpList, dbiIndexSet *matchList, int numItems)
int rpmioFileExists (char *urlfn)
 Check if file esists using stat(2).

int rpmdbRemoveDatabase (char *prefix, char *dbpath, int _dbapi)
int rpmdbMoveDatabase (char *prefix, char *olddbpath, int _olddbapi, char *newdbpath, int _newdbapi)
int rpmdbRebuild (char *prefix, rpmts ts, rpmRC(*hdrchk)(rpmts ts, void *uh, size_t uc, char **msg))

Variables

int _rpmdb_debug = 0
int _rebuildinprogress = 0
int _db_filter_dups = 0
int * dbiTags = NULL
int dbiTagsMax = 0
_dbiVec db3vec
_dbiVecmydbvecs []
sigset_t caught
sigtbl_s satbl []
rpmdb rpmdbRock
rpmdbMatchIterator rpmmiRock
rpmdb_s dbTemplate
skipDir_s skipDirs []


Detailed Description

Definition in file rpmdb.c.


Define Documentation

#define __PBM_BITS set       ((set)->bits)
 

Definition at line 78 of file rpmdb.c.

Referenced by PBM_REALLOC().

#define __PBM_IX      ((d) / __PBM_NBITS)
 

Definition at line 71 of file rpmdb.c.

Referenced by PBM_REALLOC().

#define __PBM_MASK      ((__pbm_bits) 1 << (((unsigned)(d)) % __PBM_NBITS))
 

Definition at line 72 of file rpmdb.c.

#define __PBM_NBITS   (8 * sizeof (__pbm_bits))
 

Definition at line 70 of file rpmdb.c.

#define _DB_ERRPFX   "rpmdb"
 

Definition at line 850 of file rpmdb.c.

Referenced by newRpmdb().

#define _DB_FLAGS   0
 

Definition at line 845 of file rpmdb.c.

#define _DB_HOME   "%{_dbpath}"
 

Definition at line 844 of file rpmdb.c.

Referenced by newRpmdb().

#define _DB_MAJOR   -1
 

Definition at line 849 of file rpmdb.c.

#define _DB_MODE   0
 

Definition at line 846 of file rpmdb.c.

#define _DB_PERMS   0644
 

Definition at line 847 of file rpmdb.c.

#define _DB_ROOT   "/"
 

Definition at line 843 of file rpmdb.c.

Referenced by newRpmdb().

#define _DBI_FLAGS   0
 

Definition at line 57 of file rpmdb.c.

#define _DBI_MAJOR   -1
 

Definition at line 59 of file rpmdb.c.

#define _DBI_PERMS   0644
 

Definition at line 58 of file rpmdb.c.

#define _DBSWAP _a   
 

Value:

{ unsigned char _b, *_c = (_a).uc; \
    _b = _c[3]; _c[3] = _c[0]; _c[0] = _b; \
    _b = _c[2]; _c[2] = _c[1]; _c[1] = _b; \
  }

Definition at line 372 of file rpmdb.c.

Referenced by dbt2set(), and set2dbt().

#define _RECNUM   rpmdbGetIteratorOffset(mi)
 

#define _skip _dn       { sizeof(_dn)-1, (_dn) }
 

Definition at line 3306 of file rpmdb.c.

#define _USE_COPY_LOAD
 

Definition at line 7 of file rpmdb.c.

#define DB1vec   NULL
 

Definition at line 227 of file rpmdb.c.

#define DB2vec   NULL
 

Definition at line 228 of file rpmdb.c.

#define DB3vec   &db3vec
 

Definition at line 234 of file rpmdb.c.

#define PBM_ALLOC      xcalloc(__PBM_IX (d) + 1, sizeof(__pbm_bits))
 

Definition at line 85 of file rpmdb.c.

Referenced by dbiOpen(), findNextArg(), and poptStripArg().

#define PBM_CLR d,
     (__PBM_BITS (s)[__PBM_IX (d)] &= ~__PBM_MASK (d))
 

Definition at line 82 of file rpmdb.c.

#define PBM_FREE      _free(s);
 

Definition at line 80 of file rpmdb.c.

Referenced by cleanOSE(), poptFreeContext(), poptResetContext(), and rpmdbClose().

#define PBM_ISSET d,
     ((__PBM_BITS (s)[__PBM_IX (d)] & __PBM_MASK (d)) != 0)
 

Definition at line 83 of file rpmdb.c.

Referenced by findNextArg(), poptGetNextOpt(), poptStrippedArgv(), and rpmdbNextIterator().

#define PBM_SET d,
     (__PBM_BITS (s)[__PBM_IX (d)] |= __PBM_MASK (d))
 

Definition at line 81 of file rpmdb.c.

Referenced by findNextArg(), poptStripArg(), and rpmdbNextIterator().


Typedef Documentation

typedef unsigned int __pbm_bits
 

Definition at line 68 of file rpmdb.c.

Referenced by PBM_REALLOC().

typedef struct miRE_s * miRE
 


Function Documentation

int blockSignals rpmdb    db,
sigset_t *    oldMask
[static]
 

Block all signals, returning previous signal mask.

Definition at line 814 of file rpmdb.c.

References sigtbl_s::active, satbl, and sigtbl_s::signum.

Referenced by miFreeHeader(), rpmdbAdd(), and rpmdbRemove().

int dbiAppendSet dbiIndexSet    set,
void *    recs,
int    nrecs,
size_t    recsize,
int    sortset
[static]
 

Append element(s) to set of index database items.

Parameters:
set  set of index database items
recs  array of items to append to set
nrecs  number of items
recsize  size of an array item
sortset  should resulting set be sorted?
Returns:
0 success, 1 failure (bad args)

Definition at line 530 of file rpmdb.c.

References _dbiIndexSet::count, hdrNumCmp(), _dbiIndexSet::recs, and xrealloc().

Referenced by rpmdbAdd(), rpmdbAppendIterator(), rpmdbFindByFile(), and rpmdbFindFpList().

rpmRC dbiFindByLabel dbiIndex    dbi,
DBC *    dbcursor,
DBT *    key,
DBT *    data,
char *    arg,
dbiIndexSet   matches
[static]
 

Lookup by name, name-version, and finally by name-version-release.

Both version and release can be patterns.

Todo:
Name must be an exact match, as name is a db key.
Parameters:
dbi  index database handle (always RPMTAG_NAME)
dbcursor  index database cursor
key  search key/length/flags
data  search data/length/flags
arg  name[-version[-release]] string
Return values:
matches  set of header instances that match
Returns:
RPMRC_OK on match, RPMRC_NOMATCH or RPMRC_FAIL

Definition at line 1532 of file rpmdb.c.

References alloca(), dbiFindMatches(), dbiFreeIndexSet(), rpmRC, RPMRC_NOTFOUND, and stpcpy().

Referenced by rpmdbInitIterator().

rpmRC dbiFindMatches dbiIndex    dbi,
DBC *    dbcursor,
DBT *    key,
DBT *    data,
char *    name,
char *    version,
char *    release,
dbiIndexSet   matches
[static]
 

Attempt partial matches on name[-version[-release]] strings.

Parameters:
dbi  index database handle (always RPMTAG_NAME)
dbcursor  index database cursor
key  search key/length/flags
data  search data/length/flags
name  package name
version  package version (can be a pattern)
release  package release (can be a pattern)
Return values:
matches  set of header instances that match
Returns:
RPMRC_OK on match, RPMRC_NOMATCH or RPMRC_FAIL

Definition at line 1432 of file rpmdb.c.

References _, _dbiIndex::dbi_rpmdb, _dbiIndex::dbi_rpmtag, dbiFreeIndexSet(), dbiGet(), dbiIndexRecordOffset(), dbiIndexSetCount(), dbt2set(), rpmdbFreeIterator(), RPMDBI_PACKAGES, rpmdbInitIterator(), rpmdbNextIterator(), rpmdbSetIteratorRE(), RPMERR_DBGETINDEX, rpmError, RPMMIRE_DEFAULT, rpmRC, RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, RPMTAG_RELEASE, and RPMTAG_VERSION.

Referenced by dbiFindByLabel().

dbiIndexItem dbiIndexNewItem unsigned int    hdrNum,
unsigned int    tagNum
[static]
 

Create and initialize item for index database set.

Parameters:
hdrNum  header instance in db
tagNum  tag index in header
Returns:
new item

Definition at line 358 of file rpmdb.c.

References _dbiIndexItem::hdrNum, _dbiIndexItem::tagNum, and xcalloc().

Referenced by rpmdbAdd(), rpmdbFindByFile(), and rpmdbRemove().

int dbiPruneSet dbiIndexSet    set,
void *    recs,
int    nrecs,
size_t    recsize,
int    sorted
[static]
 

Remove element(s) from set of index database items.

Parameters:
set  set of index database items
recs  array of items to remove from set
nrecs  number of items
recsize  size of an array item
sorted  array is already sorted?
Returns:
0 success, 1 failure (no items found)

Definition at line 569 of file rpmdb.c.

References _dbiIndexSet::count, hdrNumCmp(), and _dbiIndexSet::recs.

Referenced by rpmdbPruneIterator(), and rpmdbRemove().

void dbiTagsInit void    [static]
 

Initialize database (index, tag) tuple from configuration.

Definition at line 173 of file rpmdb.c.

References _, _free(), dbiTags, dbiTagsMax, dbiTagToDbix(), RPMDBI_PACKAGES, rpmExpand(), RPMMESS_WARNING, rpmMessage, tagValue(), xcalloc(), xisspace(), xrealloc(), and xstrdup().

Referenced by openDatabase().

int dbiTagToDbix int    rpmtag [static]
 

Return dbi index used for rpm tag.

Parameters:
rpmtag  rpm header tag
Returns:
dbi index, -1 on error

Definition at line 155 of file rpmdb.c.

References dbiTags, and dbiTagsMax.

Referenced by dbiOpen(), and dbiTagsInit().

int dbt2set dbiIndex    dbi,
DBT *    data,
dbiIndexSet   setp
[static]
 

Convert retrieved data to index set.

Parameters:
dbi  index database handle
data  retrieved data
Return values:
setp  (malloc'ed) index set
Returns:
0 on success

Definition at line 385 of file rpmdb.c.

References _DBSWAP, _dbiIndexSet::count, _dbiIndex::dbi_jlen, dbiByteSwapped(), _dbiIndexItem::fpNum, _dbiIndexItem::hdrNum, _dbiIndexSet::recs, _dbiIndexItem::tagNum, _dbswap::ui, and xmalloc().

Referenced by dbiFindMatches(), rpmdbAdd(), rpmdbCountPackages(), rpmdbFindByFile(), rpmdbGrowIterator(), rpmdbInitIterator(), and rpmdbRemove().

int disableSignals void    [static]
 

Disable all signal handlers.

Definition at line 791 of file rpmdb.c.

References sigtbl_s::active, sigtbl_s::oact, satbl, and sigtbl_s::signum.

Referenced by rpmdbClose().

int enableSignals void    [static]
 

Enable all signal handlers.

Definition at line 713 of file rpmdb.c.

References sigtbl_s::active, caught, sigtbl_s::handler, sigtbl_s::oact, satbl, and sigtbl_s::signum.

Referenced by openDatabase().

void handler int    signum [static]
 

Definition at line 693 of file rpmdb.c.

References sigtbl_s::active, caught, satbl, and sigtbl_s::signum.

int hdrNumCmp void *    one,
void *    two
[static]
 

Definition at line 514 of file rpmdb.c.

Referenced by dbiAppendSet(), dbiPruneSet(), and rpmdbSortIterator().

int miFreeHeader rpmdbMatchIterator    mi,
dbiIndex    dbi
[static]
 

Rewrite a header into packages (if necessary) and free the header.

Note: this is called from a markReplacedFiles iteration, and *must* preserve the "join key" (i.e. offset) for the header.

Parameters:
mi  database iterator
dbi  index database handle
Returns:
0 on success

Definition at line 1628 of file rpmdb.c.

References _, _free(), blockSignals(), _dbiIndex::dbi_rpmdb, _dbiIndex::dbi_rpmtag, dbiPut(), dbiSync(), HEADER_MAGIC_NO, headerFree(), headerSizeof(), headerUnload(), _rpmdbMatchIterator::mi_data, _rpmdbMatchIterator::mi_dbc, _rpmdbMatchIterator::mi_h, _rpmdbMatchIterator::mi_hdrchk, _rpmdbMatchIterator::mi_key, _rpmdbMatchIterator::mi_modified, _rpmdbMatchIterator::mi_prevoffset, _rpmdbMatchIterator::mi_ts, RPMERR_DBPUTINDEX, rpmError, RPMMESS_DEBUG, RPMMESS_ERROR, rpmMessage, rpmRC, RPMRC_FAIL, RPMRC_NOTFOUND, and unblockSignals().

Referenced by rpmdbFreeIterator(), and rpmdbNextIterator().

int mireCmp void *    a,
void *    b
[static]
 

Compare iterator selectors by rpm tag (qsort/bsearch).

Parameters:
a  1st iterator selector
b  2nd iterator selector
Returns:
result of comparison

Definition at line 1799 of file rpmdb.c.

References miRE_s::tag.

Referenced by rpmdbSetIteratorRE().

char* mireDup rpmTag    tag,
rpmMireMode   modep,
char *    pattern
[static]
 

Copy pattern, escaping for appropriate mode.

Parameters:
tag  rpm tag
Return values:
modep  type of pattern match
Parameters:
pattern  pattern to duplicate
Returns:
duplicated pattern

Definition at line 1813 of file rpmdb.c.

References RPMMIRE_DEFAULT, RPMMIRE_GLOB, RPMMIRE_REGEX, RPMMIRE_STRCMP, rpmMireMode, rpmTag, RPMTAG_BASENAMES, RPMTAG_DIRNAMES, xmalloc(), and xstrdup().

Referenced by rpmdbSetIteratorRE().

int miregexec miRE    mire,
char *    val
[static]
 

Return pattern match.

Parameters:
mire  match iterator regex
val  value to match
Returns:
0 if pattern matches, >0 on nomatch, <0 on error

Definition at line 1756 of file rpmdb.c.

References miRE_s::eflags, miRE_s::fnflags, miRE_s::mode, miRE_s::pattern, miRE_s::preg, RPMERR_REGEXEC, rpmError, RPMMIRE_DEFAULT, RPMMIRE_GLOB, RPMMIRE_REGEX, and RPMMIRE_STRCMP.

Referenced by mireSkip().

int mireSkip rpmdbMatchIterator    mi [static]
 

Return iterator selector match.

Parameters:
mi  rpm database iterator
Returns:
1 if header should be skipped

Definition at line 2016 of file rpmdb.c.

References argv, HFD_t, HGE_t, int_16, int_32, int_8, _rpmdbMatchIterator::mi_h, _rpmdbMatchIterator::mi_nre, _rpmdbMatchIterator::mi_re, miregexec(), miRE_s::notmatch, RPM_BIN_TYPE, RPM_CHAR_TYPE, RPM_I18NSTRING_TYPE, RPM_INT16_TYPE, RPM_INT32_TYPE, RPM_INT8_TYPE, RPM_NULL_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, RPMTAG_EPOCH, rpmTagType, and miRE_s::tag.

Referenced by rpmdbNextIterator().

rpmdb newRpmdb char *    root,
char *    home,
int    mode,
int    perms,
int    flags
[static]
 

Definition at line 975 of file rpmdb.c.

References _, _DB_ERRPFX, _db_filter_dups, _DB_HOME, _DB_ROOT, rpmdb_s::_dbi, _free(), rpmdb_s::db_errpfx, rpmdb_s::db_filter_dups, rpmdb_s::db_flags, rpmdb_s::db_home, rpmdb_s::db_mode, rpmdb_s::db_ndbi, rpmdb_s::db_perms, rpmdb_s::db_remove_env, rpmdb_s::db_root, dbiTagsMax, rpmdb_s::nrefs, rpmdbLink, RPMERR_DBOPEN, rpmError, rpmExpand(), rpmExpandNumeric(), rpmGetPath(), and xcalloc().

Referenced by openDatabase().

unsigned char nibble char    c [inline, static]
 

Convert hex to binary nibble.

Parameters:
c  hex character
Returns:
binary nibble

Definition at line 121 of file rpmdb.c.

Referenced by rpmdbAdd(), rpmdbRemove(), rpmfiNew(), rpmQueryVerify(), and verifyPGPSignature().

int openDatabase char *    prefix,
char *    dbpath,
int    _dbapi,
rpmdb   dbp,
int    mode,
int    perms,
int    flags
[static]
 

Definition at line 1027 of file rpmdb.c.

References rpmdb_s::db_api, rpmdb_s::db_next, dbiOpen(), dbiTags, dbiTagsInit(), dbiTagsMax, enableSignals(), newRpmdb(), RPMDB_FLAG_JUSTCHECK, RPMDB_FLAG_MINIMAL, rpmdbClose(), RPMDBI_ADDED, RPMDBI_AVAILABLE, RPMDBI_DEPENDS, RPMDBI_PACKAGES, RPMDBI_REMOVED, and RPMTAG_NAME.

Referenced by rpmdbInit(), rpmdbOpen(), rpmdbRebuild(), and rpmdbVerify().

pbm_set* PBM_REALLOC pbm_set **    sp,
int *    odp,
int    nd
[inline, static]
 

Reallocate a bit map.

Return values:
sp  address of bit map pointer
odp  no. of bits in map
Parameters:
nd  desired no. of bits

Definition at line 94 of file rpmdb.c.

References __PBM_BITS, __pbm_bits, __PBM_IX, and xrealloc().

Referenced by rpmdbNextIterator().

int rpmdbCloseDBI rpmdb    db,
int    rpmtag
 

Close a single database index.

Parameters:
db  rpm database
rpmtag  rpm tag
Returns:
0 on success

Definition at line 876 of file rpmdb.c.

References rpmdb_s::_dbi, dbiClose(), dbiTags, and dbiTagsMax.

Referenced by rpmtsCheck().

int rpmdbFindByFile rpmdb    db,
char *    filespec,
DBT *    key,
DBT *    data,
dbiIndexSet   matches
[static]
 

Find file matches in database.

Parameters:
db  rpm database
filespec 
key 
data 
matches 
Returns:
0 on success, 1 on not found, -2 on error

Definition at line 1220 of file rpmdb.c.

References _, _free(), alloca(), _dbiIndexSet::count, _dbiIndex::dbi_rpmtag, _dbiIndex::dbi_txnid, dbiAppendSet(), dbiCclose(), dbiCopen(), dbiFreeIndexSet(), dbiGet(), dbiIndexNewItem(), dbiIndexRecordFileNumber(), dbiIndexRecordOffset(), dbiOpen(), dbt2set(), FP_EQUAL, fpCacheCreate(), fpCacheFree(), fpLookup(), _dbiIndexItem::hdrNum, headerFree(), headerLink(), HFD_t, HGE_t, int_32, rpmdbFreeIterator(), RPMDBI_PACKAGES, rpmdbInitIterator(), rpmdbNextIterator(), RPMERR_DBGETINDEX, rpmError, RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, rpmTagType, _dbiIndexItem::tagNum, and xcalloc().

Referenced by rpmdbInitIterator().

int rpmdbFindFpList rpmdb    db,
fingerPrint   fpList,
dbiIndexSet   matchList,
int    numItems
 

Find fingerprint matches in database.

Parameters:
db  rpm database
fpList  fingerprint array
Return values:
matchList  returned fingerprint matches
Parameters:
numItems  number of fingerprint items
Returns:
0 always

Definition at line 3342 of file rpmdb.c.

References _free(), fingerPrint_s::baseName, _dbiIndexSet::count, dbiAppendSet(), FP_EQUAL, fpCacheCreate(), fpCacheFree(), fpLookupList(), _dbiIndexItem::fpNum, _dbiIndexItem::hdrNum, HFD_t, HGE_t, int_32, _rpmdbMatchIterator::mi_data, _rpmdbMatchIterator::mi_key, _rpmdbMatchIterator::mi_set, _rpmdbMatchIterator::mi_setx, _dbiIndexSet::recs, rpmdbFreeIterator(), rpmdbGetIteratorCount(), rpmdbGrowIterator(), rpmdbInitIterator(), rpmdbNextIterator(), rpmdbSortIterator(), RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, rpmTagType, skipDir(), _dbiIndexItem::tagNum, and xcalloc().

Referenced by rpmtsRun().

int rpmdbGrowIterator rpmdbMatchIterator    mi,
int    fpNum
[static]
 

Definition at line 2372 of file rpmdb.c.

References _, _dbiIndexSet::count, _dbiIndex::dbi_rpmtag, _dbiIndex::dbi_txnid, dbiCclose(), dbiCopen(), dbiFreeIndexSet(), dbiGet(), dbiOpen(), dbt2set(), _dbiIndexItem::fpNum, _rpmdbMatchIterator::mi_data, _rpmdbMatchIterator::mi_db, _rpmdbMatchIterator::mi_dbc, _rpmdbMatchIterator::mi_key, _rpmdbMatchIterator::mi_rpmtag, _rpmdbMatchIterator::mi_set, _dbiIndexSet::recs, RPMERR_DBGETINDEX, rpmError, and xrealloc().

Referenced by rpmdbFindFpList().

int rpmdbMoveDatabase char *    prefix,
char *    olddbpath,
int    _olddbapi,
char *    newdbpath,
int    _newdbapi
[static]
 

Definition at line 3559 of file rpmdb.c.

References _, alloca(), dbiTags, dbiTagsMax, rpmCleanPath(), RPMDBI_ADDED, RPMDBI_AVAILABLE, RPMDBI_DEPENDS, RPMDBI_REMOVED, rpmdbRemoveDatabase(), rpmioFileExists(), RPMMESS_DEBUG, rpmMessage, and tagName().

Referenced by rpmdbRebuild().

int rpmdbRemoveDatabase char *    prefix,
char *    dbpath,
int    _dbapi
[static]
 

Definition at line 3503 of file rpmdb.c.

References alloca(), dbiTags, dbiTagsMax, rpmCleanPath(), rpmioFileExists(), and tagName().

Referenced by rpmdbMoveDatabase(), and rpmdbRebuild().

void rpmdbSortIterator rpmdbMatchIterator    mi [static]
 

Definition at line 2350 of file rpmdb.c.

References _dbiIndexSet::count, hdrNumCmp(), mergesort(), _rpmdbMatchIterator::mi_set, _rpmdbMatchIterator::mi_sorted, and _dbiIndexSet::recs.

Referenced by rpmdbFindFpList().

int rpmioFileExists char *    urlfn [static]
 

Check if file esists using stat(2).

Parameters:
urlfn  file name (may be URL)
Returns:
1 if file exists, 0 if not

Definition at line 3470 of file rpmdb.c.

References Stat(), URL_IS_DASH, URL_IS_FTP, URL_IS_HTTP, URL_IS_PATH, URL_IS_UNKNOWN, urlPath(), and urltype.

Referenced by rpmdbMoveDatabase(), and rpmdbRemoveDatabase().

int set2dbt dbiIndex    dbi,
DBT *    data,
dbiIndexSet    set
[static]
 

Convert index set to database representation.

Parameters:
dbi  index database handle
data  retrieved data
set  index set
Returns:
0 on success

Definition at line 454 of file rpmdb.c.

References _DBSWAP, _dbiIndexSet::count, _dbiIndex::dbi_jlen, dbiByteSwapped(), _dbiIndexItem::hdrNum, _dbiIndexSet::recs, _dbiIndexItem::tagNum, _dbswap::ui, and xmalloc().

Referenced by rpmdbAdd(), and rpmdbRemove().

int skipDir char *    dn [static]
 

Definition at line 3323 of file rpmdb.c.

References skipDir_s::dn, skipDir_s::dnlen, and skipDirs.

Referenced by rpmdbFindFpList().

int unblockSignals rpmdb    db,
sigset_t *    oldMask
[static]
 

Restore signal mask.

Definition at line 835 of file rpmdb.c.

References rpmdbCheckSignals().

Referenced by miFreeHeader(), rpmdbAdd(), and rpmdbRemove().

rpmdb XrpmdbLink rpmdb    db,
char *    msg,
char *    fn,
unsigned    ln
 

Todo:
Remove debugging entry from the ABI.

Definition at line 1137 of file rpmdb.c.

References rpmdb_s::nrefs.

rpmdb XrpmdbUnlink rpmdb    db,
char *    msg,
char *    fn,
unsigned    ln
 

Todo:
Remove debugging entry from the ABI.

Definition at line 1127 of file rpmdb.c.

References rpmdb_s::nrefs.


Variable Documentation

int _db_filter_dups = 0 [static]
 

Definition at line 55 of file rpmdb.c.

Referenced by newRpmdb(), and rpmdbRebuild().

int _rebuildinprogress = 0 [static]
 

Definition at line 53 of file rpmdb.c.

Referenced by dbiOpen(), and rpmdbRebuild().

int _rpmdb_debug = 0
 

Definition at line 10 of file rpmdb.c.

sigset_t caught [static]
 

Definition at line 666 of file rpmdb.c.

Referenced by enableSignals(), handler(), and rpmdbCheckSignals().

struct _dbiVec db3vec
 

Definition at line 232 of file rpmdb.c.

int dbiTagsMax = 0
 

Definition at line 64 of file rpmdb.c.

Referenced by dbiOpen(), dbiTagsInit(), dbiTagToDbix(), newRpmdb(), openDatabase(), rpmdbAdd(), rpmdbCloseDBI(), rpmdbMoveDatabase(), rpmdbOpenAll(), rpmdbRemove(), and rpmdbRemoveDatabase().

struct rpmdb_s dbTemplate [static]
 

Initial value:

 {
     "/" ,       "%{_dbpath}" ,  0 ,  0 ,  0644 ,
     -1 ,        "rpmdb" 
}

Definition at line 854 of file rpmdb.c.

struct _dbiVec* mydbvecs[] [static]
 

Initial value:

 {
     NULL ,  NULL ,  NULL ,  &db3vec , NULL
}

Definition at line 239 of file rpmdb.c.

rpmdb rpmdbRock [static]
 

Definition at line 738 of file rpmdb.c.

rpmdbMatchIterator rpmmiRock [static]
 

Definition at line 741 of file rpmdb.c.

struct sigtbl_s satbl[] [static]
 

Referenced by blockSignals(), disableSignals(), enableSignals(), handler(), and rpmdbCheckSignals().

struct skipDir_s skipDirs[] [static]
 

Referenced by skipDir().


Generated on Sun Oct 26 13:02:07 2003 for rpm by doxygen1.2.18