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