]> git.sur5r.net Git - openldap/blobdiff - include/ldbm.h
printf(%ld, pid) -> printf(%ld, (long)pid)
[openldap] / include / ldbm.h
index f31f135ff8504e284811fc99bcd5902d7e5a2fa9..ffe8804d6c40487594db0c45a898da8c5f6c12bd 100644 (file)
@@ -1,45 +1,24 @@
+/*
+ * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License.  A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+ */
 /* ldbm.h - ldap dbm compatibility routine header file */
 
 #ifndef _LDBM_H_
 #define _LDBM_H_
 
-#ifdef LDBM_USE_GDBM
+#include <ldap_cdefs.h>
 
-/*****************************************************************
- *                                                               *
- * use gdbm if possible                                          *
- *                                                               *
- *****************************************************************/
-
-#include <gdbm.h>
-
-typedef datum          Datum;
-
-typedef GDBM_FILE      LDBM;
-
-extern gdbm_error      gdbm_errno;
-
-/* for ldbm_open */
-#define LDBM_READER    GDBM_READER
-#define LDBM_WRITER    GDBM_WRITER
-#define LDBM_WRCREAT   GDBM_WRCREAT
-#define LDBM_NEWDB     GDBM_NEWDB
-#define LDBM_FAST      GDBM_FAST
-
-#define LDBM_SUFFIX    ".gdbm"
-
-/* for ldbm_insert */
-#define LDBM_INSERT    GDBM_INSERT
-#define LDBM_REPLACE   GDBM_REPLACE
-#define LDBM_SYNC      0x80000000
-
-#else /* end of gdbm */
-
-#ifdef LDBM_USE_DBHASH
+#ifdef LDBM_USE_DBBTREE
 
 /*****************************************************************
  *                                                               *
- * use berkeley db hash package                                  *
+ * use berkeley db btree package                                 *
  *                                                               *
  *****************************************************************/
 
@@ -47,26 +26,31 @@ extern gdbm_error   gdbm_errno;
 #include <limits.h>
 #include <fcntl.h>
 
-#ifdef LDBM_USE_DB2_COMPAT185
+#ifdef HAVE_DB_185_H
 #      include <db_185.h>
 #else
 #      include <db.h>
-#      ifdef LDBM_USE_DB2
+#      ifdef HAVE_BERKELEY_DB2
 #              define R_NOOVERWRITE DB_NOOVERWRITE
 #              define DEFAULT_DB_PAGE_SIZE 1024
 #      endif
 #endif
 
+
+LDAP_BEGIN_DECL
+
 typedef DBT    Datum;
 #define dsize  size
 #define dptr   data
 
 typedef DB     *LDBM;
 
-#define DB_TYPE                DB_HASH
+LDAP_END_DECL
+
+#define DB_TYPE                DB_BTREE
 
 /* for ldbm_open */
-#ifdef LDBM_USE_DB2
+#ifdef HAVE_BERKELEY_DB2
 #      define LDBM_READER      DB_RDONLY
 #      define LDBM_WRITER      0x00000      /* hopefully */
 #      define LDBM_WRCREAT     (DB_NOMMAP|DB_CREATE|DB_THREAD)
@@ -76,25 +60,23 @@ typedef DB  *LDBM;
 #      define LDBM_WRITER      O_RDWR
 #      define LDBM_WRCREAT     (O_RDWR|O_CREAT)
 #      define LDBM_NEWDB       (O_RDWR|O_TRUNC|O_CREAT)
-#      define LDBM_FAST        0
 #endif
 
-#define LDBM_SUFFIX    ".dbh"
+#  define LDBM_FAST    0
+
+#define LDBM_SUFFIX    ".dbb"
+#define LDBM_ORDERED   1
 
 /* for ldbm_insert */
 #define LDBM_INSERT    R_NOOVERWRITE
 #define LDBM_REPLACE   0
 #define LDBM_SYNC      0x80000000
 
-extern int     errno;
-
-#else /* end of db hash */
-
-#ifdef LDBM_USE_DBBTREE
+#elif defined( LDBM_USE_DBHASH )
 
 /*****************************************************************
  *                                                               *
- * use berkeley db btree package                                 *
+ * use berkeley db hash package                                  *
  *                                                               *
  *****************************************************************/
 
@@ -102,7 +84,7 @@ extern int   errno;
 #include <limits.h>
 #include <fcntl.h>
 
-#ifdef LDBM_USE_DB2_COMPAT185
+#ifdef HAVE_DB_185_H
 #      include <db_185.h>
 #else
 #      include <db.h>
@@ -112,6 +94,7 @@ extern int   errno;
 #      endif
 #endif
 
