xref: /netbsd/external/bsd/nvi/dist/common/vi_db.h (revision 92354aad)
1*92354aadSchristos /*	$NetBSD: vi_db.h,v 1.3 2013/11/29 22:56:19 christos Exp $ */
208d478e3Schristos 
33a571abcSchristos #include <db.h>
43a571abcSchristos 
53a571abcSchristos #ifndef DB_BUFFER_SMALL
63a571abcSchristos #define DB_BUFFER_SMALL		ENOMEM
73a571abcSchristos #endif
83a571abcSchristos 
93a571abcSchristos #ifdef USE_BUNDLED_DB
103a571abcSchristos 
113a571abcSchristos typedef void DB_ENV;
123a571abcSchristos 
133a571abcSchristos typedef recno_t db_recno_t;
143a571abcSchristos #define DB_MAX_RECORDS MAX_REC_NUMBER
153a571abcSchristos 
163a571abcSchristos #define db_env_close(env,flags)
173a571abcSchristos #define db_env_create(env,flags)					\
1808d478e3Schristos 	(((void)env), 1)
193a571abcSchristos #define db_env_remove(env,path,flags)					\
203a571abcSchristos 	1
213a571abcSchristos #define db_open(db,file,type,flags,mode)				\
223a571abcSchristos     (db)->open(db, file, NULL, type, flags, mode)
233a571abcSchristos #define db_get_low(db,key,data,flags)					\
243a571abcSchristos     (db)->get(db, key, data, flags)
253a571abcSchristos #define db_close(db)							\
263a571abcSchristos     (db)->close(db)
273a571abcSchristos 
283a571abcSchristos #else
293a571abcSchristos 
30*92354aadSchristos #if USE_DB1 || (DB_VERSION_MAJOR >= 3 && DB_VERSION_MINOR >= 1)
313a571abcSchristos #define db_env_open(env,path,flags,mode)				\
323a571abcSchristos     (env)->open(env, path, flags, mode)
333a571abcSchristos #define db_env_remove(env,path,flags)					\
343a571abcSchristos     (env)->remove(env, path, flags)
353a571abcSchristos #else
363a571abcSchristos #define db_env_open(env,path,flags,mode)				\
373a571abcSchristos     (env)->open(env, path, NULL, flags, mode)
383a571abcSchristos #define db_env_remove(env,path,flags)					\
393a571abcSchristos     (env)->remove(env, path, NULL, flags)
403a571abcSchristos #endif
413a571abcSchristos 
423a571abcSchristos #define db_env_close(env,flags)						\
433a571abcSchristos     (env)->close(env, flags)
443a571abcSchristos 
453a571abcSchristos #if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
463a571abcSchristos #define db_open(db,file,type,flags,mode)				\
473a571abcSchristos     (db)->open(db, NULL, file, NULL, type, flags, mode)
483a571abcSchristos #else
493a571abcSchristos #define db_open(db,file,type,flags,mode)				\
503a571abcSchristos     (db)->open(db, file, NULL, type, flags, mode)
513a571abcSchristos #endif
523a571abcSchristos #define db_get_low(db,key,data,flags)					\
533a571abcSchristos     (db)->get(db, NULL, key, data, flags)
543a571abcSchristos #define db_close(db)							\
553a571abcSchristos     (db)->close(db, DB_NOSYNC)
563a571abcSchristos 
573a571abcSchristos #endif
583a571abcSchristos 
593a571abcSchristos #ifdef USE_DYNAMIC_LOADING
603a571abcSchristos #define db_create   	nvi_db_create
613a571abcSchristos #define db_env_create   nvi_db_env_create
623a571abcSchristos #define db_strerror 	nvi_db_strerror
633a571abcSchristos 
643a571abcSchristos extern int   (*nvi_db_create) __P((DB **, DB_ENV *, u_int32_t));
653a571abcSchristos extern int   (*nvi_db_env_create) __P((DB_ENV **, u_int32_t));
663a571abcSchristos extern char *(*nvi_db_strerror) __P((int));
673a571abcSchristos #endif
68*92354aadSchristos 
69*92354aadSchristos #ifdef USE_DB1
70*92354aadSchristos 
71*92354aadSchristos #define DB_AFTER	1
72*92354aadSchristos #define DB_APPEND	2
73*92354aadSchristos #define DB_BEFORE	3
74*92354aadSchristos #define DB_FIRST	7
75*92354aadSchristos #define DB_LAST		15
76*92354aadSchristos #define DB_SET		25
77*92354aadSchristos 
78*92354aadSchristos #define DB_NOTFOUND (-30989)
79*92354aadSchristos 
80*92354aadSchristos /* DBT emulation */
81*92354aadSchristos typedef DBT DBT_v1;
82*92354aadSchristos #undef DBT
83*92354aadSchristos #define DBT DBT_new
84*92354aadSchristos 
85*92354aadSchristos typedef struct {
86*92354aadSchristos 	void *data;
87*92354aadSchristos 	size_t size;
88*92354aadSchristos 
89*92354aadSchristos 	u_int32_t ulen;
90*92354aadSchristos 
91*92354aadSchristos #define DB_DBT_USERMEM 0x040
92*92354aadSchristos 	u_int32_t flags;
93*92354aadSchristos } DBT;
94*92354aadSchristos 
95*92354aadSchristos /* DB_ENV emulation */
96*92354aadSchristos struct __db_env_new;
97*92354aadSchristos typedef struct __db_env_new DB_ENV;
98*92354aadSchristos 
99*92354aadSchristos struct __db_env_new {
100*92354aadSchristos 	int (*close)(DB_ENV *, u_int32_t);
101*92354aadSchristos 	int (*open)(DB_ENV *, char *, u_int32_t, int);
102*92354aadSchristos #define DB_INIT_MPOOL	0x004000
103*92354aadSchristos #define DB_PRIVATE	0x200000
104*92354aadSchristos 	int (*remove)(DB_ENV *, char *, u_int32_t);
105*92354aadSchristos 
106*92354aadSchristos 	char *base_path;
107*92354aadSchristos 	int mode;
108*92354aadSchristos };
109*92354aadSchristos 
110*92354aadSchristos /* DBC emulation */
111*92354aadSchristos 
112*92354aadSchristos struct __dbc_new;
113*92354aadSchristos typedef struct __dbc_new DBC;
114*92354aadSchristos 
115*92354aadSchristos typedef recno_t db_recno_t;
116*92354aadSchristos #define DB_MAX_RECORDS MAX_REC_NUMBER
117*92354aadSchristos 
118*92354aadSchristos #define DB_UNKNOWN (-1)
119*92354aadSchristos 
120*92354aadSchristos /* DB emulation */
121*92354aadSchristos typedef DB DB_old;
122*92354aadSchristos #undef DB
123*92354aadSchristos #define DB DB_new
124*92354aadSchristos typedef struct __db_new DB;
125*92354aadSchristos 
126*92354aadSchristos #undef DB_TXN
127*92354aadSchristos typedef void DB_TXN;
128*92354aadSchristos 
129*92354aadSchristos #undef DB_LSN
130*92354aadSchristos typedef struct {
131*92354aadSchristos 	int dummy;
132*92354aadSchristos } DB_LSN;
133*92354aadSchristos 
134*92354aadSchristos struct __db_new {
135*92354aadSchristos 	DB_old *actual_db;
136*92354aadSchristos 
137*92354aadSchristos 	int type;
138*92354aadSchristos 
139*92354aadSchristos 	int (*close)(DB *, u_int32_t);
140*92354aadSchristos #define	DB_NOSYNC	26		/* close() */
141*92354aadSchristos 
142*92354aadSchristos 	int (*open)(DB *, const char *, const char *, DBTYPE, u_int32_t, int);
143*92354aadSchristos #define	DB_CREATE	0x000001	/* Create file as necessary. */
144*92354aadSchristos #define	DB_TRUNCATE	0x004000	/* Discard existing DB (O_TRUNC) */
145*92354aadSchristos 
146*92354aadSchristos 	int (*sync)(DB *, u_int32_t);
147*92354aadSchristos 	int (*get)(DB *, DB_TXN *, DBT *, DBT *, u_int32_t);
148*92354aadSchristos 	int (*put)(DB *, DB_TXN *, DBT *, DBT *, u_int32_t);
149*92354aadSchristos 	int (*del)(DB *, DB_TXN *, DBT *, u_int32_t);
150*92354aadSchristos 
151*92354aadSchristos 	int (*cursor)(DB *, DB_TXN *, DBC **, u_int32_t);
152*92354aadSchristos 
153*92354aadSchristos 	int (*set_flags)(DB *, u_int32_t);
154*92354aadSchristos #define	DB_RENUMBER	0x0008		/* Recno: renumber on insert/delete. */
155*92354aadSchristos #define	DB_SNAPSHOT	0x0020		/* Recno: snapshot the input. */
156*92354aadSchristos 
157*92354aadSchristos 	int (*set_pagesize)(DB *, u_int32_t);
158*92354aadSchristos 
159*92354aadSchristos 	int (*set_re_delim)(DB *, int);
160*92354aadSchristos 	int (*set_re_source)(DB *, const char *);
161*92354aadSchristos 
162*92354aadSchristos 	RECNOINFO _recno_info;
163*92354aadSchristos 	u_int32_t _pagesize;
164*92354aadSchristos 	u_int32_t _flags;
165*92354aadSchristos };
166*92354aadSchristos 
167*92354aadSchristos struct __dbc_new {
168*92354aadSchristos 	DB *db;
169*92354aadSchristos 	db_recno_t pos;
170*92354aadSchristos 	DBT_v1 pos_key;
171*92354aadSchristos 	int (*c_close)(DBC *);
172*92354aadSchristos 	int (*c_get)(DBC *, DBT *, DBT *, u_int32_t);
173*92354aadSchristos 	int (*c_put)(DBC *, DBT *, DBT *, u_int32_t);
174*92354aadSchristos };
175*92354aadSchristos 
176*92354aadSchristos #endif /* USE_DB1 */
177