X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fcnid_dbd%2Fdbif.h;h=c63f302170bcfd0438eec7e6f425edb2bc752e88;hb=7bd0ab8692a994665b52d5680359e64866526fc1;hp=fcb8b0bde516663b51ac5eafe945500030fe7941;hpb=a4f455cdcdfdbdeb229b6dc17a944cbe4e51b1b7;p=netatalk.git diff --git a/etc/cnid_dbd/dbif.h b/etc/cnid_dbd/dbif.h index fcb8b0bd..c63f3021 100644 --- a/etc/cnid_dbd/dbif.h +++ b/etc/cnid_dbd/dbif.h @@ -1,5 +1,5 @@ /* - $Id: dbif.h,v 1.6 2009-05-14 13:46:08 franklahm Exp $ + $Id: dbif.h,v 1.9 2009-12-21 06:41:09 franklahm Exp $ Copyright (C) Joerg Lenneis 2003 Copyright (C) Frank Lahm 2009 @@ -17,9 +17,10 @@ dbd = dbif_init("cnid2.db"); Pass NULL to create an in-memory db. Note: the DBD type is NOT from BerkeleyDB ! We've defined it. - 3. Optional: - Call dbif_env_open to open an dbd environment, chdir to it beforehand - 4. Call dbif_open to finally open the CNID database itself + 3. Call dbif_env_open to open an dbd environment if you called dbif_init + with a filename. Pass a db_param here for on-disk databases. + 4. Call dbif_open to finally open the CNID database itself. Pass db_param + here for in-memory database. Querying the CNID database -------------------------- @@ -41,6 +42,14 @@ Closing ------- Call dbif_close. + + Silent Upgrade Support + ---------------------- + + On cnid_dbd shutdown we reopen the environment with recovery, close and then + remove it. This enables an upgraded netatalk installation possibly linked against + a newer bdb lib to succesfully open/create an environment and then silently + upgrade the database itself. How nice! */ #ifndef CNID_DBD_DBIF_H @@ -48,6 +57,7 @@ #include #include +#include #include "db_param.h" #define DBIF_DB_CNT 3 @@ -68,6 +78,7 @@ typedef struct { typedef struct { DB_ENV *db_env; DB_TXN *db_txn; + DBC *db_cur; /* for dbif_walk */ char *db_envhome; char *db_filename; FILE *db_errlog; @@ -77,14 +88,14 @@ typedef struct { /* Functions */ extern DBD *dbif_init(const char *envhome, const char *dbname); extern int dbif_env_open(DBD *dbd, struct db_param *dbp, uint32_t dbenv_oflags); -extern int dbif_open(DBD *dbd, struct db_param *dbp, int do_truncate); +extern int dbif_open(DBD *dbd, struct db_param *dbp, int reindex); extern int dbif_close(DBD *dbd); +extern int dbif_prep_upgrade(const char *path); extern int dbif_get(DBD *, const int, DBT *, DBT *, u_int32_t); extern int dbif_pget(DBD *, const int, DBT *, DBT *, DBT *, u_int32_t); extern int dbif_put(DBD *, const int, DBT *, DBT *, u_int32_t); extern int dbif_del(DBD *, const int, DBT *, u_int32_t); - extern int dbif_count(DBD *, const int, u_int32_t *); extern int dbif_stamp(DBD *, void *, int); extern int dbif_copy_rootinfokey(DBD *srcdbd, DBD *destdbd); @@ -94,6 +105,6 @@ extern int dbif_txn_abort(DBD *); extern void dbif_txn_close(DBD *dbd, int ret); /* Switch between commit+abort */ extern int dbif_txn_checkpoint(DBD *, u_int32_t, u_int32_t, u_int32_t); -extern int dbif_dump(DBD *, int dumpindexes); - +extern int dbif_dump(DBD *dbd, int dumpindexes); +extern int dbif_idwalk(DBD *dbd, cnid_t *cnid, int close); #endif