Split dbiIndex out of rpmdb_internal.h into header of its own
authorPanu Matilainen <pmatilai@redhat.com>
Thu, 1 Apr 2010 08:13:37 +0000 (11:13 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Thu, 1 Apr 2010 08:13:37 +0000 (11:13 +0300)
- the dbi presents an internal api of its own, and deserves a separate
  header (baby steps to making dbiIndex opaque outside the backend)
- move dbiVerify() to the backend where it belongs
- mark all the dbiFoo() functions as internal

lib/Makefile.am
lib/backend/db3.c
lib/backend/dbi.h [new file with mode: 0644]
lib/rpmdb.c
lib/rpmdb_internal.h

index 3284fa4..eee51f1 100644 (file)
@@ -19,7 +19,7 @@ EXTRA_PROGRAMS =
 usrlibdir = $(libdir)
 usrlib_LTLIBRARIES = librpm.la
 librpm_la_SOURCES = \
-       backend/dbconfig.c backend/db3.c \
+       backend/dbconfig.c backend/db3.c backend/dbi.h \
        headerutil.c header.c headerfmt.c header_internal.h \
        poptDB.c rpmhash.c rpmhash.h rpmdb.c rpmdb_internal.h \
        fprint.c fprint.h tagname.c rpmtd.c \
index 6f8f674..b886868 100644 (file)
@@ -374,6 +374,12 @@ int dbiStat(dbiIndex dbi, unsigned int flags)
     return rc;
 }
 
