#ifndef _LDBM_H_
#define _LDBM_H_
+#include <ldap_cdefs.h>
+
#ifdef LDBM_USE_DBBTREE
/*****************************************************************
#include <limits.h>
#include <fcntl.h>
-#ifdef HAVE_DB185_H
+#ifdef HAVE_DB_185_H
# include <db_185.h>
#else
-# include <db.h>
+# ifdef HAVE_DB1_DB_H
+# include <db1/db.h>
+# else
+# include <db.h>
+# endif
# ifdef HAVE_BERKELEY_DB2
# define R_NOOVERWRITE DB_NOOVERWRITE
# define DEFAULT_DB_PAGE_SIZE 1024
#endif
+LDAP_BEGIN_DECL
+
typedef DBT Datum;
#define dsize size
#define dptr data
typedef DB *LDBM;
+LDAP_END_DECL
+
#define DB_TYPE DB_BTREE
/* for ldbm_open */
#include <limits.h>
#include <fcntl.h>
-#ifdef HAVE_DB185_H
+#ifdef HAVE_DB_185_H
# include <db_185.h>
#else
-# include <db.h>
+# ifdef HAVE_DB1_DB_H
+# include <db1/db.h>
+# else
+# include <db.h>
+# endif
# ifdef LDBM_USE_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;
+LDAP_END_DECL
+
#define DB_TYPE DB_HASH
/* for ldbm_open */
#include <gdbm.h>
+LDAP_BEGIN_DECL
+
typedef datum Datum;
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_REPLACE GDBM_REPLACE
#define LDBM_SYNC 0x80000000
+#elif defined( HAVE_MDBM )
+
+/*****************************************************************
+ * *
+ * use mdbm if possible *
+ * *
+ *****************************************************************/
+
+#include <mdbm.h>
+
+LDAP_BEGIN_DECL
+
+typedef datum Datum;
+typedef MDBM *LDBM;
+
+LDAP_END_DECL
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+/* for ldbm_open */
+#define LDBM_READER O_RDONLY
+#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
+
+#define LDBM_SUFFIX ".mdbm"
+
+/* for ldbm_insert */
+#define LDBM_INSERT MDBM_INSERT
+#define LDBM_REPLACE MDBM_REPLACE
+#define LDBM_SYNC 0x80000000
+
#elif defined( HAVE_NDBM )
#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
#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 );
void ldbm_close( LDBM ldbm );
/* 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_ */