]> arthur.barton.de Git - netatalk.git/blobdiff - etc/cnid_dbd/dbif.h
Set cachesize for rebuild db
[netatalk.git] / etc / cnid_dbd / dbif.h
index fcb8b0bde516663b51ac5eafe945500030fe7941..c63f302170bcfd0438eec7e6f425edb2bc752e88 100644 (file)
@@ -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
      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
   --------------------------
   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 <sys/cdefs.h>
 #include <db.h>
+#include <atalk/adouble.h>
 #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