Database API.
Collaboration diagram for Database API.:

## Files

file | rpmdb.h

| Access RPM indices using Berkeley DB interface(s).
file | rpmlib.h

| In Memoriam: Steve Taylor <staylor@redhat.com> was here, now he's not.

## Functions

rpmop | rpmdbOp (rpmdb db, rpmdbOpX opx)
| Retrieve operation timestamp from rpm database.
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.
unsigned int | rpmdbGetIteratorFileNum (rpmdbMatchIterator mi)
int | rpmdbAppendIterator (rpmdbMatchIterator mi, const int *hdrNums, int nHdrNums)
| Append items to set of package instances to iterate.
int | rpmdbSetIteratorRE (rpmdbMatchIterator mi, rpmTagVal 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, char **msg))
| Modify iterator to verify retrieved header blobs.
rpmdbMatchIterator | rpmdbInitIterator (rpmdb db, rpmDbiTagVal rpmtag, const void *keyp, size_t keylen)
| Return database iterator.
Header | rpmdbNextIterator (rpmdbMatchIterator mi)
| Return next package header from iteration.
int | rpmdbCheckSignals (void)
| Check for and exit on termination signals.
int | rpmdbCheckTerminate (int terminate)
| Check rpmdb signal handler for trapped signal and/or requested exit, clean up any open iterators and databases on termination condition.
rpmdbMatchIterator | rpmdbFreeIterator (rpmdbMatchIterator mi)
| Destroy rpm database iterator.
rpmdbIndexIterator | rpmdbIndexIteratorInit (rpmdb db, rpmDbiTag rpmtag)
| Get an iterator for an index.
int | rpmdbIndexIteratorNext (rpmdbIndexIterator ii, const void **key, size_t *keylen)
| Get the next key - Warning! Keys are not zero terminated! Binary tags may even contain zero bytes.
unsigned int | rpmdbIndexIteratorNumPkgs (rpmdbIndexIterator ii)
| Get number of entries for current key.
unsigned int | rpmdbIndexIteratorPkgOffset (rpmdbIndexIterator ii, unsigned int nr)
| Get package offset of entry.
unsigned int | rpmdbIndexIteratorTagNum (rpmdbIndexIterator ii, unsigned int nr)
| Get tag number of entry.
rpmdbIndexIterator | rpmdbIndexIteratorFree (rpmdbIndexIterator ii)
| Free index iterator.

## Function Documentation

int rpmdbAppendIterator | ( | rpmdbMatchIterator | mi,
|  | const int * | hdrNums,
|  | int | nHdrNums
| ) |  |

Append items to set of package instances to iterate.

Parameters:

  mi | rpm database iterator
  hdrNums | array of package instances
  nHdrNums | number of elements in array

Returns:
  0 on success, 1 on failure (bad args)

int rpmdbCheckSignals | ( | void |  | ) |

Check for and exit on termination signals.

int rpmdbCheckTerminate | ( | int | terminate | ) |

Check rpmdb signal handler for trapped signal and/or requested exit, clean up any open iterators and databases on termination condition.

On non-zero exit any open references to rpmdb are invalid and cannot be accessed anymore, calling process should terminate immediately.

Parameters:

  terminate | 0 to only check for signals, 1 to terminate anyway

Returns:
  0 to continue, 1 if termination cleanup was done.

int rpmdbCountPackages | ( | rpmdb | db,
|  | const char * | name
| ) |  |

Return number of instances of package in rpm database.

Parameters:

  db | rpm database
  name | rpm package name

Returns:
  number of instances

rpmdbMatchIterator rpmdbFreeIterator | ( | rpmdbMatchIterator | mi | ) |

Destroy rpm database iterator.

Parameters:

  mi | rpm database iterator

Returns:
  NULL always

int rpmdbGetIteratorCount | ( | rpmdbMatchIterator | mi | ) |

Return number of elements in rpm database iterator.

Parameters:

  mi | rpm database iterator

Returns:
  number of elements

unsigned int rpmdbGetIteratorFileNum | ( | rpmdbMatchIterator | mi | ) |

unsigned int rpmdbGetIteratorOffset | ( | rpmdbMatchIterator | mi | ) |

Return header join key for current position of rpm database iterator.