+int dbiVerify(dbiIndex dbi, unsigned int flags)
+{
+    dbi->dbi_verify_on_close = 1;
+    return dbiClose(dbi, flags);
+}
+
 int dbiClose(dbiIndex dbi, unsigned int flags)
 {
     rpmdb rpmdb = dbi->dbi_rpmdb;
diff --git a/lib/backend/dbi.h b/lib/backend/dbi.h
new file mode 100644 (file)
index 0000000..d1dcb9e
--- /dev/null
@@ -0,0 +1,202 @@
+#ifndef _DBI_H
+#define _DBI_H
+
+typedef struct _dbiIndex * dbiIndex;
+
+/** \ingroup dbi
+ * Describes an index database (implemented on Berkeley db functionality).
+ */
+struct _dbiIndex {
+    const char * dbi_file;     /*!< file component of path */
+
+    int        dbi_ecflags;            /*!< db_env_create flags */
+    int        dbi_cflags;             /*!< db_create flags */
+    int        dbi_oeflags;            /*!< common (db,dbenv}->open flags */
+    int        dbi_eflags;             /*!< dbenv->open flags */
+    int        dbi_oflags;             /*!< db->open flags */
+    int        dbi_tflags;             /*!< dbenv->txn_begin flags */
+
+    int        dbi_type;               /*!< db index type */
+    unsigned dbi_mode;         /*!< mode to use on open */
+    int        dbi_perms;              /*!< file permission to use on open */
+
+    int        dbi_verify_on_close;
+    int        dbi_use_dbenv;          /*!< use db environment? */
+    int        dbi_permit_dups;        /*!< permit duplicate entries? */
+    int        dbi_no_fsync;           /*!< no-op fsync for db */
+    int        dbi_no_dbsync;          /*!< don't call dbiSync */
+    int        dbi_lockdbfd;           /*!< do fcntl lock on db fd */
+    int        dbi_byteswapped;
+
+       /* dbenv parameters */
+    /* XXX db-4.3.14 adds dbenv as 1st arg. */
+    int        dbi_verbose;
+       /* mpool sub-system parameters */
+    int        dbi_mmapsize;   /*!< (10Mb) */
+    int        dbi_cachesize;  /*!< (128Kb) */
+       /* dbinfo parameters */
+    int        dbi_pagesize;           /*!< (fs blksize) */
+
+    rpmdb dbi_rpmdb;           /*!< the parent rpm database */
+    rpmTag dbi_rpmtag; /*!< rpm tag used for index */
+    int        dbi_jlen;               /*!< size of join key */
+
+    DB * dbi_db;               /*!< Berkeley DB * handle */
+    DB_TXN * dbi_txnid;                /*!< Bekerley DB_TXN * transaction id */
+    void * dbi_stats;          /*!< Berkeley db statistics */
+};
+
+/** \ingroup dbi
+ * Return new configured index database handle instance.
+ * @param rpmdb                rpm database
+ * @param rpmtag       rpm tag
+ * @return             index database handle
+ */
+RPM_GNUC_INTERNAL
+dbiIndex dbiNew(rpmdb rpmdb, rpmTag rpmtag);
+
+/** \ingroup dbi
+ * Destroy index database handle instance.
+ * @param dbi          index database handle
+ * @return             NULL always
+ */
+RPM_GNUC_INTERNAL
+dbiIndex dbiFree( dbiIndex dbi);
+
+/** \ingroup dbi
+ * Format dbi open flags for debugging print.
+ * @param dbflags              db open flags
+ * @param print_dbenv_flags    format db env flags instead?
+ * @return                     formatted flags (malloced)
+ */
+RPM_GNUC_INTERNAL
+char * prDbiOpenFlags(int dbflags, int print_dbenv_flags);
+
+/** \ingroup dbi
+ * Actually open the database of the index.
+ * @param db           rpm database
+ * @param rpmtag       rpm tag
+ * @param dbiIndex     address of index database handle
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiOpenDB(rpmdb rpmdb, rpmTag rpmtag, dbiIndex * dbip);
+
+
+/* FIX: vector annotations */
+/** \ingroup dbi
+ * Open a database cursor.
+ * @param dbi          index database handle
+ * @retval dbcp                returned database cursor
+ * @param flags                DB_WRITECURSOR if writing, or 0
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiCopen(dbiIndex dbi, DBC ** dbcp, unsigned int flags);
+
+/** \ingroup dbi
+ * Close a database cursor.
+ * @param dbi          index database handle
+ * @param dbcursor     database cursor
+ * @param flags                (unused)
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiCclose(dbiIndex dbi, DBC * dbcursor, unsigned int flags);
+
+/** \ingroup dbi
+ * Delete (key,data) pair(s) from index database.
+ * @param dbi          index database handle
+ * @param dbcursor     database cursor (NULL will use db->del)
+ * @param key          delete key value/length/flags
+ * @param data         delete data value/length/flags
+ * @param flags                (unused)
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiDel(dbiIndex dbi, DBC * dbcursor, DBT * key, DBT * data,
+          unsigned int flags);
+
+/** \ingroup dbi
+ * Retrieve (key,data) pair from index database.
+ * @param dbi          index database handle
+ * @param dbcursor     database cursor (NULL will use db->get)
+ * @param key          retrieve key value/length/flags
+ * @param data         retrieve data value/length/flags
+ * @param flags                (unused)
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiGet(dbiIndex dbi, DBC * dbcursor, DBT * key, DBT * data,
+          unsigned int flags);
+
+/** \ingroup dbi
+ * Store (key,data) pair in index database.
+ * @param dbi          index database handle
+ * @param dbcursor     database cursor (NULL will use db->put)
+ * @param key          store key value/length/flags
+ * @param data         store data value/length/flags
+ * @param flags                (unused)
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiPut(dbiIndex dbi, DBC * dbcursor, DBT * key, DBT * data,
+          unsigned int flags);
+
+/** \ingroup dbi
+ * Retrieve count of (possible) duplicate items.
+ * @param dbi          index database handle
+ * @param dbcursor     database cursor
+ * @param countp       address of count
+ * @param flags                (unused)
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiCount(dbiIndex dbi, DBC * dbcursor, unsigned int * countp,
+            unsigned int flags);
+
+/** \ingroup dbi
+ * Close index database.
+ * @param dbi          index database handle
+ * @param flags                (unused)
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiClose(dbiIndex dbi, unsigned int flags);
+
+/** \ingroup dbi
+ * Flush pending operations to disk.
+ * @param dbi          index database handle
+ * @param flags                (unused)
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiSync (dbiIndex dbi, unsigned int flags);
+
+/** \ingroup dbi
+ * Verify (and close) index database.
+ * @param dbi          index database handle
+ * @param flags                (unused)
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiVerify(dbiIndex dbi, unsigned int flags);
+
+/** \ingroup dbi
+ * Is database byte swapped?
+ * @param dbi          index database handle
+ * @return             0 same order, 1 swapped order
+ */
+RPM_GNUC_INTERNAL
+int dbiByteSwapped(dbiIndex dbi);
+
+/** \ingroup dbi
+ * Is database byte swapped?
+ * @param dbi          index database handle
+ * @param flags                DB_FAST_STAT or 0
+ * @return             0 on success
+ */
+RPM_GNUC_INTERNAL
+int dbiStat(dbiIndex dbi, unsigned int flags);
+
+#endif /* _DBI_H */
index 057bda1..642ef2e 100644 (file)
@@ -115,18 +115,6 @@ static inline pbm_set * PBM_REALLOC(pbm_set ** sp, int * odp, int nd)
 }
 
 /** \ingroup dbi
- * Verify (and close) index database.
- * @param dbi          index database handle
- * @param flags                (unused)
- * @return             0 on success
- */
-static int dbiVerify(dbiIndex dbi, unsigned int flags)
-{
-    dbi->dbi_verify_on_close = 1;
-    return dbiClose(dbi, flags);
-}
-
-/** \ingroup dbi
  * Return handle for an index database.
  * @param db           rpm database
  * @param rpmtag       rpm tag
index 7c0d6e0..7625a4d 100644 (file)
@@ -7,51 +7,7 @@
 #include <rpm/rpmsw.h>
 #include <rpm/rpmtypes.h>
 #include <rpm/rpmutil.h>
-
-typedef struct _dbiIndex * dbiIndex;
-
-/** \ingroup dbi
- * Describes an index database (implemented on Berkeley db functionality).
- */
-struct _dbiIndex {
-    const char * dbi_file;     /*!< file component of path */
-
-    int        dbi_ecflags;            /*!< db_env_create flags */
-    int        dbi_cflags;             /*!< db_create flags */
-    int        dbi_oeflags;            /*!< common (db,dbenv}->open flags */
-    int        dbi_eflags;             /*!< dbenv->open flags */
-    int        dbi_oflags;             /*!< db->open flags */
-    int        dbi_tflags;             /*!< dbenv->txn_begin flags */
-
-    int        dbi_type;               /*!< db index type */
-    unsigned dbi_mode;         /*!< mode to use on open */
-    int        dbi_perms;              /*!< file permission to use on open */
-
-    int        dbi_verify_on_close;
-    int        dbi_use_dbenv;          /*!< use db environment? */
-    int        dbi_permit_dups;        /*!< permit duplicate entries? */
-    int        dbi_no_fsync;           /*!< no-op fsync for db */
-    int        dbi_no_dbsync;          /*!< don't call dbiSync */
-    int        dbi_lockdbfd;           /*!< do fcntl lock on db fd */
-    int        dbi_byteswapped;
-
-       /* dbenv parameters */
-    /* XXX db-4.3.14 adds dbenv as 1st arg. */
-    int        dbi_verbose;
-       /* mpool sub-system parameters */
-    int        dbi_mmapsize;   /*!< (10Mb) */
-    int        dbi_cachesize;  /*!< (128Kb) */
-       /* dbinfo parameters */
-    int        dbi_pagesize;           /*!< (fs blksize) */
-
-    rpmdb dbi_rpmdb;           /*!< the parent rpm database */
-    rpmTag dbi_rpmtag; /*!< rpm tag used for index */
-    int        dbi_jlen;               /*!< size of join key */
-
-    DB * dbi_db;               /*!< Berkeley DB * handle */
-    DB_TXN * dbi_txnid;                /*!< Bekerley DB_TXN * transaction id */
-    void * dbi_stats;          /*!< Berkeley db statistics */
-};
+#include "lib/backend/dbi.h"
 
 /** \ingroup rpmdb
  * Describes the collection of index databases used by rpm.
@@ -96,146 +52,6 @@ enum rpmdbFlags {
 extern "C" {
 #endif
 
-/** \ingroup dbi
- * Return new configured index database handle instance.
- * @param rpmdb                rpm database
- * @param rpmtag       rpm tag
- * @return             index database handle
- */
-RPM_GNUC_INTERNAL
-dbiIndex dbiNew(rpmdb rpmdb, rpmTag rpmtag);
-
-/** \ingroup dbi
- * Destroy index database handle instance.
- * @param dbi          index database handle
- * @return             NULL always
- */
-RPM_GNUC_INTERNAL
-dbiIndex dbiFree( dbiIndex dbi);
-
-/** \ingroup dbi
- * Format dbi open flags for debugging print.
- * @param dbflags              db open flags
- * @param print_dbenv_flags    format db env flags instead?
- * @return                     formatted flags (malloced)
- */
-RPM_GNUC_INTERNAL
-char * prDbiOpenFlags(int dbflags, int print_dbenv_flags);
-
-/** \ingroup dbi
- * Actually open the database of the index.
- * @param db           rpm database
- * @param rpmtag       rpm tag
- * @param dbiIndex     address of index database handle
- * @return             0 on success
- */
-RPM_GNUC_INTERNAL
-int dbiOpenDB(rpmdb rpmdb, rpmTag rpmtag, dbiIndex * dbip);
-
-
-/* FIX: vector annotations */
-/** \ingroup dbi
- * Open a database cursor.
- * @param dbi          index database handle
- * @retval dbcp                returned database cursor
- * @param flags                DB_WRITECURSOR if writing, or 0
- * @return             0 on success
- */
-RPM_GNUC_INTERNAL
-int dbiCopen(dbiIndex dbi, DBC ** dbcp, unsigned int flags);
-
-/** \ingroup dbi
- * Close a database cursor.
- * @param dbi          index database handle
- * @param dbcursor     database cursor
- * @param flags                (unused)
- * @return             0 on success
- */
-RPM_GNUC_INTERNAL
-int dbiCclose(dbiIndex dbi, DBC * dbcursor, unsigned int flags);
-
-/** \ingroup dbi
- * Delete (key,data) pair(s) from index database.
- * @param dbi          index database handle
- * @param dbcursor     database cursor (NULL will use db->del)
- * @param key          delete key value/length/flags
- * @param data         delete data value/length/flags
- * @param flags                (unused)
- * @return             0 on success
- */
-RPM_GNUC_INTERNAL
-int dbiDel(dbiIndex dbi, DBC * dbcursor, DBT * key, DBT * data,
-          unsigned int flags);
-
-/** \ingroup dbi
- * Retrieve (key,data) pair from index database.
- * @param dbi          index database handle
- * @param dbcursor     database cursor (NULL will use db->get)
- * @param key          retrieve key value/length/flags
- * @param data         retrieve data value/length/flags
- * @param flags                (unused)
- * @return             0 on success
- */
-RPM_GNUC_INTERNAL
-int dbiGet(dbiIndex dbi, DBC * dbcursor, DBT * key, DBT * data,
-          unsigned int flags);
-
-/** \ingroup dbi
- * Store (key,data) pair in index database.
- * @param dbi          index database handle
- * @param dbcursor     database cursor (NULL will use db->put)
- * @param key          store key value/length/flags
- * @param data         store data value/length/flags
- * @param flags                (unused)
- * @return             0 on success
- */
-RPM_GNUC_INTERNAL
-int dbiPut(dbiIndex dbi, DBC * dbcursor, DBT * key, DBT * data,
-          unsigned int flags);
-
-/** \ingroup dbi
- * Retrieve count of (possible) duplicate items.
- * @param dbi          index database handle
- * @param dbcursor     database cursor
- * @param countp       address of count
- * @param flags                (unused)
- * @return             0 on success
- */
-int dbiCount(dbiIndex dbi, DBC * dbcursor, unsigned int * countp,
-            unsigned int flags);
-
-/** \ingroup dbi
- * Close index database.
- * @param dbi          index database handle
- * @param flags                (unused)
- * @return             0 on success
- */
-int dbiClose(dbiIndex dbi, unsigned int flags);
-
-/** \ingroup dbi
- * Flush pending operations to disk.
- * @param dbi          index database handle
- * @param flags                (unused)
- * @return             0 on success
- */
-int dbiSync (dbiIndex dbi, unsigned int flags);
-
-
-/** \ingroup dbi
- * Is database byte swapped?
- * @param dbi          index database handle
- * @return             0 same order, 1 swapped order
- */
-int dbiByteSwapped(dbiIndex dbi);
-
-/** \ingroup dbi
- * Is database byte swapped?
- * @param dbi          index database handle
- * @param flags                DB_FAST_STAT or 0
- * @return             0 on success
- */
-int dbiStat(dbiIndex dbi, unsigned int flags);
-
 /** \ingroup rpmdb
  * Return rpmdb home directory (depending on chroot state)
  * param db            rpmdb handle