X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fldbm.h;h=ffe8804d6c40487594db0c45a898da8c5f6c12bd;hb=d3f433a626e18f30bb5c93d05eaf3a77fa7865f5;hp=f31f135ff8504e284811fc99bcd5902d7e5a2fa9;hpb=2054d40b7ce1a74c349fd0d523a275ccfdee85c7;p=openldap diff --git a/include/ldbm.h b/include/ldbm.h index f31f135ff8..ffe8804d6c 100644 --- a/include/ldbm.h +++ b/include/ldbm.h @@ -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 -/***************************************************************** - * * - * use gdbm if possible * - * * - *****************************************************************/ - -#include - -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 #include -#ifdef LDBM_USE_DB2_COMPAT185 +#ifdef HAVE_DB_185_H # include #else # include -# 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 #include -#ifdef LDBM_USE_DB2_COMPAT185 +#ifdef HAVE_DB_185_H # include #else # include @@ -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 + +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 -#ifndef O_RDONLY + +#ifdef HAVE_FCNTL_H #include #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_ */