]> git.sur5r.net Git - openldap/blob - include/ldbm.h
1e3c61410c52a63442b7e8ab181bf0e5da32bc97
[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 HAVE_SLEEPYCAT_DB2
51 #       include <db_185.h>
52 #else
53 #       include <db.h>
54 #endif
55
56 typedef DBT     Datum;
57 #define dsize   size
58 #define dptr    data
59
60 typedef DB      *LDBM;
61
62 #define DB_TYPE         DB_HASH
63
64 /* for ldbm_open */
65 #define LDBM_READER     O_RDONLY
66 #define LDBM_WRITER     O_RDWR
67 #define LDBM_WRCREAT    (O_RDWR|O_CREAT)
68 #define LDBM_NEWDB      (O_RDWR|O_TRUNC|O_CREAT)
69 #define LDBM_FAST       0
70
71 #define LDBM_SUFFIX     ".dbh"
72
73 /* for ldbm_insert */
74 #define LDBM_INSERT     R_NOOVERWRITE
75 #define LDBM_REPLACE    0
76 #define LDBM_SYNC       0x80000000
77
78 extern int      errno;
79
80 #else /* end of db hash */
81
82 #ifdef LDBM_USE_DBBTREE
83
84 /*****************************************************************
85  *                                                               *
86  * use berkeley db btree package                                 *
87  *                                                               *
88  *****************************************************************/
89
90 #include <sys/types.h>
91 #include <limits.h>
92 #include <fcntl.h>
93 #ifdef HAVE_SLEEPYCAT_DB2
94 #       include <db_185.h>
95 #else
96 #       include <db.h>
97 #endif
98
99 typedef DBT     Datum;
100 #define dsize   size
101 #define dptr    data
102
103 typedef DB      *LDBM;
104
105 #define DB_TYPE         DB_BTREE
106
107 /* for ldbm_open */
108 #define LDBM_READER     O_RDONLY
109 #define LDBM_WRITER     O_RDWR
110 #define LDBM_WRCREAT    (O_RDWR|O_CREAT)
111 #define LDBM_NEWDB      (O_RDWR|O_TRUNC|O_CREAT)
112 #define LDBM_FAST       0
113
114 #define LDBM_SUFFIX     ".dbb"
115 #define LDBM_ORDERED    1
116
117 /* for ldbm_insert */
118 #define LDBM_INSERT     R_NOOVERWRITE
119 #define LDBM_REPLACE    0
120 #define LDBM_SYNC       0x80000000
121
122 extern int      errno;
123
124 #else /* end of db btree */
125
126 #ifdef LDBM_USE_NDBM
127
128 /*****************************************************************
129  *                                                               *
130  * if none of the above use ndbm, the standard unix thing        *
131  *                                                               *
132  *****************************************************************/
133
134 #include <ndbm.h>
135 #ifndef O_RDONLY
136 #include <fcntl.h>
137 #endif
138
139 typedef datum   Datum;
140
141 typedef DBM     *LDBM;
142
143 /* for ldbm_open */
144 #define LDBM_READER     O_RDONLY
145 #define LDBM_WRITER     O_WRONLY
146 #define LDBM_WRCREAT    (O_RDWR|O_CREAT)
147 #define LDBM_NEWDB      (O_RDWR|O_TRUNC|O_CREAT)
148 #define LDBM_FAST       0
149
150 #define LDBM_SUFFIX     ".ndbm"
151
152 /* for ldbm_insert */
153 #define LDBM_INSERT     DBM_INSERT
154 #define LDBM_REPLACE    DBM_REPLACE
155 #define LDBM_SYNC       0
156
157 #endif /* ndbm */
158 #endif /* db hash */
159 #endif /* db btree */
160 #endif /* gdbm */
161
162 LDBM    ldbm_open( char *name, int rw, int mode, int dbcachesize );
163 void    ldbm_close( LDBM ldbm );
164 void    ldbm_sync( LDBM ldbm );
165 void    ldbm_datum_free( LDBM ldbm, Datum data );
166 Datum   ldbm_datum_dup( LDBM ldbm, Datum data );
167 Datum   ldbm_fetch( LDBM ldbm, Datum key );
168 int     ldbm_store( LDBM ldbm, Datum key, Datum data, int flags );
169 int     ldbm_delete( LDBM ldbm, Datum key );
170 Datum   ldbm_firstkey( LDBM ldbm );
171 Datum   ldbm_nextkey( LDBM ldbm, Datum key );
172 int     ldbm_errno( LDBM ldbm );
173
174 #endif /* _ldbm_h_ */