+LDAP_BEGIN_DECL
 
 typedef DBT    Datum;
 #define dsize  size
@@ -119,7 +102,9 @@ typedef DBT Datum;
 
 typedef DB     *LDBM;
 
-#define DB_TYPE                DB_BTREE
+LDAP_END_DECL
+
+#define DB_TYPE                DB_HASH
 
 /* for ldbm_open */
 #ifdef LDBM_USE_DB2
@@ -132,23 +117,52 @@ typedef DB        *LDBM;
 #      define LDBM_WRITER      O_RDWR
 #      define LDBM_WRCREAT     (O_RDWR|O_CREAT)
 #      define LDBM_NEWDB       (O_RDWR|O_TRUNC|O_CREAT)
+#      define LDBM_FAST        0
 #endif
 
-#  define LDBM_FAST    0
-
-#define LDBM_SUFFIX    ".dbb"
-#define LDBM_ORDERED   1
+#define LDBM_SUFFIX    ".dbh"
 
 /* for ldbm_insert */
 #define LDBM_INSERT    R_NOOVERWRITE
 #define LDBM_REPLACE   0
 #define LDBM_SYNC      0x80000000
 
-extern int     errno;
+#elif defined( HAVE_GDBM )
 
-#else /* end of db btree */
+/*****************************************************************
+ *                                                               *
+ * use gdbm if possible                                          *
+ *                                                               *
+ *****************************************************************/
+
+#include <gdbm.h>
+
+LDAP_BEGIN_DECL
+
+typedef datum          Datum;
 
-#ifdef LDBM_USE_NDBM
+typedef GDBM_FILE      LDBM;
+
+extern gdbm_error      gdbm_errno;
+
+LDAP_END_DECL
+
+/* for ldbm_open */
+#define LDBM_READER    GDBM_READER
+#define LDBM_WRITER    GDBM_WRITER
+#define LDBM_WRCREAT   GDBM_WRCREAT
+#define LDBM_NEWDB     GDBM_NEWDB
+#define LDBM_FAST      GDBM_FAST
+
+#define LDBM_SUFFIX    ".gdbm"
+
+/* for ldbm_insert */
+#define LDBM_INSERT    GDBM_INSERT
+#define LDBM_REPLACE   GDBM_REPLACE
+#define LDBM_SYNC      0x80000000
+
+
+#elif defined( HAVE_NDBM )
 
 /*****************************************************************
  *                                                               *
@@ -157,14 +171,19 @@ extern int        errno;
  *****************************************************************/
 
 #include <ndbm.h>
-#ifndef O_RDONLY
+
+#ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
 
+LDAP_BEGIN_DECL
+
 typedef datum  Datum;
 
 typedef DBM    *LDBM;
 
+LDAP_END_DECL
+
 /* for ldbm_open */
 #define LDBM_READER    O_RDONLY
 #define LDBM_WRITER    O_WRONLY
@@ -179,10 +198,12 @@ typedef DBM       *LDBM;
 #define LDBM_REPLACE   DBM_REPLACE
 #define LDBM_SYNC      0
 
-#endif /* ndbm */
-#endif /* db hash */
-#endif /* db btree */
-#endif /* gdbm */
+#endif
+
+LDAP_BEGIN_DECL
+
+int ldbm_initialize( void );
+int ldbm_shutdown( void );
 
 int    ldbm_errno( LDBM ldbm );
 LDBM   ldbm_open( char *name, int rw, int mode, int dbcachesize );
@@ -194,7 +215,7 @@ Datum       ldbm_fetch( LDBM ldbm, Datum key );
 int    ldbm_store( LDBM ldbm, Datum key, Datum data, int flags );
 int    ldbm_delete( LDBM ldbm, Datum key );
 
-#if LDBM_USE_DB2
+#if HAVE_BERKELEY_DB2
        void   *ldbm_malloc( size_t size );
        Datum   ldbm_firstkey( LDBM ldbm, DBC **dbch );
        Datum   ldbm_nextkey( LDBM ldbm, Datum key, DBC *dbcp );
@@ -203,4 +224,14 @@ int        ldbm_delete( LDBM ldbm, Datum key );
        Datum   ldbm_nextkey( LDBM ldbm, Datum key );
 #endif
 
+
+/* initialization of Datum structures */
+#ifdef HAVE_BERKELEY_DB2
+#   define ldbm_datum_init(d) ((void)memset(&(d), 0, sizeof(Datum)))
+#else
+#   define ldbm_datum_init(d) ((void)0)
+#endif  /* HAVE_BERKELEY_DB2 */
+
+LDAP_END_DECL
+
 #endif /* _ldbm_h_ */