+/*
+ * 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_
+#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>
#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 */
#define LDBM_REPLACE 0
#define LDBM_SYNC 0x80000000
-/* Do not use #elif. K&R does not support it. */
-#else /* !LDBM_USE_DBBTREE */
-#ifdef LDBM_USE_DBHASH
+#elif defined( LDBM_USE_DBHASH )
/*****************************************************************
* *
#include <limits.h>
#include <fcntl.h>
-#ifdef HAVE_DB185_H
+#ifdef HAVE_DB_185_H
# include <db_185.h>
#else
# include <db.h>
# 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 */
#define LDBM_REPLACE 0
#define LDBM_SYNC 0x80000000
-#else /* !LDBM_USE_DBHASH */
-#ifdef HAVE_GDBM
+#elif defined( HAVE_GDBM )
/*****************************************************************
* *
#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_SYNC 0x80000000
-#else /* !HAVE_GDBM */
-#ifdef HAVE_NDBM
+#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
#define LDBM_REPLACE DBM_REPLACE
#define LDBM_SYNC 0
-#endif /* HAVE_NDBM */
-#endif /* HAVE_GDBM */
-#endif /* LDBM_USE_DBHASH */
-#endif /* LDBM_USE_DBBTREE */
+#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 );
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_ */