]> git.sur5r.net Git - openldap/blob - include/ldbm.h
Add varients of REENTRANT...
[openldap] / include / ldbm.h
1 /* ldbm.h - ldap dbm compatibility routine header file */
2
3 #ifndef _LDBM_H_
4 #define _LDBM_H_
5
6 #ifdef LDBM_USE_DBBTREE
7
8 /*****************************************************************
9  *                                                               *
10  * use berkeley db btree package                                 *
11  *                                                               *
12  *****************************************************************/
13
14 #include <sys/types.h>
15 #include <limits.h>
16 #include <fcntl.h>
17
18 #ifdef HAVE_DB185_H
19 #       include <db_185.h>
20 #else
21 #       include <db.h>
22 #       ifdef HAVE_BERKELEY_DB2
23 #               define R_NOOVERWRITE DB_NOOVERWRITE
24 #               define DEFAULT_DB_PAGE_SIZE 1024
25 #       endif
26 #endif
27
28
29 typedef DBT     Datum;
30 #define dsize   size
31 #define dptr    data
32
33 typedef DB      *LDBM;
34
35 #define DB_TYPE         DB_BTREE
36
37 /* for ldbm_open */
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)
43 #else
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)
48 #endif
49
50 #  define LDBM_FAST     0
51
52 #define LDBM_SUFFIX     ".dbb"
53 #define LDBM_ORDERED    1
54
55 /* for ldbm_insert */
56 #define LDBM_INSERT     R_NOOVERWRITE
57 #define LDBM_REPLACE    0
58 #define LDBM_SYNC       0x80000000
59
60 #elif defined( LDBM_USE_DBHASH )
61
62 /*****************************************************************
63  *                                                               *
64  * use berkeley db hash package                                  *
65  *                                                               *
66  *****************************************************************/
67
68 #include <sys/types.h>
69 #include <limits.h>
70 #include <fcntl.h>
71
72 #ifdef HAVE_DB185_H
73 #       include <db_185.h>
74 #else
75 #       include <db.h>
76 #       ifdef LDBM_USE_DB2
77 #               define R_NOOVERWRITE DB_NOOVERWRITE
78 #               define DEFAULT_DB_PAGE_SIZE 1024
79 #       endif
80 #endif
81
82 typedef DBT     Datum;
83 #define dsize   size
84 #define dptr    data
85
86 typedef DB      *LDBM;
87
88 #define DB_TYPE         DB_HASH
89
90 /* for ldbm_open */
91 #ifdef LDBM_USE_DB2
92 #       define LDBM_READER      DB_RDONLY
93 #       define LDBM_WRITER      0x00000      /* hopefully */
94 #       define LDBM_WRCREAT     (DB_NOMMAP|DB_CREATE|DB_THREAD)
95 #       define LDBM_NEWDB       (DB_TRUNCATE|DB_CREATE|DB_THREAD)
96 #else
97 #       define LDBM_READER      O_RDONLY
98 #       define LDBM_WRITER      O_RDWR
99 #       define LDBM_WRCREAT     (O_RDWR|O_CREAT)
100 #       define LDBM_NEWDB       (O_RDWR|O_TRUNC|O_CREAT)
101 #       define LDBM_FAST        0
102 #endif
103
104 #define LDBM_SUFFIX     ".dbh"
105
106 /* for ldbm_insert */
107 #define LDBM_INSERT     R_NOOVERWRITE
108 #define LDBM_REPLACE    0
109 #define LDBM_SYNC       0x80000000
110
111 #elif defined( HAVE_GDBM )
112
113 /*****************************************************************
114  *                                                               *
115  * use gdbm if possible                                          *
116  *                                                               *
117  *****************************************************************/
118
119 #include <gdbm.h>
120
121 typedef datum           Datum;
122
123 typedef GDBM_FILE       LDBM;
124
125 extern gdbm_error       gdbm_errno;
126
127 /* for ldbm_open */
128 #define LDBM_READER     GDBM_READER
129 #define LDBM_WRITER     GDBM_WRITER
130 #define LDBM_WRCREAT    GDBM_WRCREAT
131 #define LDBM_NEWDB      GDBM_NEWDB
132 #define LDBM_FAST       GDBM_FAST
133
134 #define LDBM_SUFFIX     ".gdbm"
135
136 /* for ldbm_insert */
137 #define LDBM_INSERT     GDBM_INSERT
138 #define LDBM_REPLACE    GDBM_REPLACE
139 #define LDBM_SYNC       0x80000000
140
141
142 #elif defined( HAVE_NDBM )
143
144 /*****************************************************************
145  *                                                               *
146  * if none of the above use ndbm, the standard unix thing        *
147  *                                                               *
148  *****************************************************************/
149
150 #include <ndbm.h>
151
152 #ifdef HAVE_FCNTL_H
153 #include <fcntl.h>
154 #endif
155
156 typedef datum   Datum;
157
158 typedef DBM     *LDBM;
159
160 /* for ldbm_open */
161 #define LDBM_READER     O_RDONLY
162 #define LDBM_WRITER     O_WRONLY
163 #define LDBM_WRCREAT    (O_RDWR|O_CREAT)
164 #define LDBM_NEWDB      (O_RDWR|O_TRUNC|O_CREAT)
165 #define LDBM_FAST       0
166
167 #define LDBM_SUFFIX     ".ndbm"
168
169 /* for ldbm_insert */
170 #define LDBM_INSERT     DBM_INSERT
171 #define LDBM_REPLACE    DBM_REPLACE
172 #define LDBM_SYNC       0
173
174 #endif
175
176 int     ldbm_errno( LDBM ldbm );
177 LDBM    ldbm_open( char *name, int rw, int mode, int dbcachesize );
178 void    ldbm_close( LDBM ldbm );
179 void    ldbm_sync( LDBM ldbm );
180 void    ldbm_datum_free( LDBM ldbm, Datum data );
181 Datum   ldbm_datum_dup( LDBM ldbm, Datum data );
182 Datum   ldbm_fetch( LDBM ldbm, Datum key );
183 int     ldbm_store( LDBM ldbm, Datum key, Datum data, int flags );
184 int     ldbm_delete( LDBM ldbm, Datum key );
185
186 #if HAVE_BERKELEY_DB2
187         void   *ldbm_malloc( size_t size );
188         Datum   ldbm_firstkey( LDBM ldbm, DBC **dbch );
189         Datum   ldbm_nextkey( LDBM ldbm, Datum key, DBC *dbcp );
190 #else
191         Datum   ldbm_firstkey( LDBM ldbm );
192         Datum   ldbm_nextkey( LDBM ldbm, Datum key );
193 #endif
194
195 #endif /* _ldbm_h_ */