X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=include%2Fldbm.h;h=68b143208b1d1dd8c541bd6e382368f406124771;hb=9514007d96ff2ab4575106996eb74ef80be7a2e1;hp=9fd65730e39fb3908163b5df94ae23715f775146;hpb=bd36de108fd8b44ec751581efbef600b6d13c7d6;p=openldap diff --git a/include/ldbm.h b/include/ldbm.h index 9fd65730e3..68b143208b 100644 --- a/include/ldbm.h +++ b/include/ldbm.h @@ -1,6 +1,6 @@ /* $OpenLDAP$ */ /* - * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA + * Copyright 1998-2000 The OpenLDAP Foundation, Redwood City, California, USA * All rights reserved. * * Redistribution and use in source and binary forms are permitted only @@ -15,14 +15,13 @@ #include -#ifdef LDBM_USE_DBBTREE +#if defined( LDBM_USE_DBBTREE ) || defined( LDBM_USE_DBHASH ) /***************************************************************** * * - * use berkeley db btree package * + * use berkeley db btree or hash package * * * *****************************************************************/ - #include #include #include @@ -35,77 +34,23 @@ # else # include # endif -# 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_BTREE - -/* for ldbm_open */ -#ifdef HAVE_BERKELEY_DB2 -typedef DBC LDBMCursor; -# 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 -typedef int LDBMCursor; -# 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) +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif +#ifndef DB_VERSION_MINOR +# define DB_VERSION_MINOR 85 #endif -LDAP_END_DECL - -# 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 - -#elif defined( LDBM_USE_DBHASH ) - -/***************************************************************** - * * - * use berkeley db hash package * - * * - *****************************************************************/ - -#include -#include -#include - -#ifdef HAVE_DB_185_H -# include -#else -# ifdef HAVE_DB1_DB_H -# include -# else -# include -# endif -# ifdef LDBM_USE_DB2 -# define R_NOOVERWRITE DB_NOOVERWRITE -# define DEFAULT_DB_PAGE_SIZE 1024 +#if DB_VERSION_MAJOR >= 2 +# define R_NOOVERWRITE DB_NOOVERWRITE +# ifndef DEFAULT_DB_PAGE_SIZE +# define DEFAULT_DB_PAGE_SIZE 4096 # endif #endif + LDAP_BEGIN_DECL typedef DBT Datum; @@ -114,32 +59,49 @@ typedef DBT Datum; typedef DB *LDBM; -#define DB_TYPE DB_HASH /* for ldbm_open */ -#ifdef LDBM_USE_DB2 +#if DB_VERSION_MAJOR >= 2 typedef DBC LDBMCursor; + # define LDBM_READER DB_RDONLY # define LDBM_WRITER 0x00000 /* hopefully */ +# if defined( HAVE_BERKELEY_DB_THREAD ) # define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE|DB_THREAD) # define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE|DB_THREAD) +# else +# define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE) +# define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE) +# endif + #else -typedef int LDBMCursor; +typedef void LDBMCursor; # 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 LDAP_END_DECL -#define LDBM_SUFFIX ".dbh" +/* for ldbm_open */ +#define LDBM_NOSYNC 0 +#define LDBM_SYNC 0 +#define LDBM_LOCKING 0 +#define LDBM_NOLOCKING 0 /* for ldbm_insert */ #define LDBM_INSERT R_NOOVERWRITE #define LDBM_REPLACE 0 -#define LDBM_SYNC 0x80000000 + +#ifdef LDBM_USE_DBBTREE +# define LDBM_ORDERED 1 +# define LDBM_SUFFIX ".dbb" +# define DB_TYPE DB_BTREE +#else +# define LDBM_SUFFIX ".dbh" +# define DB_TYPE DB_HASH +#endif #elif defined( HAVE_GDBM ) @@ -154,7 +116,7 @@ LDAP_END_DECL LDAP_BEGIN_DECL typedef datum Datum; -typedef int LDBMCursor; +typedef Datum LDBMCursor; typedef GDBM_FILE LDBM; extern gdbm_error gdbm_errno; @@ -166,14 +128,31 @@ LDAP_END_DECL #define LDBM_WRITER GDBM_WRITER #define LDBM_WRCREAT GDBM_WRCREAT #define LDBM_NEWDB GDBM_NEWDB -#define LDBM_FAST GDBM_FAST + +#ifdef GDBM_FAST +#define LDBM_NOSYNC GDBM_FAST +#else +#define LDBM_NOSYNC 0 +#endif + +#ifdef GDBM_SYNC +#define LDBM_SYNC GDBM_SYNC +#else +#define LDBM_SYNC 0 +#endif + +#define LDBM_LOCKING 0 +#ifdef GDBM_NOLOCK +#define LDBM_NOLOCKING GDBM_NOLOCK +#else +#define LDBM_NOLOCKING 0 +#endif #define LDBM_SUFFIX ".gdbm" /* for ldbm_insert */ #define LDBM_INSERT GDBM_INSERT #define LDBM_REPLACE GDBM_REPLACE -#define LDBM_SYNC 0x80000000 #elif defined( HAVE_MDBM ) @@ -202,15 +181,17 @@ LDAP_END_DECL #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_SYNC 0 +#define LDBM_NOSYNC 0 +#define LDBM_LOCKING 0 +#define LDBM_NOLOCKING 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 ) @@ -239,42 +220,45 @@ LDAP_END_DECL #define LDBM_WRITER O_WRONLY #define LDBM_WRCREAT (O_RDWR|O_CREAT) #define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT) -#define LDBM_FAST 0 + +#define LDBM_NOSYNC 0 +#define LDBM_SYNC 0 +#define LDBM_NOLOCK 0 +#define LDBM_SYNC 0 #define LDBM_SUFFIX ".ndbm" /* for ldbm_insert */ #define LDBM_INSERT DBM_INSERT #define LDBM_REPLACE DBM_REPLACE -#define LDBM_SYNC 0 #endif LDAP_BEGIN_DECL -int ldbm_initialize( void ); -int ldbm_shutdown( void ); +LDAP_LDBM_F (int) ldbm_initialize( void ); +LDAP_LDBM_F (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 ); -void ldbm_datum_free( LDBM ldbm, Datum data ); -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 ); +LDAP_LDBM_F (int) ldbm_errno( LDBM ldbm ); +LDAP_LDBM_F (LDBM) ldbm_open( char *name, int rw, int mode, int dbcachesize ); +LDAP_LDBM_F (void) ldbm_close( LDBM ldbm ); +LDAP_LDBM_F (void) ldbm_sync( LDBM ldbm ); +LDAP_LDBM_F (void) ldbm_datum_free( LDBM ldbm, Datum data ); +LDAP_LDBM_F (Datum) ldbm_datum_dup( LDBM ldbm, Datum data ); +LDAP_LDBM_F (Datum) ldbm_fetch( LDBM ldbm, Datum key ); +LDAP_LDBM_F (int) ldbm_store( LDBM ldbm, Datum key, Datum data, int flags ); +LDAP_LDBM_F (int) ldbm_delete( LDBM ldbm, Datum key ); -Datum ldbm_firstkey( LDBM ldbm, LDBMCursor **cursor ); -Datum ldbm_nextkey( LDBM ldbm, Datum key, LDBMCursor *cursor ); +LDAP_LDBM_F (Datum) ldbm_firstkey( LDBM ldbm, LDBMCursor **cursor ); +LDAP_LDBM_F (Datum) ldbm_nextkey( LDBM ldbm, Datum key, LDBMCursor *cursor ); /* initialization of Datum structures */ -#ifdef HAVE_BERKELEY_DB2 - void *ldbm_malloc( size_t size ); -# define ldbm_datum_init(d) ((void)memset(&(d), 0, sizeof(Datum))) +#if defined( HAVE_BERKELEY_DB ) && (DB_VERSION_MAJOR >= 2) + LDAP_LDBM_F (void *) ldbm_malloc( size_t size ); +# define ldbm_datum_init(d) ((void)memset(&(d), '\0', sizeof(Datum))) #else # define ldbm_datum_init(d) ((void)0) -#endif /* HAVE_BERKELEY_DB2 */ +#endif /* HAVE_BERKELEY_DB */ LDAP_END_DECL