1 /* ldbm.h - ldap dbm compatibility routine header file */
6 #ifdef LDBM_USE_DBBTREE
8 /*****************************************************************
10 * use berkeley db btree package *
12 *****************************************************************/
14 #include <sys/types.h>
22 # ifdef HAVE_BERKELEY_DB2
23 # define R_NOOVERWRITE DB_NOOVERWRITE
24 # define DEFAULT_DB_PAGE_SIZE 1024
35 #define DB_TYPE DB_BTREE
38 #ifdef HAVE_BERKELEY_DB2
39 # define LDBM_READER DB_RDONLY
40 # define LDBM_WRITER 0x00000 /* hopefully */
41 # define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE|DB_THREAD)
42 # define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE|DB_THREAD)
44 # define LDBM_READER O_RDONLY
45 # define LDBM_WRITER O_RDWR
46 # define LDBM_WRCREAT (O_RDWR|O_CREAT)
47 # define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)
52 #define LDBM_SUFFIX ".dbb"
53 #define LDBM_ORDERED 1
56 #define LDBM_INSERT R_NOOVERWRITE
57 #define LDBM_REPLACE 0
58 #define LDBM_SYNC 0x80000000
60 /* Do not use #elif. K&R does not support it. */
61 #else /* !LDBM_USE_DBBTREE */
62 #ifdef LDBM_USE_DBHASH
64 /*****************************************************************
66 * use berkeley db hash package *
68 *****************************************************************/
70 #include <sys/types.h>
79 # define R_NOOVERWRITE DB_NOOVERWRITE
80 # define DEFAULT_DB_PAGE_SIZE 1024
90 #define DB_TYPE DB_HASH
94 # define LDBM_READER DB_RDONLY
95 # define LDBM_WRITER 0x00000 /* hopefully */
96 # define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE|DB_THREAD)
97 # define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE|DB_THREAD)
99 # define LDBM_READER O_RDONLY
100 # define LDBM_WRITER O_RDWR
101 # define LDBM_WRCREAT (O_RDWR|O_CREAT)
102 # define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)
106 #define LDBM_SUFFIX ".dbh"
108 /* for ldbm_insert */
109 #define LDBM_INSERT R_NOOVERWRITE
110 #define LDBM_REPLACE 0
111 #define LDBM_SYNC 0x80000000
113 #else /* !LDBM_USE_DBHASH */
116 /*****************************************************************
118 * use gdbm if possible *
120 *****************************************************************/
126 typedef GDBM_FILE LDBM;
128 extern gdbm_error gdbm_errno;
131 #define LDBM_READER GDBM_READER
132 #define LDBM_WRITER GDBM_WRITER
133 #define LDBM_WRCREAT GDBM_WRCREAT
134 #define LDBM_NEWDB GDBM_NEWDB
135 #define LDBM_FAST GDBM_FAST
137 #define LDBM_SUFFIX ".gdbm"
139 /* for ldbm_insert */
140 #define LDBM_INSERT GDBM_INSERT
141 #define LDBM_REPLACE GDBM_REPLACE
142 #define LDBM_SYNC 0x80000000
145 #else /* !HAVE_GDBM */
148 /*****************************************************************
150 * if none of the above use ndbm, the standard unix thing *
152 *****************************************************************/
165 #define LDBM_READER O_RDONLY
166 #define LDBM_WRITER O_WRONLY
167 #define LDBM_WRCREAT (O_RDWR|O_CREAT)
168 #define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)
171 #define LDBM_SUFFIX ".ndbm"
173 /* for ldbm_insert */
174 #define LDBM_INSERT DBM_INSERT
175 #define LDBM_REPLACE DBM_REPLACE
178 #endif /* HAVE_NDBM */
179 #endif /* HAVE_GDBM */
180 #endif /* LDBM_USE_DBHASH */
181 #endif /* LDBM_USE_DBBTREE */
183 int ldbm_errno( LDBM ldbm );
184 LDBM ldbm_open( char *name, int rw, int mode, int dbcachesize );
185 void ldbm_close( LDBM ldbm );
186 void ldbm_sync( LDBM ldbm );
187 void ldbm_datum_free( LDBM ldbm, Datum data );
188 Datum ldbm_datum_dup( LDBM ldbm, Datum data );
189 Datum ldbm_fetch( LDBM ldbm, Datum key );
190 int ldbm_store( LDBM ldbm, Datum key, Datum data, int flags );
191 int ldbm_delete( LDBM ldbm, Datum key );
193 #if HAVE_BERKELEY_DB2
194 void *ldbm_malloc( size_t size );
195 Datum ldbm_firstkey( LDBM ldbm, DBC **dbch );
196 Datum ldbm_nextkey( LDBM ldbm, Datum key, DBC *dbcp );
198 Datum ldbm_firstkey( LDBM ldbm );
199 Datum ldbm_nextkey( LDBM ldbm, Datum key );
202 #endif /* _ldbm_h_ */