]> git.sur5r.net Git - openldap/blob - include/ldbm.h
Add EXEEXT and MKVERSION support.
[openldap] / include / ldbm.h
1 /*
2  * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted only
6  * as authorized by the OpenLDAP Public License.  A copy of this
7  * license is available at http://www.OpenLDAP.org/license.html or
8  * in file LICENSE in the top-level directory of the distribution.
9  */
10 /* ldbm.h - ldap dbm compatibility routine header file */
11
12 #ifndef _LDBM_H_
13 #define _LDBM_H_
14
15 #include <ldap_cdefs.h>
16
17 #ifdef LDBM_USE_DBBTREE
18
19 /*****************************************************************
20  *                                                               *
21  * use berkeley db btree package                                 *
22  *                                                               *
23  *****************************************************************/
24
25 #include <sys/types.h>
26 #include <limits.h>
27 #include <fcntl.h>
28
29 #ifdef HAVE_DB_185_H
30 #       include <db_185.h>
31 #else
32 #       ifdef HAVE_DB1_DB_H
33 #               include <db1/db.h>
34 #       else
35 #               include <db.h>
36 #       endif
37 #       ifdef HAVE_BERKELEY_DB2
38 #               define R_NOOVERWRITE DB_NOOVERWRITE
39 #               define DEFAULT_DB_PAGE_SIZE 1024
40 #       endif
41 #endif
42
43
44 LDAP_BEGIN_DECL
45
46 typedef DBT     Datum;
47 #define dsize   size
48 #define dptr    data
49
50 typedef DB      *LDBM;
51
52 LDAP_END_DECL
53
54 #define DB_TYPE         DB_BTREE
55
56 /* for ldbm_open */
57 #ifdef HAVE_BERKELEY_DB2
58 #       define LDBM_READER      DB_RDONLY
59 #       define LDBM_WRITER      0x00000      /* hopefully */
60 #       define LDBM_WRCREAT     (DB_NOMMAP|DB_CREATE|DB_THREAD)
61 #       define LDBM_NEWDB       (DB_TRUNCATE|DB_CREATE|DB_THREAD)
62 #else
63 #       define LDBM_READER      O_RDONLY
64 #       define LDBM_WRITER      O_RDWR
65 #       define LDBM_WRCREAT     (O_RDWR|O_CREAT)
66 #       define LDBM_NEWDB       (O_RDWR|O_TRUNC|O_CREAT)
67 #endif
68
69 #  define LDBM_FAST     0
70
71 #define LDBM_SUFFIX     ".dbb"
72 #define LDBM_ORDERED    1
73
74 /* for ldbm_insert */
75 #define LDBM_INSERT     R_NOOVERWRITE
76 #define LDBM_REPLACE    0
77 #define LDBM_SYNC       0x80000000
78
79 #elif defined( LDBM_USE_DBHASH )
80
81 /*****************************************************************
82  *                                                               *
83  * use berkeley db hash package                                  *
84  *                                                               *
85  *****************************************************************/
86
87 #include <sys/types.h>
88 #include <limits.h>
89 #include <fcntl.h>
90
91 #ifdef HAVE_DB_185_H
92 #       include <db_185.h>
93 #else
94 #       ifdef HAVE_DB1_DB_H
95 #               include <db1/db.h>
96 #       else
97 #               include <db.h>
98 #       endif
99 #       ifdef LDBM_USE_DB2
100 #               define R_NOOVERWRITE DB_NOOVERWRITE
101 #               define DEFAULT_DB_PAGE_SIZE 1024
102 #       endif
103 #endif
104
105 LDAP_BEGIN_DECL
106
107 typedef DBT     Datum;
108 #define dsize   size
109 #define dptr    data
110
111 typedef DB      *LDBM;
112
113 LDAP_END_DECL
114
115 #define DB_TYPE         DB_HASH
116
117 /* for ldbm_open */
118 #ifdef LDBM_USE_DB2
119 #       define LDBM_READER      DB_RDONLY
120 #       define LDBM_WRITER      0x00000      /* hopefully */
121 #       define LDBM_WRCREAT     (DB_NOMMAP|DB_CREATE|DB_THREAD)
122 #       define LDBM_NEWDB       (DB_TRUNCATE|DB_CREATE|DB_THREAD)
123 #else
124 #       define LDBM_READER      O_RDONLY
125 #       define LDBM_WRITER      O_RDWR
126 #       define LDBM_WRCREAT     (O_RDWR|O_CREAT)
127 #       define LDBM_NEWDB       (O_RDWR|O_TRUNC|O_CREAT)
128 #       define LDBM_FAST        0
129 #endif
130
131 #define LDBM_SUFFIX     ".dbh"
132
133 /* for ldbm_insert */
134 #define LDBM_INSERT     R_NOOVERWRITE
135 #define LDBM_REPLACE    0
136 #define LDBM_SYNC       0x80000000
137
138 #elif defined( HAVE_GDBM )
139
140 /*****************************************************************
141  *                                                               *
142  * use gdbm if possible                                          *
143  *                                                               *
144  *****************************************************************/
145
146 #include <gdbm.h>
147
148 LDAP_BEGIN_DECL
149
150 typedef datum           Datum;
151
152 typedef GDBM_FILE       LDBM;
153
154 extern gdbm_error       gdbm_errno;
155
156 LDAP_END_DECL
157
158 /* for ldbm_open */
159 #define LDBM_READER     GDBM_READER
160 #define LDBM_WRITER     GDBM_WRITER
161 #define LDBM_WRCREAT    GDBM_WRCREAT
162 #define LDBM_NEWDB      GDBM_NEWDB
163 #define LDBM_FAST       GDBM_FAST
164
165 #define LDBM_SUFFIX     ".gdbm"
166
167 /* for ldbm_insert */
168 #define LDBM_INSERT     GDBM_INSERT
169 #define LDBM_REPLACE    GDBM_REPLACE
170 #define LDBM_SYNC       0x80000000
171
172 #elif defined( HAVE_MDBM )
173
174 /*****************************************************************
175  *                                                               *
176  * use mdbm if possible                                          *
177  *                                                               *
178  *****************************************************************/
179
180 #include <mdbm.h>
181
182 LDAP_BEGIN_DECL
183
184 typedef datum           Datum;
185 typedef MDBM            *LDBM;
186
187 LDAP_END_DECL
188     
189 #include <sys/types.h>
190 #include <sys/stat.h>
191 #include <fcntl.h>
192
193 /* for ldbm_open */
194 #define LDBM_READER     O_RDONLY
195 #define LDBM_WRITER     O_RDWR
196 #define LDBM_WRCREAT    (O_RDWR|O_CREAT)
197 #define LDBM_NEWDB      (O_RDWR|O_TRUNC|O_CREAT)
198 #define LDBM_FAST       0
199
200 #define LDBM_SUFFIX     ".mdbm"
201
202 /* for ldbm_insert */
203 #define LDBM_INSERT     MDBM_INSERT
204 #define LDBM_REPLACE    MDBM_REPLACE
205 #define LDBM_SYNC       0x80000000
206
207
208 #elif defined( HAVE_NDBM )
209
210 /*****************************************************************
211  *                                                               *
212  * if none of the above use ndbm, the standard unix thing        *
213  *                                                               *
214  *****************************************************************/
215
216 #include <ndbm.h>
217
218 #ifdef HAVE_FCNTL_H
219 #include <fcntl.h>
220 #endif
221
222 LDAP_BEGIN_DECL
223
224 typedef datum   Datum;
225
226 typedef DBM     *LDBM;
227
228 LDAP_END_DECL
229
230 /* for ldbm_open */
231 #define LDBM_READER     O_RDONLY
232 #define LDBM_WRITER     O_WRONLY
233 #define LDBM_WRCREAT    (O_RDWR|O_CREAT)
234 #define LDBM_NEWDB      (O_RDWR|O_TRUNC|O_CREAT)
235 #define LDBM_FAST       0
236
237 #define LDBM_SUFFIX     ".ndbm"
238
239 /* for ldbm_insert */
240 #define LDBM_INSERT     DBM_INSERT
241 #define LDBM_REPLACE    DBM_REPLACE
242 #define LDBM_SYNC       0
243
244 #endif
245
246 LDAP_BEGIN_DECL
247
248 int ldbm_initialize( void );
249 int ldbm_shutdown( void );
250
251 int     ldbm_errno( LDBM ldbm );
252 LDBM    ldbm_open( char *name, int rw, int mode, int dbcachesize );
253 void    ldbm_close( LDBM ldbm );
254 void    ldbm_sync( LDBM ldbm );
255 void    ldbm_datum_free( LDBM ldbm, Datum data );
256 Datum   ldbm_datum_dup( LDBM ldbm, Datum data );
257 Datum   ldbm_fetch( LDBM ldbm, Datum key );
258 int     ldbm_store( LDBM ldbm, Datum key, Datum data, int flags );
259 int     ldbm_delete( LDBM ldbm, Datum key );
260
261 #if HAVE_BERKELEY_DB2
262         void   *ldbm_malloc( size_t size );
263         Datum   ldbm_firstkey( LDBM ldbm, DBC **dbch );
264         Datum   ldbm_nextkey( LDBM ldbm, Datum key, DBC *dbcp );
265 #else
266         Datum   ldbm_firstkey( LDBM ldbm );
267         Datum   ldbm_nextkey( LDBM ldbm, Datum key );
268 #endif
269
270
271 /* initialization of Datum structures */
272 #ifdef HAVE_BERKELEY_DB2
273 #   define ldbm_datum_init(d) ((void)memset(&(d), 0, sizeof(Datum)))
274 #else
275 #   define ldbm_datum_init(d) ((void)0)
276 #endif  /* HAVE_BERKELEY_DB2 */
277
278 LDAP_END_DECL
279
280 #endif /* _ldbm_h_ */