1 #ifndef H_RPMDB_INTERNAL
2 #define H_RPMDB_INTERNAL
8 #include <rpm/rpmtypes.h>
9 #include <rpm/rpmutil.h>
10 #include "lib/backend/dbi.h"
13 * Describes the collection of index databases used by rpm.
16 char * db_root;/*!< path prefix */
17 char * db_home;/*!< directory path */
18 char * db_fullpath; /*!< full db path including prefix */
20 int db_mode; /*!< open mode */
21 int db_perms; /*!< open permissions */
22 int db_api; /*!< Berkeley API type */
24 int db_chrootDone; /*!< If chroot(2) done, ignore db_root. */
25 int db_mkdirDone; /*!< Has db_home been created? */
26 unsigned char * db_bits; /*!< package instance bit mask. */
27 int db_nbits; /*!< no. of bits in mask. */
30 void * db_dbenv; /*!< Berkeley DB_ENV handle. */
31 int db_ndbi; /*!< No. of tag indices. */
32 dbiIndex * _dbi; /*!< Tag indices. */
34 struct rpmop_s db_getops;
35 struct rpmop_s db_putops;
36 struct rpmop_s db_delops;
38 int nrefs; /*!< Reference count. */
41 /* for RPM's internal use only */
46 RPMDB_FLAG_JUSTCHECK = (1 << 0),
47 RPMDB_FLAG_MINIMAL = (1 << 1),
48 RPMDB_FLAG_CHROOT = (1 << 2)
56 * Return rpmdb home directory (depending on chroot state)
57 * param db rpmdb handle
58 * return db home directory (or NULL on error)
61 const char *rpmdbHome(rpmdb db);
64 * Return database iterator.
65 * @param mi rpm database iterator
66 * @param keyp key data (NULL for sequential access)
67 * @param keylen key data length (0 will use strlen(keyp))
68 * @return 0 on success
70 int rpmdbExtendIterator(rpmdbMatchIterator mi,
71 const void * keyp, size_t keylen);
74 * sort the iterator by (recnum, filenum)
75 * Return database iterator.
76 * @param mi rpm database iterator
78 void rpmdbSortIterator(rpmdbMatchIterator mi);
82 * * Mergesort, same arguments as qsort(2).
85 int mergesort(void *base, size_t nmemb, size_t size,
86 int (*cmp) (const void *, const void *));
88 /* mergesort is defined in stdlib.h on Mac OS X */
89 #endif /* __APPLE__ */