/*
- $Id: dbif.h,v 1.8 2009-09-03 08:35:15 franklahm Exp $
-
Copyright (C) Joerg Lenneis 2003
Copyright (C) Frank Lahm 2009
All Rights Reserved. See COPYING.
Pass NULL to create an in-memory db.
Note: the DBD type is NOT from BerkeleyDB ! We've defined it.
3. Call dbif_env_open to open an dbd environment if you called dbif_init
- with a filename.
- 4. Call dbif_open to finally open the CNID database itself
+ 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
--------------------------
#include <atalk/adouble.h>
#include "db_param.h"
-#define DBIF_DB_CNT 3
+#define DBIF_DB_CNT 4
#define DBIF_CNID 0
#define DBIF_IDX_DEVINO 1
#define DBIF_IDX_DIDNAME 2
+#define DBIF_IDX_NAME 3
+
+/* get_lock cmd and return value */
+#define LOCKFILENAME "lock"
+#define LOCK_FREE 0
+#define LOCK_UNLOCK 1
+#define LOCK_EXCL 2
+#define LOCK_SHRD 3
/* Structures */
typedef struct {
typedef struct {
DB_ENV *db_env;
+ struct db_param db_param;
DB_TXN *db_txn;
DBC *db_cur; /* for dbif_walk */
char *db_envhome;
char *db_filename;
FILE *db_errlog;
- db_table db_table[3];
+ db_table db_table[DBIF_DB_CNT];
} DBD;
/* Functions */
+extern int get_lock(int cmd, const char *dbpath);
+
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 reindex);
extern int dbif_close(DBD *dbd);
-extern int dbif_prep_upgrade(const char *path);
+extern int dbif_env_remove(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_search(DBD *dbd, DBT *key, char *resbuf);
extern int dbif_copy_rootinfokey(DBD *srcdbd, DBD *destdbd);
extern int dbif_txn_begin(DBD *);
extern int dbif_txn_commit(DBD *);
extern int dbif_txn_abort(DBD *);
-extern void dbif_txn_close(DBD *dbd, int ret); /* Switch between commit+abort */
+extern int 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 *dbd, int dumpindexes);