1 /* ldbm.h - ldap dbm compatibility routine header file */
8 /*****************************************************************
10 * use gdbm if possible *
12 *****************************************************************/
18 typedef GDBM_FILE LDBM;
20 extern gdbm_error gdbm_errno;
23 #define LDBM_READER GDBM_READER
24 #define LDBM_WRITER GDBM_WRITER
25 #define LDBM_WRCREAT GDBM_WRCREAT
26 #define LDBM_NEWDB GDBM_NEWDB
27 #define LDBM_FAST GDBM_FAST
29 #define LDBM_SUFFIX ".gdbm"
32 #define LDBM_INSERT GDBM_INSERT
33 #define LDBM_REPLACE GDBM_REPLACE
34 #define LDBM_SYNC 0x80000000
36 #else /* end of gdbm */
38 #ifdef LDBM_USE_DBHASH
40 /*****************************************************************
42 * use berkeley db hash package *
44 *****************************************************************/
46 #include <sys/types.h>
50 #ifdef LDBM_USE_DB2_COMPAT185
55 # define R_NOOVERWRITE DB_NOOVERWRITE
56 # define DEFAULT_DB_PAGE_SIZE 1024
66 #define DB_TYPE DB_HASH
70 # define LDBM_READER DB_RDONLY
71 # define LDBM_WRITER 0x00000 /* hopefully */
72 # define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE|DB_THREAD)
73 # define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE|DB_THREAD)
75 # define LDBM_READER O_RDONLY
76 # define LDBM_WRITER O_RDWR
77 # define LDBM_WRCREAT (O_RDWR|O_CREAT)
78 # define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)
82 #define LDBM_SUFFIX ".dbh"
85 #define LDBM_INSERT R_NOOVERWRITE
86 #define LDBM_REPLACE 0
87 #define LDBM_SYNC 0x80000000
91 #else /* end of db hash */
93 #ifdef LDBM_USE_DBBTREE
95 /*****************************************************************
97 * use berkeley db btree package *
99 *****************************************************************/
101 #include <sys/types.h>
105 #ifdef LDBM_USE_DB2_COMPAT185
110 # define R_NOOVERWRITE DB_NOOVERWRITE
111 # define DEFAULT_DB_PAGE_SIZE 1024
122 #define DB_TYPE DB_BTREE
126 # define LDBM_READER DB_RDONLY
127 # define LDBM_WRITER 0x00000 /* hopefully */
128 # define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE|DB_THREAD)
129 # define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE|DB_THREAD)
131 # define LDBM_READER O_RDONLY
132 # define LDBM_WRITER O_RDWR
133 # define LDBM_WRCREAT (O_RDWR|O_CREAT)
134 # define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)
139 #define LDBM_SUFFIX ".dbb"
140 #define LDBM_ORDERED 1
142 /* for ldbm_insert */
143 #define LDBM_INSERT R_NOOVERWRITE
144 #define LDBM_REPLACE 0
145 #define LDBM_SYNC 0x80000000
149 #else /* end of db btree */
153 /*****************************************************************
155 * if none of the above use ndbm, the standard unix thing *
157 *****************************************************************/
169 #define LDBM_READER O_RDONLY
170 #define LDBM_WRITER O_WRONLY
171 #define LDBM_WRCREAT (O_RDWR|O_CREAT)
172 #define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)
175 #define LDBM_SUFFIX ".ndbm"
177 /* for ldbm_insert */
178 #define LDBM_INSERT DBM_INSERT
179 #define LDBM_REPLACE DBM_REPLACE
184 #endif /* db btree */
187 int ldbm_errno( LDBM ldbm );
188 LDBM ldbm_open( char *name, int rw, int mode, int dbcachesize );
189 void ldbm_close( LDBM ldbm );
190 void ldbm_sync( LDBM ldbm );
191 void ldbm_datum_free( LDBM ldbm, Datum data );
192 Datum ldbm_datum_dup( LDBM ldbm, Datum data );
193 Datum ldbm_fetch( LDBM ldbm, Datum key );
194 int ldbm_store( LDBM ldbm, Datum key, Datum data, int flags );
195 int ldbm_delete( LDBM ldbm, Datum key );
198 void *ldbm_malloc( size_t size );
199 Datum ldbm_firstkey( LDBM ldbm, DBC **dbch );
200 Datum ldbm_nextkey( LDBM ldbm, Datum key, DBC *dbcp );
202 Datum ldbm_firstkey( LDBM ldbm );
203 Datum ldbm_nextkey( LDBM ldbm, Datum key );
206 #endif /* _ldbm_h_ */