rpmdb.h File Reference

Access RPM indices using Berkeley DB interface(s). More...

`#include <rpm/rpmtypes.h>`
`#include <rpm/rpmsw.h>`
Include dependency graph for rpmdb.h:

Go to the source code of this file.

## Typedefs

typedef enum rpmMireMode_e | rpmMireMode
| Tag value pattern match mode. More...
typedef enum rpmdbOpX_e | rpmdbOpX
typedef enum rpmdbCtrlOp_e | rpmdbCtrlOp

## Enumerations

enum | rpmMireMode_e { RPMMIRE_DEFAULT = 0, RPMMIRE_STRCMP = 1, RPMMIRE_REGEX = 2, RPMMIRE_GLOB = 3 }
| Tag value pattern match mode. More...
enum | rpmdbOpX_e { RPMDB_OP_DBGET = 1, RPMDB_OP_DBPUT = 2, RPMDB_OP_DBDEL = 3, RPMDB_OP_MAX = 4 }
enum | rpmdbCtrlOp_e { RPMDB_CTRL_LOCK_RO = 1, RPMDB_CTRL_UNLOCK_RO = 2, RPMDB_CTRL_LOCK_RW = 3, RPMDB_CTRL_UNLOCK_RW = 4, RPMDB_CTRL_INDEXSYNC = 5 }

## Functions

rpmop | rpmdbOp (rpmdb db, rpmdbOpX opx)
| Retrieve operation timestamp from rpm database. More...
int | rpmdbOpenAll (rpmdb db)
| Open all database indices. More...
int | rpmdbCountPackages (rpmdb db, const char *name)
| Return number of instances of package in rpm database. More...
unsigned int | rpmdbGetIteratorOffset (rpmdbMatchIterator mi)
| Return header join key for current position of rpm database iterator. More...
int | rpmdbGetIteratorCount (rpmdbMatchIterator mi)
| Return number of elements in rpm database iterator. More...
unsigned int | rpmdbGetIteratorFileNum (rpmdbMatchIterator mi)
int | rpmdbAppendIterator (rpmdbMatchIterator mi, const unsigned int *hdrNums, unsigned int nHdrNums)
| Append items to set of package instances to iterate. More...
int | rpmdbSetIteratorRE (rpmdbMatchIterator mi, rpmTagVal tag, rpmMireMode mode, const char *pattern)
| Add pattern to iterator selector. More...
int | rpmdbSetIteratorRewrite (rpmdbMatchIterator mi, int rewrite)
| Prepare iterator for lazy writes. More...
int | rpmdbSetIteratorModified (rpmdbMatchIterator mi, int modified)
| Modify iterator to mark header for lazy write on release. More...
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. More...
rpmdbMatchIterator | rpmdbInitIterator (rpmdb db, rpmDbiTagVal rpmtag, const void *keyp, size_t keylen)
| Return database iterator. More...
Header | rpmdbNextIterator (rpmdbMatchIterator mi)
| Return next package header from iteration. More...
int | rpmdbCheckSignals (void)
| Check for and exit on termination signals. More...
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. More...
rpmdbMatchIterator | rpmdbFreeIterator (rpmdbMatchIterator mi)
| Destroy rpm database iterator. More...
rpmdbIndexIterator | rpmdbIndexIteratorInit (rpmdb db, rpmDbiTag rpmtag)
| Get an iterator for an index. More...
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. More...
int | rpmdbIndexIteratorNextTd (rpmdbIndexIterator ii, rpmtd keytd)
| Get the next key into a tag data container. More...
unsigned int | rpmdbIndexIteratorNumPkgs (rpmdbIndexIterator ii)
| Get number of entries for current key. More...
unsigned int | rpmdbIndexIteratorPkgOffset (rpmdbIndexIterator ii, unsigned int nr)
| Get package offset of entry. More...
unsigned int | rpmdbIndexIteratorTagNum (rpmdbIndexIterator ii, unsigned int nr)
| Get tag number of entry. More...
rpmdbIndexIterator | rpmdbIndexIteratorFree (rpmdbIndexIterator ii)
| Free index iterator. More...
int | rpmdbCtrl (rpmdb db, rpmdbCtrlOp ctrl)
| manipulate the rpm database More...

## Detailed Description

Access RPM indices using Berkeley DB interface(s).

Definition in file rpmdb.h.

## Typedef Documentation

typedef enum rpmdbCtrlOp_e rpmdbCtrlOp

typedef enum rpmdbOpX_e rpmdbOpX

typedef enum rpmMireMode_e rpmMireMode

Tag value pattern match mode.

## Enumeration Type Documentation

enum rpmdbCtrlOp_e

Enumerator
RPMDB_CTRL_LOCK_RO |
RPMDB_CTRL_UNLOCK_RO |
RPMDB_CTRL_LOCK_RW |
RPMDB_CTRL_UNLOCK_RW |
RPMDB_CTRL_INDEXSYNC |

Definition at line 33 of file rpmdb.h.

enum rpmdbOpX_e

Enumerator
RPMDB_OP_DBGET |
RPMDB_OP_DBPUT |
RPMDB_OP_DBDEL |
RPMDB_OP_MAX |

Definition at line 26 of file rpmdb.h.

enum rpmMireMode_e

Tag value pattern match mode.

Enumerator
RPMMIRE_DEFAULT | regex with ., .* and ^...$ added
RPMMIRE_STRCMP | strings using strcmp(3)
RPMMIRE_REGEX | regex(7) patterns through regcomp(3)
RPMMIRE_GLOB | glob(7) patterns through fnmatch(3)

Definition at line 19 of file rpmdb.h.

## Function Documentation

int rpmdbAppendIterator | ( | rpmdbMatchIterator | mi,
|  | const unsigned int * | hdrNums,
|  | unsigned 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

int rpmdbCtrl | ( | rpmdb | db,
|  | rpmdbCtrlOp | ctrl
| ) |  |

manipulate the rpm database

Parameters

  db | rpm database
  ctrl | operation

Returns
  0 on success; != 0 on error

rpmdbMatchIterator rpmdbFreeIterator | ( | rpmdbMatchIterator | mi | ) |

Destroy rpm database iterator.

Parameters

  mi | rpm database iterator

Returns
  NULL always

Referenced by exportDB().

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 | address to save the pointer to the key
  keylen | address to save the length of the key to

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

int rpmdbIndexIteratorNextTd | ( | rpmdbIndexIterator | ii,
|  | rpmtd | keytd
| ) |  |

Get the next key into a tag data container.

Caller is responsible for calling rpmtdFreeData() to freeing the data returned in keytd once done with it.

Parameters

  ii | index iterator
  keytd | tag container to store the key in

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.

Referenced by exportDB().

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