]> git.sur5r.net Git - openldap/blob - include/ldbm.h
Kill off #elif in ldap/include/. K&R does not support it.
[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 /* Do not use #elif.  K&R does not support it. */
61 #else /* !LDBM_USE_DBBTREE */
62 #ifdef LDBM_USE_DBHASH
63
64 /*****************************************************************
65  *                                                               *
66  * use berkeley db hash package                                  *
67  *                                                               *
68  *****************************************************************/
69
70 #include <sys/types.h>
71 #include <limits.h>
72 #include <fcntl.h>
73
74 #ifdef HAVE_DB185_H
75 #       include <db_185.h>
76 #else
77 #       include <db.h>
78 #       ifdef LDBM_USE_DB2
79 #               define R_NOOVERWRITE DB_NOOVERWRITE
80 #               define DEFAULT_DB_PAGE_SIZE 1024
81 #       endif
82 #endif
83
84 typedef DBT     Datum;
85 #define dsize   size
86 #define dptr    data
87
88 typedef DB      *LDBM;
89
90 #define DB_TYPE         DB_HASH
91
92 /* for ldbm_open */
93 #ifdef LDBM_USE_DB2
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)
98 #else
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)
103 #       define LDBM_FAST        0
104 #endif
105
106 #define LDBM_SUFFIX     ".dbh"
107
108 /* for ldbm_insert */
109 #define LDBM_INSERT     R_NOOVERWRITE
110 #define LDBM_REPLACE    0
111 #define LDBM_SYNC       0x80000000
112
113 #else /* !LDBM_USE_DBHASH */
114 #ifdef HAVE_GDBM
115
116 /*****************************************************************
117  *                                                               *
118  * use gdbm if possible                                          *
119  *                                                               *
120  *****************************************************************/
121
122 #include <gdbm.h>
123
124 typedef datum           Datum;
125
126 typedef GDBM_FILE       LDBM;
127
128 extern gdbm_error       gdbm_errno;
129
130 /* for ldbm_open */
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
136
137 #define LDBM_SUFFIX     ".gdbm"
138
139 /* for ldbm_insert */
140 #define LDBM_INSERT     GDBM_INSERT
141 #define LDBM_REPLACE    GDBM_REPLACE
142 #define LDBM_SYNC       0x80000000
143
144
145 #else /* !HAVE_GDBM */
146 #ifdef HAVE_NDBM
147
148 /*****************************************************************
149  *                                                               *
150  * if none of the above use ndbm, the standard unix thing        *
151  *                                                               *
152  *****************************************************************/
153
154 #include <ndbm.h>
155
156 #ifdef HAVE_FCNTL_H
157 #include <fcntl.h>
158 #endif
159
160 typedef datum   Datum;
161
162 typedef DBM     *LDBM;
163
164 /* for ldbm_open */
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)
169 #define LDBM_FAST       0
170
171 #define LDBM_SUFFIX     ".ndbm"
172
173 /* for ldbm_insert */
174 #define LDBM_INSERT     DBM_INSERT
175 #define LDBM_REPLACE    DBM_REPLACE
176 #define LDBM_SYNC       0
177
178 #endif /* HAVE_NDBM */
179 #endif /* HAVE_GDBM */
180 #endif /* LDBM_USE_DBHASH */
181 #endif /* LDBM_USE_DBBTREE */
182
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 );
192
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 );
197 #else
198         Datum   ldbm_firstkey( LDBM ldbm );
199         Datum   ldbm_nextkey( LDBM ldbm, Datum key );
200 #endif
201
202 #endif /* _ldbm_h_ */