X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fldbm.h;h=ffe8804d6c40487594db0c45a898da8c5f6c12bd;hb=d3f433a626e18f30bb5c93d05eaf3a77fa7865f5;hp=95bd55ffa7ca277a137e4bbc4e40792ab8ac46a0;hpb=42e0d83cb3a1a1c5b25183f1ab74ce7edbe25de7;p=openldap diff --git a/include/ldbm.h b/include/ldbm.h index 95bd55ffa7..ffe8804d6c 100644 --- a/include/ldbm.h +++ b/include/ldbm.h @@ -1,41 +1,78 @@ +/* + * 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 + +#ifdef LDBM_USE_DBBTREE /***************************************************************** * * - * use gdbm if possible * + * use berkeley db btree package * * * *****************************************************************/ -#include +#include +#include +#include -typedef datum Datum; +#ifdef HAVE_DB_185_H +# include +#else +# include +# ifdef HAVE_BERKELEY_DB2 +# define R_NOOVERWRITE DB_NOOVERWRITE +# define DEFAULT_DB_PAGE_SIZE 1024 +# endif +#endif -typedef GDBM_FILE LDBM; -extern gdbm_error gdbm_errno; +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_READER GDBM_READER -#define LDBM_WRITER GDBM_WRITER -#define LDBM_WRCREAT GDBM_WRCREAT -#define LDBM_NEWDB GDBM_NEWDB -#define LDBM_FAST GDBM_FAST +#ifdef HAVE_BERKELEY_DB2 +# define LDBM_READER DB_RDONLY +# define LDBM_WRITER 0x00000 /* hopefully */ +# define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE|DB_THREAD) +# define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE|DB_THREAD) +#else +# 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) +#endif -#define LDBM_SUFFIX ".gdbm" +# define LDBM_FAST 0 + +#define LDBM_SUFFIX ".dbb" +#define LDBM_ORDERED 1 /* for ldbm_insert */ -#define LDBM_INSERT GDBM_INSERT -#define LDBM_REPLACE GDBM_REPLACE +#define LDBM_INSERT R_NOOVERWRITE +#define LDBM_REPLACE 0 #define LDBM_SYNC 0x80000000 -#else /* end of gdbm */ - -#ifdef LDBM_USE_DBHASH +#elif defined( LDBM_USE_DBHASH ) /***************************************************************** * * @@ -46,7 +83,18 @@ extern gdbm_error gdbm_errno; #include #include #include -#include + +#ifdef HAVE_DB_185_H +# include +#else +# include +# 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 @@ -54,14 +102,23 @@ typedef DBT Datum; typedef DB *LDBM; +LDAP_END_DECL + #define DB_TYPE DB_HASH /* 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 +#ifdef LDBM_USE_DB2 +# define LDBM_READER DB_RDONLY +# define LDBM_WRITER 0x00000 /* hopefully */ +# define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE|DB_THREAD) +# define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE|DB_THREAD) +#else +# 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 +#endif #define LDBM_SUFFIX ".dbh" @@ -70,51 +127,42 @@ typedef DB *LDBM; #define LDBM_REPLACE 0 #define LDBM_SYNC 0x80000000 -extern int errno; - -#else /* end of db hash */ - -#ifdef LDBM_USE_DBBTREE +#elif defined( HAVE_GDBM ) /***************************************************************** * * - * use berkeley db btree package * + * use gdbm if possible * * * *****************************************************************/ -#include -#include -#include -#include +#include -typedef DBT Datum; -#define dsize size -#define dptr data +LDAP_BEGIN_DECL -typedef DB *LDBM; +typedef datum Datum; -#define DB_TYPE DB_BTREE +typedef GDBM_FILE LDBM; + +extern gdbm_error gdbm_errno; + +LDAP_END_DECL /* 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_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 ".dbb" -#define LDBM_ORDERED 1 +#define LDBM_SUFFIX ".gdbm" /* for ldbm_insert */ -#define LDBM_INSERT R_NOOVERWRITE -#define LDBM_REPLACE 0 +#define LDBM_INSERT GDBM_INSERT +#define LDBM_REPLACE GDBM_REPLACE #define LDBM_SYNC 0x80000000 -extern int errno; -#else /* end of db btree */ - -#ifdef LDBM_USE_NDBM +#elif defined( HAVE_NDBM ) /***************************************************************** * * @@ -123,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 @@ -145,11 +198,14 @@ 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 ); void ldbm_close( LDBM ldbm ); void ldbm_sync( LDBM ldbm ); @@ -158,8 +214,24 @@ Datum ldbm_datum_dup( LDBM ldbm, Datum data ); 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 ); -Datum ldbm_firstkey( LDBM ldbm ); -Datum ldbm_nextkey( LDBM ldbm, Datum key ); -int ldbm_errno( LDBM ldbm ); + +#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 ); +#else + Datum ldbm_firstkey( LDBM ldbm ); + 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_ */