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_s * | miRE

## Functions

pbm_set * | PBM_REALLOC (pbm_set **sp, int *odp, int nd)
| Reallocate a bit map. More...
unsigned char | nibble (char c)
| Convert hex to binary nibble. More...
int | dbiTagToDbix (int rpmtag)
| Return dbi index used for rpm tag. More...
void | dbiTagsInit (void)
| Initialize database (index, tag) tuple from configuration. More...
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. More...
int | dbt2set (dbiIndex dbi, DBT *data, dbiIndexSet *setp)
| Convert retrieved data to index set. More...
int | set2dbt (dbiIndex dbi, DBT *data, dbiIndexSet set)
| Convert index set to database representation. More...
int | hdrNumCmp (const void *one, const void *two)
int | dbiAppendSet (dbiIndexSet set, const void *recs, int nrecs, size_t recsize, int sortset)
| Append element(s) to set of index database items. More...
int | dbiPruneSet (dbiIndexSet set, void *recs, int nrecs, size_t recsize, int sorted)
| Remove element(s) from set of index database items. More...
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. More...
int | rpmdbCheckSignals (void)
int | disableSignals (void)
| Disable all signal handlers. More...
int | blockSignals (rpmdb db, sigset_t *oldMask)
| Block all signals, returning previous signal mask. More...
int | unblockSignals (rpmdb db, sigset_t *oldMask)
| Restore signal mask. More...
int | rpmdbOpenAll (rpmdb db)
int | rpmdbCloseDBI (rpmdb db, int rpmtag)
| Close a single database index. More...
int | rpmdbClose (rpmdb db)
int | rpmdbSync (rpmdb db)
rpmdb | newRpmdb (const char *root, const char *home, int mode, int perms, int flags)
int | openDatabase (const char *prefix, const char *dbpath, int _dbapi, rpmdb *dbp, int mode, int perms, int flags)
rpmdb | XrpmdbUnlink (rpmdb db, const char *msg, const char *fn, unsigned ln)
rpmdb | XrpmdbLink (rpmdb db, const char *msg, const char *fn, unsigned ln)
int | rpmdbOpen (const char *prefix, rpmdb *dbp, int mode, int perms)
int | rpmdbInit (const char *prefix, int perms)
int | rpmdbVerify (const char *prefix)
int | rpmdbFindByFile (rpmdb db, const char *filespec, DBT *key, DBT *data, dbiIndexSet *matches)
| Find file matches in database. More...
int | rpmdbCountPackages (rpmdb db, const char *name)
rpmRC | dbiFindMatches (dbiIndex dbi, DBC *dbcursor, DBT *key, DBT *data, const char *name, const char *version, const char *release, dbiIndexSet *matches)
| Attempt partial matches on name[-version[-release]] strings. More...
rpmRC | dbiFindByLabel (dbiIndex dbi, DBC *dbcursor, DBT *key, DBT *data, const char *arg, dbiIndexSet *matches)
| Lookup by name, name-version, and finally by name-version-release. More...
int | miFreeHeader (rpmdbMatchIterator mi, dbiIndex dbi)
| Rewrite a header into packages (if necessary) and free the header. More...
rpmdbMatchIterator | rpmdbFreeIterator (rpmdbMatchIterator mi)
unsigned int | rpmdbGetIteratorOffset (rpmdbMatchIterator mi)
unsigned int | rpmdbGetIteratorFileNum (rpmdbMatchIterator mi)
int | rpmdbGetIteratorCount (rpmdbMatchIterator mi)
int | miregexec (miRE mire, const char *val)
| Return pattern match. More...
int | mireCmp (const void *a, const void *b)
| Compare iterator selectors by rpm tag (qsort/bsearch). More...
char * | mireDup (rpmTag tag, rpmMireMode *modep, const char *pattern)
| Copy pattern, escaping for appropriate mode. More...
int | rpmdbSetIteratorRE (rpmdbMatchIterator mi, rpmTag tag, rpmMireMode mode, const char *pattern)
int | mireSkip (const rpmdbMatchIterator mi)
| Return iterator selector match. More...
int | rpmdbSetIteratorRewrite (rpmdbMatchIterator mi, int rewrite)
int | rpmdbSetIteratorModified (rpmdbMatchIterator mi, int modified)
int | rpmdbSetHdrChk (rpmdbMatchIterator mi, rpmts ts, rpmRC(*hdrchk)(rpmts ts, const void *uh, size_t uc, const 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, const int *hdrNums, int nHdrNums)
rpmdbMatchIterator | rpmdbInitIterator (rpmdb db, rpmTag rpmtag, const void *keyp, size_t keylen)
int | rpmdbRemove (rpmdb db, int rid, unsigned int hdrNum, rpmts ts, rpmRC(*hdrchk)(rpmts ts, const void *uh, size_t uc, const char **msg))
int | rpmdbAdd (rpmdb db, int iid, Header h, rpmts ts, rpmRC(*hdrchk)(rpmts ts, const void *uh, size_t uc, const char **msg))
int | skipDir (const char *dn)
int | rpmdbFindFpList (rpmdb db, fingerPrint *fpList, dbiIndexSet *matchList, int numItems)
int | rpmioFileExists (const char *urlfn)
| Check if file esists using stat(2). More...
int | rpmdbRemoveDatabase (const char *prefix, const char *dbpath, int _dbapi)
int | rpmdbMoveDatabase (const char *prefix, const char *olddbpath, int _olddbapi, const char *newdbpath, int _newdbapi)
int | rpmdbRebuild (const char *prefix, rpmts ts, rpmRC(*hdrchk)(rpmts ts, const void *uh, size_t uc, const char **msg))

## Variables

int | _rpmdb_debug = 0
int | _rebuildinprogress = 0
int | _db_filter_dups = 0
int * | dbiTags = NULL
int | dbiTagsMax = 0
_dbiVec | db3vec
_dbiVec * | mydbvecs []
sigset_t | caught
sigtbl_s | satbl []
rpmdb | rpmdbRock
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 |  | ) | ((d) / __PBM_NBITS)