Parameters:

  mi | rpm database iterator

Returns:
  current header join key

rpmdbIndexIterator rpmdbIndexIteratorFree | ( | rpmdbIndexIterator | ii | ) |

Free index iterator.

Parameters:

  ii | index iterator return NULL

rpmdbIndexIterator rpmdbIndexIteratorInit | ( | rpmdb | db,
|  | rpmDbiTag | rpmtag
| ) |  |

Get an iterator for an index.

Parameters:

  db | rpm database
  rpmtag | the index to iterate over

Returns:
  the index iterator

int rpmdbIndexIteratorNext | ( | rpmdbIndexIterator | ii,
|  | const void ** | key,
|  | size_t * | keylen
| ) |  |

Get the next key - Warning! Keys are not zero terminated! Binary tags may even contain zero bytes.

Parameters:

  ii | index iterator
  key | adress to save the pointer to the key
  keylen | adress to save the length of the key to

Returns:
  0 on success; != 0 on error or end of index

unsigned int rpmdbIndexIteratorNumPkgs | ( | rpmdbIndexIterator | ii | ) |

Get number of entries for current key.

Parameters:

  ii | index iterator

Returns:
  number of entries. 0 on error.

unsigned int rpmdbIndexIteratorPkgOffset | ( | rpmdbIndexIterator | ii,
|  | unsigned int | nr
| ) |  |

Get package offset of entry.

Parameters:

  ii | index iterator
  nr | number of the entry

Returns:
  db offset of pkg

unsigned int rpmdbIndexIteratorTagNum | ( | rpmdbIndexIterator | ii,
|  | unsigned int | nr
| ) |  |

Get tag number of entry.

Parameters:

  ii | index iterator
  nr | number of the entry

Returns:
  number of tag within the package

rpmdbMatchIterator rpmdbInitIterator | ( | rpmdb | db,
|  | rpmDbiTagVal | rpmtag,
|  | const void * | keyp,
|  | size_t | keylen
| ) |  |

Return database iterator.

Parameters:

  db | rpm database
  rpmtag | database index tag
  keyp | key data (NULL for sequential access)
  keylen | key data length (0 will use strlen(keyp))

Returns:
  NULL on failure

Header rpmdbNextIterator | ( | rpmdbMatchIterator | mi | ) |

Return next package header from iteration.

Parameters:

  mi | rpm database iterator

Returns:
  NULL on end of iteration.

rpmop rpmdbOp | ( | rpmdb | db,
|  | rpmdbOpX | opx
| ) |  |

Retrieve operation timestamp from rpm database.

Parameters:

  db | rpm database
  opx | operation timestamp index

Returns:
  pointer to operation timestamp.

int rpmdbOpenAll | ( | rpmdb | db | ) |

Open all database indices.

Parameters:

  db | rpm database

Returns:
  0 on success

int rpmdbSetHdrChk | ( | rpmdbMatchIterator | mi,
|  | rpmts | ts,
|  | rpmRC(*)(rpmts ts, const void *uh, size_t uc, char **msg) | hdrchk
| ) |  |

Modify iterator to verify retrieved header blobs.

Parameters:

  mi | rpm database iterator
  ts | transaction set
  (*hdrchk) | headerCheck() vector

Returns:
  0 always

int rpmdbSetIteratorModified | ( | rpmdbMatchIterator | mi,
|  | int | modified
| ) |  |

Modify iterator to mark header for lazy write on release.

Parameters:

  mi | rpm database iterator
  modified | new value of modified

Returns:
  previous value

int rpmdbSetIteratorRE | ( | rpmdbMatchIterator | mi,
|  | rpmTagVal | tag,
|  | rpmMireMode | mode,
|  | const char * | pattern
| ) |  |

Add pattern to iterator selector.

Parameters:

  mi | rpm database iterator
  tag | rpm tag
  mode | type of pattern match
  pattern | pattern to match

Returns:
  0 on success

int rpmdbSetIteratorRewrite | ( | rpmdbMatchIterator | mi,
|  | int | rewrite
| ) |  |

Prepare iterator for lazy writes.

Note:
  Must be called before rpmdbNextIterator() with CDB model database.

Parameters:

  mi | rpm database iterator
  rewrite | new value of rewrite

Returns:
  previous value