extern "C" {
#endif
+#undef HASHTYPE
+#undef HTKEYTYPE
+#undef HTDATATYPE
+#define HASHTYPE removedHash
+#define HTKEYTYPE unsigned int
+#define HTDATATYPE struct rpmte_s *
+#include "rpmhash.H"
+#undef HASHTYPE
+#undef HTKEYTYPE
+#undef HTDATATYPE
+
+/** \ingroup rpmdb
+ * Reference a database instance.
+ * @param db rpm database
+ * @return new rpm database reference
+ */
+rpmdb rpmdbLink(rpmdb db);
+
+/** \ingroup rpmdb
+ * Open rpm database.
+ * @param prefix path to top of install tree
+ * @retval dbp address of rpm database
+ * @param mode open(2) flags: O_RDWR or O_RDONLY (O_CREAT also)
+ * @param perms database permissions
+ * @return 0 on success
+ */
+RPM_GNUC_INTERNAL
+int rpmdbOpen (const char * prefix, rpmdb * dbp, int mode, int perms);
+
+/** \ingroup rpmdb
+ * Initialize database.
+ * @param prefix path to top of install tree
+ * @param perms database permissions
+ * @return 0 on success
+ */
+RPM_GNUC_INTERNAL
+int rpmdbInit(const char * prefix, int perms);
+
+/** \ingroup rpmdb
+ * Close all database indices and free rpmdb.
+ * @param db rpm database
+ * @return 0 on success
+ */
+RPM_GNUC_INTERNAL
+int rpmdbClose (rpmdb db);
+
+/** \ingroup rpmdb
+ * Sync all database indices.
+ * @param db rpm database
+ * @return 0 on success
+ */
+RPM_GNUC_INTERNAL
+int rpmdbSync (rpmdb db);
+
+/** \ingroup rpmdb
+ * Rebuild database indices from package headers.
+ * @param prefix path to top of install tree
+ * @param ts transaction set (or NULL)
+ * @param (*hdrchk) headerCheck() vector (or NULL)
+ * @return 0 on success
+ */
+RPM_GNUC_INTERNAL
+int rpmdbRebuild(const char * prefix, rpmts ts,
+ rpmRC (*hdrchk) (rpmts ts, const void *uh, size_t uc, char ** msg));
+
+/** \ingroup rpmdb
+ * Verify database components.
+ * @param prefix path to top of install tree
+ * @return 0 on success
+ */
+RPM_GNUC_INTERNAL
+int rpmdbVerify(const char * prefix);
+
/** \ingroup rpmdb
* Add package header to rpm database and indices.
* @param db rpm database
*/
void rpmdbSortIterator(rpmdbMatchIterator mi);
-/* avoid importing rpmts_internal.h */
-#undef HASHTYPE
-#undef HTKEYTYPE
-#undef HTDATATYPE
-#define HASHTYPE intHash
-#define HTKEYTYPE unsigned int
-#include "rpmhash.H"
-#undef HASHTYPE
-#undef HTKEYTYPE
-
/** \ingroup rpmdb
* Remove items from set of package instances to iterate.
* @note Sorted hdrNums are always passed in rpmlib.
* @param hdrNums hash of package instances
* @return 0 on success, 1 on failure (bad args)
*/
-int rpmdbPruneIterator(rpmdbMatchIterator mi, intHash hdrNums);
+int rpmdbPruneIterator(rpmdbMatchIterator mi, removedHash hdrNums);
/** \ingroup rpmdb
* Create a new, empty match iterator (for purposes of extending it