| Definition at line 71 of file rpmdb.c. Referenced by PBM_REALLOC.

#define __PBM_MASK | ( | d |  | ) | ((__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 786 of file rpmdb.c. Referenced by newRpmdb.

#define _DB_FLAGS 0

| Definition at line 781 of file rpmdb.c.

#define _DB_HOME "%{_dbpath}"

| Definition at line 780 of file rpmdb.c. Referenced by newRpmdb.

#define _DB_MAJOR -1

| Definition at line 785 of file rpmdb.c.

#define _DB_MODE 0

| Definition at line 782 of file rpmdb.c.

#define _DB_PERMS 0644

| Definition at line 783 of file rpmdb.c.

#define _DB_ROOT "/"

| Definition at line 779 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 3267 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 | ( | d |  | ) | 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,
|  | s |  | ) | (__PBM_BITS (s)[__PBM_IX (d)] &= ~__PBM_MASK (d))

| Definition at line 82 of file rpmdb.c.

#define PBM_FREE | ( | s |  | ) | _free(s);

| Definition at line 80 of file rpmdb.c. Referenced by cleanOSE, poptFreeContext, poptResetContext, and rpmdbClose.

#define PBM_ISSET | ( | d,
|  | s |  | ) | ((__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,
|  | s |  | ) | (__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 750 of file rpmdb.c. References sigtbl_s::active, satbl, and sigtbl_s::signum. Referenced by miFreeHeader, rpmdbAdd, and rpmdbRemove.

int dbiAppendSet | ( | dbiIndexSet | set,
|  | const 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 hdrNumCmp, and xrealloc.

Referenced by rpmdbAdd, rpmdbAppendIterator, rpmdbFindByFile, and rpmdbFindFpList.

rpmRC dbiFindByLabel | ( | dbiIndex | dbi,
|  | DBC * | dbcursor,
|  | DBT * | key,
|  | DBT * | data,
|  | const 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 1468 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,
|  | const char * | name,
|  | const char * | version,
|  | const 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 1368 of file rpmdb.c.

References _, dbiFreeIndexSet, dbiGet, dbiIndexRecordOffset, dbiIndexSetCount, dbt2set, rpmdbFreeIterator, RPMDBI_PACKAGES, rpmdbInitIterator, rpmdbNextIterator, rpmdbSetIteratorRE, 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 hdrNumCmp.

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, 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, 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 727 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 668 of file rpmdb.c. References sigtbl_s::act, sigtbl_s::active, caught, sigtbl_s::oact, satbl, and sigtbl_s::signum. Referenced by openDatabase.

void handler | ( | int | signum | ) | `[static]`

| Definition at line 648 of file rpmdb.c. References sigtbl_s::active, caught, satbl, and sigtbl_s::signum.

int hdrNumCmp | ( | const void * | one,
|  | const 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 1606 of file rpmdb.c.

References _, _free, blockSignals, dbiPut, dbiSync, HEADER_MAGIC_NO, headerFree, headerSizeof, headerUnload, rpmRC, RPMRC_FAIL, RPMRC_NOTFOUND, and unblockSignals.

Referenced by rpmdbFreeIterator, and rpmdbNextIterator.

int mireCmp | ( | const void * | a,
|  | const 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 1765 of file rpmdb.c.

References miRE_s::tag.

Referenced by rpmdbSetIteratorRE.

char* mireDup | ( | rpmTag | tag,
|  | rpmMireMode * | modep,
|  | const 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 1779 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,
|  | const 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 1722 of file rpmdb.c.

References RPMMIRE_DEFAULT, RPMMIRE_GLOB, RPMMIRE_REGEX, and RPMMIRE_STRCMP.

Referenced by mireSkip.

int mireSkip | ( | const rpmdbMatchIterator | mi | ) | `[static]`

Return iterator selector match.

Parameters:

  mi | rpm database iterator

Returns:
  1 if header should be skipped

Definition at line 1982 of file rpmdb.c.

References HFD_t, HGE_t, int_16, int_32, int_8, 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 | ( | const char * | root,
|  | const char * | home,
|  | int | mode,
|  | int | perms,
|  | int | flags
| ) | `[static]`

Definition at line 911 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, 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, rpmQueryVerify, and verifyPGPSignature.

int openDatabase | ( | const char * | prefix,
|  | const char * | dbpath,
|  | int | _dbapi,
|  | rpmdb * | dbp,
|  | int | mode,
|  | int | perms,
|  | int | flags
| ) | `[static]`

| Definition at line 963 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 812 of file rpmdb.c.

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

int rpmdbFindByFile | ( | rpmdb | db,
|  | const 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 1156 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, RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, rpmTagType, _dbiIndexItem::tagNum, and xcalloc.

Referenced by rpmdbInitIterator.

int rpmdbGrowIterator | ( | rpmdbMatchIterator | mi,
|  | int | fpNum
| ) | `[static]`

Definition at line 2338 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, and xrealloc.

Referenced by rpmdbFindFpList.

int rpmdbMoveDatabase | ( | const char * | prefix,
|  | const char * | olddbpath,
|  | int | _olddbapi,
|  | const char * | newdbpath,
|  | int | _newdbapi
| ) | `[static]`

| Definition at line 3518 of file rpmdb.c. References _, alloca, dbiTags, dbiTagsMax, rpmCleanPath, RPMDBI_ADDED, RPMDBI_AVAILABLE, RPMDBI_DEPENDS, RPMDBI_REMOVED, rpmdbRemoveDatabase, rpmioFileExists, and tagName. Referenced by rpmdbRebuild.

int rpmdbRemoveDatabase | ( | const char * | prefix,
|  | const char * | dbpath,
|  | int | _dbapi
| ) | `[static]`

| Definition at line 3462 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 2316 of file rpmdb.c. References _dbiIndexSet::count, hdrNumCmp, mergesort, _rpmdbMatchIterator::mi_set, _rpmdbMatchIterator::mi_sorted, and _dbiIndexSet::recs. Referenced by rpmdbFindFpList.

int rpmioFileExists | ( | const 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 3429 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, dbiByteSwapped, _dbswap::ui, and xmalloc.

Referenced by rpmdbAdd, and rpmdbRemove.

int skipDir | ( | const char * | dn | ) | `[static]`

| Definition at line 3282 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 771 of file rpmdb.c. References rpmdbCheckSignals. Referenced by miFreeHeader, rpmdbAdd, and rpmdbRemove.

rpmdb XrpmdbLink | ( | rpmdb | db,
|  | const char * | msg,
|  | const char * | fn,
|  | unsigned | ln
| ) |

Todo:
  Remove debugging entry from the ABI.

Definition at line 1073 of file rpmdb.c.

References rpmdb_s::nrefs.

rpmdb XrpmdbUnlink | ( | rpmdb | db,
|  | const char * | msg,
|  | const char * | fn,
|  | unsigned | ln
| ) |

Todo:
  Remove debugging entry from the ABI.

Definition at line 1063 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 622 of file rpmdb.c. Referenced by enableSignals, handler, and rpmdbCheckSignals.

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 790 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 690 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.