]> git.sur5r.net Git - openldap/blob - include/ldbm.h
Wrap $CC with quotes.
[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_GDBM
7
8 /*****************************************************************
9  *                                                               *
10  * use gdbm if possible                                          *
11  *                                                               *
12  *****************************************************************/
13
14 #include <gdbm.h>
15
16 typedef datum           Datum;
17
18 typedef GDBM_FILE       LDBM;
19
20 extern gdbm_error       gdbm_errno;
21
22 /* for ldbm_open */
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
28
29 #define LDBM_SUFFIX     ".gdbm"
30
31 /* for ldbm_insert */
32 #define LDBM_INSERT     GDBM_INSERT
33 #define LDBM_REPLACE    GDBM_REPLACE
34 #define LDBM_SYNC       0x80000000
35
36 #else /* end of gdbm */
37
38 #ifdef LDBM_USE_DBHASH
39
40 /*****************************************************************
41  *                                                               *
42  * use berkeley db hash package                                  *
43  *                                                               *
44  *****************************************************************/
45
46 #include <sys/types.h>
47 #include <limits.h>
48 #include <fcntl.h>
49
50 #ifdef LDBM_USE_DB2_COMPAT185
51 #       include <db_185.h>
52 #else
53 #       include <db.h>
54 #       ifdef LDBM_USE_DB2
55 #               define R_NOOVERWRITE DB_NOOVERWRITE
56 #               define DEFAULT_DB_PAGE_SIZE 1024
57 #       endif
58 #endif
59
60 typedef DBT     Datum;
61 #define dsize   size
62 #define dptr    data
63
64 typedef DB      *LDBM;
65
66 #define DB_TYPE         DB_HASH
67
68 /* for ldbm_open */
69 #ifdef LDBM_USE_DB2
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)
74 #else
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)
79 #       define LDBM_FAST        0
80 #endif
81
82 #define LDBM_SUFFIX     ".dbh"
83
84 /* for ldbm_insert */
85 #define LDBM_INSERT     R_NOOVERWRITE
86 #define LDBM_REPLACE    0
87 #define LDBM_SYNC       0x80000000
88
89 extern int      errno;
90
91 #else /* end of db hash */
92
93 #ifdef LDBM_USE_DBBTREE
94
95 /*****************************************************************
96  *                                                               *
97  * use berkeley db btree package                                 *
98  *                                                               *
99  *****************************************************************/
100
101 #include <sys/types.h>
102 #include <limits.h>
103 #include <fcntl.h>
104
105 #ifdef LDBM_USE_DB2_COMPAT185
106 #       include <db_185.h>
107 #else
108 #       include <db.h>
109 #       ifdef LDBM_USE_DB2
110 #               define R_NOOVERWRITE DB_NOOVERWRITE
111 #               define DEFAULT_DB_PAGE_SIZE 1024
112 #       endif
113 #endif
114
115
116 typedef DBT     Datum;
117 #define dsize   size
118 #define dptr    data
119
120 typedef DB      *LDBM;
121
122 #define DB_TYPE         DB_BTREE
123
124 /* for ldbm_open */
125 #ifdef LDBM_USE_DB2
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)
130 #else
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)
135 #endif
136
137 #  define LDBM_FAST     0
138
139 #define LDBM_SUFFIX     ".dbb"
140 #define LDBM_ORDERED    1
141
142 /* for ldbm_insert */
143 #define LDBM_INSERT     R_NOOVERWRITE
144 #define LDBM_REPLACE    0
145 #define LDBM_SYNC       0x80000000
146
147 extern int      errno;
148
149 #else /* end of db btree */
150
151 #ifdef LDBM_USE_NDBM
152
153 /*****************************************************************
154  *                                                               *
155  * if none of the above use ndbm, the standard unix thing        *
156  *                                                               *
157  *****************************************************************/
158
159 #include <ndbm.h>
160 #ifndef O_RDONLY
161 #include <fcntl.h>
162 #endif
163
164 typedef datum   Datum;
165
166 typedef DBM     *LDBM;
167
168 /* for ldbm_open */
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)
173 #define LDBM_FAST       0
174
175 #define LDBM_SUFFIX     ".ndbm"
176
177 /* for ldbm_insert */
178 #define LDBM_INSERT     DBM_INSERT
179 #define LDBM_REPLACE    DBM_REPLACE
180 #define LDBM_SYNC       0
181
182 #endif /* ndbm */
183 #endif /* db hash */
184 #endif /* db btree */
185 #endif /* gdbm */
186
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 );
196
197 #if LDBM_USE_DB2
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 );
201 #else
202         Datum   ldbm_firstkey( LDBM ldbm );
203         Datum   ldbm_nextkey( LDBM ldbm, Datum key );
204 #endif
205
206 #endif /* _ldbm_h_ */