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