X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fldbm.h;h=876b7c60efada58494843c28d64489f496f76064;hb=34f068f13195917ed7791f5777d958eb5f1fddc6;hp=0f4c07c3ad8f1f46614d3b26736e97d2d0eec123;hpb=c4b1286fa9423129da4f089389a448aeeef16f8d;p=openldap diff --git a/include/ldbm.h b/include/ldbm.h index 0f4c07c3ad..876b7c60ef 100644 --- a/include/ldbm.h +++ b/include/ldbm.h @@ -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 + #ifdef LDBM_USE_DBBTREE /***************************************************************** @@ -15,10 +26,14 @@ #include #include -#ifdef HAVE_DB185_H +#ifdef HAVE_DB_185_H # include #else -# include +# ifdef HAVE_DB1_DB_H +# include +# else +# include +# endif # ifdef HAVE_BERKELEY_DB2 # define R_NOOVERWRITE DB_NOOVERWRITE # define DEFAULT_DB_PAGE_SIZE 1024 @@ -26,12 +41,16 @@ #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 #include -#ifdef HAVE_DB185_H +#ifdef HAVE_DB_185_H # include #else -# include +# ifdef HAVE_DB1_DB_H +# include +# else +# include +# 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 +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 + +LDAP_BEGIN_DECL + +typedef datum Datum; +typedef MDBM *LDBM; + +LDAP_END_DECL + +#include +#include +#include + +/* 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 #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_ */