about summary refs log tree commit diff
path: root/nss/nss_db/dummy-db.h
diff options
context:
space:
mode:
Diffstat (limited to 'nss/nss_db/dummy-db.h')
-rw-r--r--nss/nss_db/dummy-db.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/nss/nss_db/dummy-db.h b/nss/nss_db/dummy-db.h
new file mode 100644
index 0000000000..4414a1c9ae
--- /dev/null
+++ b/nss/nss_db/dummy-db.h
@@ -0,0 +1,111 @@
+#include <stdint.h>
+
+#include "nss_db.h"
+
+/* This file contains dummy definitions of the DB structure of the
+   Berkeley DB.  We are only interested in the function pointers since
+   this is the interface to the database.  Unfortunately the structure
+   changed over time and we have to take this into account.  */
+
+/* The values to select the database type are unchanged over the version.
+   Define only what we really need.  */
+#define DB_BTREE	(1)
+
+/* Permission flags are also not changed.  */
+#define DB_RDONLY	0x010000
+
+
+/* This is for the db-2.x version up to 2.x.y.  We use the name `db24' since
+   this is the version which was shipped with glibc 2.1.  */
+struct db24
+{
+  void	*mutexp;
+  enum { dummy24 } type;
+  void *dbenv;
+  void *mp_dbenv;
+  void *master;
+  void *internal;
+  void *mp;
+  void *mpf;
+  struct
+  {
+    void *tqh_first;
+    void **tqh_last;
+  } curs_queue;
+  struct {
+    void *lh_first;
+  } handleq;
+  struct {
+    void *le_next;
+    void **le_prev;
+  } links;
+  uint32_t log_fileid;
+  void *txn;
+  uint32_t locker;
+  struct db24_dbt {
+    void *data;
+    uint32_t size;
+    uint32_t ulen;
+    uint32_t dlen;
+    uint32_t doff;
+    uint32_t flags;
+  } lock_dbt;
+  struct{
+    uint32_t pgno;
+    uint8_t fileid[20];
+  } lock;
+  size_t pgsize;
+  void *db_malloc;
+  /* Functions. */
+  int (*close) (void *, uint32_t);
+  int (*cursor) (void *, void *, void **);
+  int (*del) (void *, void *, DBT *, uint32_t);
+  int (*fd) (void *, int *);
+  int (*get) (void *, void *, DBT *, DBT *, uint32_t);
+  int (*put) (void *, void *, DBT *, DBT *, uint32_t);
+  int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
+  int (*sync) (void *, uint32_t);
+};
+
+
+/* Version 2.7, slightly incompatible with version 2.4.  */
+struct db27
+{
+  void	*mutexp;
+  enum { dummy27 } type;
+  int byteswapped;
+  void *dbenv;
+  void *mp_dbenv;
+  void *internal;
+  void *mp;
+  void *mpf;
+  struct
+  {
+    void *tqh_first;
+    void **tqh_last;
+  } free_queue;
+  struct
+  {
+    void *tqh_first;
+    void **tqh_last;
+  } active_queue;
+  struct {
+    void *lh_first;
+  } handleq;
+  uint8_t fileid[20];
+  uint32_t log_fileid;
+  size_t pgsize;
+  void *db_malloc;
+  void *dup_compare;
+  void *h_hash;
+  /* Functions. */
+  int (*am_close) (void *);
+  int (*close) (void *, uint32_t);
+  int (*cursor) (void *, void *, void **, uint32_t);
+  int (*del) (void *, void *, DBT *, uint32_t);
+  int (*fd) (void *, int *);
+  int (*get) (void *, void *, DBT *, DBT *, uint32_t);
+  int (*put) (void *, void *, DBT *, DBT *, uint32_t);
+  int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
+  int (*sync) (void *, uint32_t);
+};