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"
17 * Add package header to rpm database and indices.
18 * @param db rpm database
20 * @return 0 on success
23 int rpmdbAdd(rpmdb db, Header h);
26 * Remove package header from rpm database and indices.
27 * @param db rpm database
29 * @return 0 on success
32 int rpmdbRemove(rpmdb db, Header h);
35 * Return rpmdb home directory (depending on chroot state)
36 * param db rpmdb handle
37 * return db home directory (or NULL on error)
40 const char *rpmdbHome(rpmdb db);
43 * Return database iterator.
44 * @param mi rpm database iterator
45 * @param keyp key data (NULL for sequential access)
46 * @param keylen key data length (0 will use strlen(keyp))
47 * @return 0 on success
49 int rpmdbExtendIterator(rpmdbMatchIterator mi,
50 const void * keyp, size_t keylen);
53 * sort the iterator by (recnum, filenum)
54 * Return database iterator.
55 * @param mi rpm database iterator
57 void rpmdbSortIterator(rpmdbMatchIterator mi);
59 /* avoid importing rpmts_internal.h */
63 #define HASHTYPE intHash
64 #define HTKEYTYPE unsigned int
70 * Remove items from set of package instances to iterate.
71 * @note Sorted hdrNums are always passed in rpmlib.
72 * @param mi rpm database iterator
73 * @param hdrNums hash of package instances
74 * @return 0 on success, 1 on failure (bad args)
76 int rpmdbPruneIterator(rpmdbMatchIterator mi, intHash hdrNums);
80 * * Mergesort, same arguments as qsort(2).
83 int mergesort(void *base, size_t nmemb, size_t size,
84 int (*cmp) (const void *, const void *));
86 /* mergesort is defined in stdlib.h on Mac OS X */
87 #endif /* __APPLE__ */