From e40dae106424d6b7d6e9fa10f5fd0ee08df76f6d Mon Sep 17 00:00:00 2001 From: Hallvard Furuseth Date: Mon, 6 Jan 2014 23:17:38 +0100 Subject: [PATCH] Add mdb_env__userctx() --- libraries/liblmdb/lmdb.h | 15 +++++++++++++++ libraries/liblmdb/mdb.c | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/libraries/liblmdb/lmdb.h b/libraries/liblmdb/lmdb.h index 5f2216e..911b61b 100644 --- a/libraries/liblmdb/lmdb.h +++ b/libraries/liblmdb/lmdb.h @@ -802,6 +802,21 @@ int mdb_env_set_maxdbs(MDB_env *env, MDB_dbi dbs); */ int mdb_env_get_maxkeysize(MDB_env *env); + /** @brief Set application information associated with the #MDB_env. + * + * @param[in] env An environment handle returned by #mdb_env_create() + * @param[in] ctx An arbitrary pointer for whatever the application needs. + * @return A non-zero error value on failure and 0 on success. + */ +int mdb_env_set_userctx(MDB_env *env, void *ctx); + + /** @brief Get the application information associated with the #MDB_env. + * + * @param[in] env An environment handle returned by #mdb_env_create() + * @return The pointer set by #mdb_env_set_userctx(). + */ +void *mdb_env_get_userctx(MDB_env *env); + /** @brief Create a transaction for use with the environment. * * The transaction handle may be discarded using #mdb_txn_abort() or #mdb_txn_commit(). diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 70ef5e6..82d4011 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -1080,6 +1080,7 @@ struct MDB_env { sem_t *me_rmutex; /* Shared mutexes are not supported */ sem_t *me_wmutex; #endif + void *me_userctx; /**< User-settable context */ }; /** Nested transaction */ @@ -7916,6 +7917,21 @@ mdb_env_get_flags(MDB_env *env, unsigned int *arg) return MDB_SUCCESS; } +int +mdb_env_set_userctx(MDB_env *env, void *ctx) +{ + if (!env) + return EINVAL; + env->me_userctx = ctx; + return MDB_SUCCESS; +} + +void * +mdb_env_get_userctx(MDB_env *env) +{ + return env ? env->me_userctx : NULL; +} + int mdb_env_get_path(MDB_env *env, const char **arg) {