]> git.sur5r.net Git - openldap/blobdiff - include/ldbm.h
Drop support for alloca().
[openldap] / include / ldbm.h
index 0f4c07c3ad8f1f46614d3b26736e97d2d0eec123..876b7c60efada58494843c28d64489f496f76064 100644 (file)
@@ -1,8 +1,19 @@
+/*
+ * 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>
+#      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 */
@@ -69,22 +88,30 @@ typedef DB  *LDBM;
 #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 */
@@ -118,12 +145,16 @@ typedef DB        *LDBM;
 
 #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
@@ -138,6 +169,41 @@ extern gdbm_error  gdbm_errno;
 #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 )
 
@@ -153,10 +219,14 @@ extern gdbm_error gdbm_errno;
 #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
@@ -173,6 +243,11 @@ typedef DBM        *LDBM;
 
 #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 );
@@ -192,4 +267,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_ */