packages feed

BerkeleyDB 0.7.2 → 0.8

raw patch · 5 files changed

+10/−597 lines, 5 files

Files

BerkeleyDB.cabal view
@@ -1,11 +1,11 @@ name: BerkeleyDB-version: 0.7.2+version: 0.8 license: BSD3 license-file: LICENSE cabal-version: >= 1.4-copyright: (c) 2009 Stephen Blackheath-author: Stephen Blackheath-maintainer: http://blacksapphire.com/antispam/+copyright: (c) 2009 Stephen Blackheath, (c) 2010 typLAB+author: Stephen Blackheath, Erik Hesselink <erik@typlab.com>+maintainer: http://blacksapphire.com/antispam/, typLAB <code@typlab.com> stability: beta synopsis: Berkeley DB binding description:@@ -14,13 +14,7 @@     (It is NOT an SQL-based database.)  This package provides a thin Haskell binding for Berkeley DB.     .     This is a work in progress: The coverage of the Berkeley DB API is not yet complete. Tested with-    Berkeley DB version 4.6.-    .-    /CXX flag/ (enabled by default):-    On some platforms, BerkeleyDB won't load into ghci if the CXX flag is enabled.-    The CXX flag is required if you want to use the BerkeleyDBXML package.-    You are recommended to disable this flag if you are not using BerkeleyDBXML.-    To disable it, configure with --flags=-CXX.+    Berkeley DB versions 4.7 and 4.8, but should work with earlier versions.     .     Berkeley DB home page:     <http://www.oracle.com/database/berkeley-db/index.html>@@ -31,7 +25,8 @@     DARCS repository:     <http://code.haskell.org/BerkeleyDB/>     .-    Changes: 0.7.2: Fix on db4.7+    Changes: 0.8:   Support db4.7 and db4.8, removed C++ binding.+             0.7.2: Fix on db4.7  category: Database build-type: Simple@@ -41,25 +36,11 @@     examples/tests.hs,     examples/capitals.hs -Flag CXX-    Default: True-    Description:-        Enable the use of the C++ library db_cxx.-        On some platforms, BerkeleyDB won't load into ghci if this flag is enabled.-        This flag is required for if you want to use the BerkeleyDBXML package.-        It is recommended to disable this flag if you are not using BerkeleyDBXML.- Library     exposed-modules: Database.Berkeley.Db      build-depends: base >= 3 && < 5, extensible-exceptions, bytestring >= 0.9     include-dirs: Database/Berkeley/-    if flag(CXX)-        extra-libraries: db db_cxx-        ghc-options: -pgml c++-        cc-options: -DUSE_DB_CXX-        c-sources: Database/Berkeley/db_helper.cpp-    else-        extra-libraries: db-        c-sources: Database/Berkeley/db_helper.c+    extra-libraries: db+    c-sources: Database/Berkeley/db_helper.c 
Database/Berkeley/Db.hsc view
@@ -188,10 +188,7 @@  data DbEnv_struct type DbEnv = ForeignPtr DbEnv_struct-foreign import ccall "db_helper.h &_dbenv_delete" _dbenv_delete-    :: FunPtr (Ptr DbEnv_struct -> IO ()) - foreign import ccall safe "db_helper.h _dbenv_create" _dbenv_create     :: Ptr (Ptr DbEnv_struct) -> CUInt -> IO CInt @@ -206,7 +203,7 @@             then throwDB "_dbenv_create" ret             else do                 p <- peek ptr-                newForeignPtr _dbenv_delete p+                newForeignPtr finalizerFree p     where         orFlags = foldr (.|.) 0 $ map toNum flags         toNum DB_RPCCLIENT = 0x0000002@@ -404,7 +401,6 @@     DB_DIRTY_READ |     DB_TXN_SNAPSHOT |     DB_CXX_NO_EXCEPTIONS |-    DB_XA_CREATE |     DB_USE_ENVIRON |     DB_USE_ENVIRON_ROOT |     DB_INIT_CDB |@@ -484,7 +480,6 @@ dbToNum	DB_DIRTY_READ = #const DB_DIRTY_READ dbToNum	DB_TXN_SNAPSHOT = #const DB_TXN_SNAPSHOT dbToNum	DB_CXX_NO_EXCEPTIONS = #const DB_CXX_NO_EXCEPTIONS-dbToNum	DB_XA_CREATE = #const DB_XA_CREATE dbToNum	DB_USE_ENVIRON = #const DB_USE_ENVIRON	 dbToNum	DB_USE_ENVIRON_ROOT = #const DB_USE_ENVIRON_ROOT dbToNum	DB_INIT_CDB = #const DB_INIT_CDB
Database/Berkeley/db_helper.c view
@@ -4,20 +4,7 @@ #include <stdlib.h> #include <errno.h> -#if defined(USE_DB_CXX) #define UNWRAP_DBENV() \-    DB_ENV* dbenv = dbenvp->get_DB_ENV(); \-    if (dbenv == NULL) return -20881;  /* Haskell binding-specific error code */--#define UNWRAP_DBTXN_() \-    if (dbtxnp == NULL) \-        dbtxn = NULL; \-    else { \-        if (*dbtxnp == NULL) return -20883;  /* Haskell binding-specific error code */ \-        dbtxn = (*dbtxnp)->get_DB_TXN(); \-    }-#else-#define UNWRAP_DBENV() \     DB_ENV* dbenv; \     if (*dbenvp == NULL) return -20881;  /* Haskell binding-specific error code */ \     dbenv = *dbenvp;@@ -29,7 +16,6 @@         if (*dbtxnp == NULL) return -20883;  /* Haskell binding-specific error code */ \         dbtxn = *dbtxnp; \     }-#endif  #define UNWRAP_DB() \     DB* db = *dbp; \@@ -45,28 +31,14 @@  int _dbenv_create(MY_DBENV** dbenvpp, u_int32_t flags) {-#if defined(USE_DB_CXX)-    *dbenvpp = new DbEnv(flags);-    return 0;-#else     int ret;     *dbenvpp = (MY_DBENV*)malloc(sizeof(MY_DBENV*));     ret = db_env_create(*dbenvpp, flags);     if (ret != 0)         free(*dbenvpp);     return ret;-#endif } -void _dbenv_delete(MY_DBENV* dbenvp)-{-#if defined(USE_DB_CXX)-#else-    _dbenv_close(dbenvp, 0);-    free(dbenvp);-#endif-}- int _dbenv_get_lk_max_lockers(MY_DBENV* dbenvp, u_int32_t *lk_maxp) {     UNWRAP_DBENV();     return dbenv->get_lk_max_lockers(dbenv, lk_maxp);@@ -141,16 +113,12 @@ int _dbenv_close(MY_DBENV* dbenvp, u_int32_t flags) {     int ret;-#if defined(USE_DB_CXX)-    ret = dbenvp->close(flags);-#else     if (*dbenvp != NULL) {         ret = (*dbenvp)->close(*dbenvp,flags);         *dbenvp = NULL;     }     else         ret = 0;-#endif     return ret; } @@ -187,11 +155,7 @@         txn = NULL;     else {         if (*txnp == NULL) return -20883;  /* Haskell binding-specific error code */-#if defined(USE_DB_CXX)-        txn = (*txnp)->get_DB_TXN();-#else         txn = *txnp;-#endif     }     return db->open(db, txn, file, database, (DBTYPE) type, flags, mode); }@@ -207,17 +171,7 @@         if (parent == NULL) return -20883;  /* Haskell binding-specific error code */     }     *txnpp = (MY_DBTXN**)malloc(sizeof(MY_DBTXN*));-#if defined(USE_DB_CXX)-    try {-        return dbenvp->txn_begin(parent, *txnpp, flags);-    }-    catch (DbException& exc) {-        free(*txnpp);-        return exc.get_errno();-    }-#else     return dbenv->txn_begin(dbenv, parent, *txnpp, flags);-#endif }  int _dbenv_txn_checkpoint(MY_DBENV* dbenvp, u_int32_t kbyte, u_int32_t min, u_int32_t flags)@@ -243,11 +197,7 @@ void _dbtxn_delete(MY_DBTXN** dbtxnp) {     if (*dbtxnp != NULL)-#if defined(USE_DB_CXX)-        (*dbtxnp)->abort();-#else         (*dbtxnp)->abort(*dbtxnp);-#endif     free(dbtxnp); } 
− Database/Berkeley/db_helper.cpp
@@ -1,499 +0,0 @@-#include "db_helper.h"--#include <string.h>-#include <stdlib.h>-#include <errno.h>--#if defined(USE_DB_CXX)-#define UNWRAP_DBENV() \-    DB_ENV* dbenv = dbenvp->get_DB_ENV(); \-    if (dbenv == NULL) return -20881;  /* Haskell binding-specific error code */--#define UNWRAP_DBTXN_() \-    if (dbtxnp == NULL) \-        dbtxn = NULL; \-    else { \-        if (*dbtxnp == NULL) return -20883;  /* Haskell binding-specific error code */ \-        dbtxn = (*dbtxnp)->get_DB_TXN(); \-    }-#else-#define UNWRAP_DBENV() \-    DB_ENV* dbenv; \-    if (*dbenvp == NULL) return -20881;  /* Haskell binding-specific error code */ \-    dbenv = *dbenvp;--#define UNWRAP_DBTXN_() \-    if (dbtxnp == NULL) \-        dbtxn = NULL; \-    else { \-        if (*dbtxnp == NULL) return -20883;  /* Haskell binding-specific error code */ \-        dbtxn = *dbtxnp; \-    }-#endif--#define UNWRAP_DB() \-    DB* db = *dbp; \-    if (db == NULL) return -20882;  /* Haskell binding-specific error code */--#define UNWRAP_DBCURSOR() \-    DBC* dbc = *dbcp; \-    if (dbc == NULL) return -20884;  /* Haskell binding-specific error code */--#define UNWRAP_DBTXN() \-    DB_TXN* dbtxn; \-    UNWRAP_DBTXN_()--int _dbenv_create(MY_DBENV** dbenvpp, u_int32_t flags)-{-#if defined(USE_DB_CXX)-    *dbenvpp = new DbEnv(flags);-    return 0;-#else-    int ret;-    *dbenvpp = (MY_DBENV*)malloc(sizeof(MY_DBENV*));-    ret = db_env_create(*dbenvpp, flags);-    if (ret != 0)-        free(*dbenvpp);-    return ret;-#endif-}--void _dbenv_delete(MY_DBENV* dbenvp)-{-#if defined(USE_DB_CXX)-#else-    _dbenv_close(dbenvp, 0);-    free(dbenvp);-#endif-}--int _dbenv_get_lk_max_lockers(MY_DBENV* dbenvp, u_int32_t *lk_maxp) {-    UNWRAP_DBENV();-    return dbenv->get_lk_max_lockers(dbenv, lk_maxp);-}--int _dbenv_set_lk_max_lockers(MY_DBENV* dbenvp, u_int32_t max) {-    UNWRAP_DBENV();-    return dbenv->set_lk_max_lockers(dbenv, max);-}--int _dbenv_get_lk_max_locks(MY_DBENV* dbenvp, u_int32_t *lk_maxp) {-    UNWRAP_DBENV();-    return dbenv->get_lk_max_locks(dbenv, lk_maxp);-}--int _dbenv_set_lk_max_locks(MY_DBENV* dbenvp, u_int32_t max) {-    UNWRAP_DBENV();-    return dbenv->set_lk_max_locks(dbenv, max);-}--int _dbenv_get_lk_max_objects(MY_DBENV* dbenvp, u_int32_t *lk_maxp) {-    UNWRAP_DBENV();-    return dbenv->get_lk_max_objects(dbenv, lk_maxp);-}--int _dbenv_set_lk_max_objects(MY_DBENV* dbenvp, u_int32_t max) {-    UNWRAP_DBENV();-    return dbenv->set_lk_max_objects(dbenv, max);-}--int _dbenv_get_tx_max(MY_DBENV* dbenvp, u_int32_t *lk_maxp) {-    UNWRAP_DBENV();-    return dbenv->get_tx_max(dbenv, lk_maxp);-}--int _dbenv_set_tx_max(MY_DBENV* dbenvp, u_int32_t max) {-    UNWRAP_DBENV();-    return dbenv->set_tx_max(dbenv, max);-}--int _dbenv_get_cachesize(MY_DBENV* dbenvp, u_int32_t *gbytesp, u_int32_t *bytesp, int *ncachep) {-    UNWRAP_DBENV();-    return dbenv->get_cachesize(dbenv, gbytesp, bytesp, ncachep);-}--int _dbenv_set_cachesize(MY_DBENV* dbenvp, u_int32_t gbytes, u_int32_t bytes, int ncache) {-    UNWRAP_DBENV();-    return dbenv->set_cachesize(dbenv, gbytes, bytes, ncache);-}--int _dbenv_get_lg_regionmax(MY_DBENV* dbenvp, u_int32_t *lk_maxp) {-    UNWRAP_DBENV();-    return dbenv->get_lg_regionmax(dbenv, lk_maxp);-}--int _dbenv_set_lg_regionmax(MY_DBENV* dbenvp, u_int32_t max) {-    UNWRAP_DBENV();-    return dbenv->set_lg_regionmax(dbenv, max);-}--int _dbenv_set_lk_detect(MY_DBENV* dbenvp, u_int32_t flag)-{-    UNWRAP_DBENV();-    return dbenv->set_lk_detect(dbenv, flag);-}--int _dbenv_open(MY_DBENV* dbenvp, char *db_home, u_int32_t flags, int mode) {-    UNWRAP_DBENV();-    return dbenv->open(dbenv, db_home, flags, mode);-}--int _dbenv_close(MY_DBENV* dbenvp, u_int32_t flags)-{-    int ret;-#if defined(USE_DB_CXX)-    ret = dbenvp->close(flags);-#else-    if (*dbenvp != NULL) {-        ret = (*dbenvp)->close(*dbenvp,flags);-        *dbenvp = NULL;-    }-    else-        ret = 0;-#endif-    return ret;-}--int _db_create(DB*** dbpp, MY_DBENV* dbenvp, u_int32_t flags)-{-    int ret;-    UNWRAP_DBENV();-    *dbpp = (DB**)malloc(sizeof(DB**));-    ret = db_create(*dbpp, dbenv, flags);-    if (ret != 0)-        free(*dbpp);-    return ret;-}--void _db_delete(DB** dbp)-{-    if (*dbp != NULL)-        (*dbp)->close(*dbp, 0);-    free(dbp);-}--int _db_set_pagesize(DB** dbp, u_int32_t pagesize)-{-    UNWRAP_DB();-    return db->set_pagesize(db, pagesize);-}--int _db_open(DB** dbp, MY_DBTXN** txnp, const char* file, const char* database,-    int type, u_int32_t flags, int mode)-{-    DB_TXN* txn;-    UNWRAP_DB();-    if (txnp == NULL)-        txn = NULL;-    else {-        if (*txnp == NULL) return -20883;  /* Haskell binding-specific error code */-#if defined(USE_DB_CXX)-        txn = (*txnp)->get_DB_TXN();-#else-        txn = *txnp;-#endif-    }-    return db->open(db, txn, file, database, (DBTYPE) type, flags, mode);-}--int _dbenv_txn_begin(MY_DBENV* dbenvp, MY_DBTXN** parentp, MY_DBTXN*** txnpp, u_int32_t flags)-{-    MY_DBTXN* parent;-    UNWRAP_DBENV();-    if (parentp == NULL)-        parent = NULL;-    else {-        parent = *parentp;-        if (parent == NULL) return -20883;  /* Haskell binding-specific error code */-    }-#if defined(USE_DB_CXX)-    try {-        *txnpp = (MY_DBTXN**)malloc(sizeof(MY_DBTXN*)*2);-        int ret = dbenvp->txn_begin(parent, *txnpp, flags);-        // We store two copies of the pointer.  The second one becomes NULL if-        // the transaction gets adopted by BerkeleyDBXML.  If it's adopted, we-        // don't force an abort in our finalizer.-        (*txnpp)[1] = (*txnpp)[0];-        return ret;-    }-    catch (DbException& exc) {-        free(*txnpp);-        return exc.get_errno();-    }-#else-    *txnpp = (MY_DBTXN**)malloc(sizeof(MY_DBTXN*));-    return dbenv->txn_begin(dbenv, parent, *txnpp, flags);-#endif-}--void detach_DbTxn(MY_DBTXN** dbtxnp)-{-    dbtxnp[1] = NULL; // Nullify the second slot to mark it as adopted, so-                      // as to prevent BerkeleyDB from aborting the transaction-                      // in its finalizer.-}--int _dbenv_txn_checkpoint(MY_DBENV* dbenvp, u_int32_t kbyte, u_int32_t min, u_int32_t flags)-{-    UNWRAP_DBENV();-    return dbenv->txn_checkpoint(dbenv, kbyte, min, flags);-}--int _dbtxn_abort(MY_DBTXN** dbtxnp)-{-    UNWRAP_DBTXN();-    *dbtxnp = NULL;-    dbtxn->abort(dbtxn);-}--int _dbtxn_commit(MY_DBTXN** dbtxnp, u_int32_t flags)-{-    UNWRAP_DBTXN();-    *dbtxnp = NULL;-    dbtxn->commit(dbtxn, flags);-}--void _dbtxn_delete(MY_DBTXN** dbtxnp)-{-#if defined(USE_DB_CXX)-    // If either slot has been nulled, don't abort it in the finalizer.-    // Slot 0 nulled = explicitly commited or aborted by dbTxn_abort or dbTxn_commit.-    // Slot 1 nulled = adopted by BerkeleyDBXML.-    if (*dbtxnp != NULL && dbtxnp[1] != NULL)-        (*dbtxnp)->abort();-#else-    if (*dbtxnp != NULL)-        (*dbtxnp)->abort(*dbtxnp);-#endif-    free(dbtxnp);-}--u_int32_t _dbtxn_id(MY_DBTXN** dbtxnp)-{-    UNWRAP_DBTXN();-    return dbtxn->id(dbtxn);-}--int _dbenv_lock_get(MY_DBENV* dbenvp, u_int32_t lockerID, u_int32_t flags,-    const char* object, u_int32_t object_len, u_int32_t lockmode, _DB_LOCK** dblock)-{-    DBT dbt;-    UNWRAP_DBENV();--    memset(&dbt, 0, sizeof(dbt));-    dbt.flags = DB_DBT_USERMEM;-    dbt.data = (void*)object;-    dbt.size = object_len;-    *dblock = (_DB_LOCK*)malloc(sizeof(_DB_LOCK));-    (*dblock)->dbenv = dbenvp;-    int ret = dbenv->lock_get(dbenv, lockerID, flags, &dbt, (db_lockmode_t)lockmode, &(*dblock)->lock);-    if (ret != 0)-        free(*dblock);-    return ret;-}--int _dbenv_lock_put(_DB_LOCK* dblock)-{-    MY_DBENV* dbenvp = dblock->dbenv;-    UNWRAP_DBENV();-    return dbenv->lock_put(dbenv, &dblock->lock);-}--void _dblock_delete(_DB_LOCK* dblock)-{-    free(dblock);-}--void _freeString(char* str)-{-    free(str);-}--int _db_get(DB** dbp, MY_DBTXN** dbtxnp, const char* key, u_int32_t key_len, char** value, u_int32_t* value_len, u_int32_t flags)-{-    DBT keyDbt;-    DBT valueDbt;-    int ret;-    DB_TXN* dbtxn;-    UNWRAP_DB();-    UNWRAP_DBTXN_();--    memset(&keyDbt, 0, sizeof(keyDbt));-    keyDbt.flags = DB_DBT_USERMEM;-    keyDbt.data = (void*)key;-    keyDbt.size = key_len;-    memset(&valueDbt, 0, sizeof(valueDbt));-    valueDbt.flags = DB_DBT_MALLOC;--    *value = NULL;-    *value_len = 0;-    ret = db->get(db, dbtxn, &keyDbt, &valueDbt, flags);-    if (ret == 0) {-        *value = (char*)valueDbt.data;-        *value_len = valueDbt.size;-    }-    return ret;-}--int _db_put(DB** dbp, MY_DBTXN** dbtxnp, const char* key, u_int32_t key_len, const char* value, u_int32_t value_len, u_int32_t flags)-{-    DBT keyDbt;-    DBT valueDbt;-    DB_TXN* dbtxn;-    UNWRAP_DB();-    UNWRAP_DBTXN_();--    memset(&keyDbt, 0, sizeof(keyDbt));-    keyDbt.flags = DB_DBT_USERMEM;-    keyDbt.data = (void*)key;-    keyDbt.size = key_len;-    memset(&valueDbt, 0, sizeof(valueDbt));-    valueDbt.flags = DB_DBT_USERMEM;-    valueDbt.data = (void*)value;-    valueDbt.size = value_len;-    return db->put(db, dbtxn, &keyDbt, &valueDbt, flags);-}--int _db_del(DB** dbp, MY_DBTXN** dbtxnp, const char* key, u_int32_t key_len, u_int32_t flags)-{-    DBT keyDbt;-    DB_TXN* dbtxn;-    UNWRAP_DB();-    UNWRAP_DBTXN_();--    memset(&keyDbt, 0, sizeof(keyDbt));-    keyDbt.flags = DB_DBT_USERMEM;-    keyDbt.data = (void*)key;-    keyDbt.size = key_len;-    return db->del(db, dbtxn, &keyDbt, flags);-}--int _db_close(DB** dbp, u_int32_t flags)-{-    UNWRAP_DB();-    *dbp = NULL;-    return db->close(db, flags);-}--int _db_cursor(DB** dbp, MY_DBTXN** dbtxnp, DBC*** dbcursorpp, u_int32_t flags)-{-    DB_TXN* dbtxn;-    UNWRAP_DB();-    UNWRAP_DBTXN_();-    *dbcursorpp = (DBC**)malloc(sizeof(DBC**));-    int ret = db->cursor(db, dbtxn, *dbcursorpp, flags);-    if (ret != 0)-        free(*dbcursorpp);-    return ret;-}--void _dbcursor_delete(DBC** dbc)-{-    if (*dbc != NULL)-        (*dbc)->close(*dbc);-    free(dbc);-}--int _dbCursor_close(DBC** dbc)-{-    if (*dbc != NULL) {-        int ret = (*dbc)->close(*dbc);-        *dbc = NULL;-        return ret;-    }-    else-        return 0;-}--int _dbCursor_count(DBC** dbcp, u_int32_t* countp, u_int32_t flags)-{-    UNWRAP_DBCURSOR();-    db_recno_t countp_;-    int ret = dbc->count(dbc, &countp_, flags);-    *countp = (u_int32_t) countp_;-    return ret;-}--int _dbCursor_del(DBC** dbcp, u_int32_t flags)-{-    UNWRAP_DBCURSOR();-    return dbc->del(dbc, flags);-}--int _dbCursor_dup(DBC** dbcp, DBC*** dbcursorpp, u_int32_t flags)-{-    UNWRAP_DBCURSOR();-    *dbcursorpp = (DBC**)malloc(sizeof(DBC**));-    int ret = dbc->dup(dbc, *dbcursorpp, flags);-    if (ret != 0)-        free(*dbcursorpp);-    return ret;-}--int _dbCursor_get(DBC** dbcp, char** key, u_int32_t* key_len, char** value, u_int32_t* value_len, u_int32_t flags)-{-    UNWRAP_DBCURSOR();-    int ret;--    DBT keyDbt;-    memset(&keyDbt, 0, sizeof(keyDbt));-    keyDbt.flags = DB_DBT_MALLOC;-    *key = NULL;-    *key_len = 0;--    DBT valueDbt;-    memset(&valueDbt, 0, sizeof(valueDbt));-    valueDbt.flags = DB_DBT_MALLOC;-    *value = NULL;-    *value_len = 0;--    ret = dbc->get(dbc, &keyDbt, &valueDbt, flags);-    if (ret == 0) {-        *key = (char*)keyDbt.data;-        *key_len = keyDbt.size;-        *value = (char*)valueDbt.data;-        *value_len = valueDbt.size;-    }-    return ret;-}--int _dbCursor_set(DBC** dbcp, const char* key, u_int32_t key_len, char** value, u_int32_t* value_len, u_int32_t flags)-{-    UNWRAP_DBCURSOR();-    int ret;--    DBT keyDbt;-    memset(&keyDbt, 0, sizeof(keyDbt));-    keyDbt.flags = DB_DBT_USERMEM;-    keyDbt.data = (void*)key;-    keyDbt.size = key_len;--    DBT valueDbt;-    memset(&valueDbt, 0, sizeof(valueDbt));-    valueDbt.flags = DB_DBT_MALLOC;-    *value = NULL;-    *value_len = 0;--    ret = dbc->get(dbc, &keyDbt, &valueDbt, flags);-    if (ret == 0) {-        *value = (char*)valueDbt.data;-        *value_len = valueDbt.size;-    }-    return ret;-}--int _dbCursor_put(DBC** dbcp, const char* key, u_int32_t key_len, const char* value, u_int32_t value_len, u_int32_t flags)-{-    UNWRAP_DBCURSOR();-    DBT keyDbt;-    memset(&keyDbt, 0, sizeof(keyDbt));-    keyDbt.flags = DB_DBT_USERMEM;-    keyDbt.data = (void*)key;-    keyDbt.size = key_len;-    DBT valueDbt;-    memset(&valueDbt, 0, sizeof(valueDbt));-    valueDbt.flags = DB_DBT_USERMEM;-    valueDbt.data = (void*)value;-    valueDbt.size = value_len;-    return dbc->put(dbc, &keyDbt, &valueDbt, flags);-}
Database/Berkeley/db_helper.h view
@@ -1,15 +1,9 @@ #ifndef _DB_HELPER_H_ #define _DB_HELPER_H_ -#if defined(USE_DB_CXX)-#include <db_cxx.h>-#define MY_DBENV DbEnv-#define MY_DBTXN DbTxn-#else #include <db.h> #define MY_DBENV DB_ENV* #define MY_DBTXN DB_TXN-#endif  typedef struct _DB_LOCK {     MY_DBENV* dbenv;@@ -17,12 +11,7 @@ } _DB_LOCK;  --#if defined(USE_DB_CXX)-extern "C" {-#endif int _dbenv_create(MY_DBENV** dbenvpp, u_int32_t flags);-void _dbenv_delete(MY_DBENV* dbenvp); int _dbenv_get_lk_max_lockers(MY_DBENV* dbenvp, u_int32_t *lk_maxp); int _dbenv_set_lk_max_lockers(MY_DBENV* dbenvp, u_int32_t max); int _dbenv_get_lk_max_locks(MY_DBENV* dbenvp, u_int32_t *lk_maxp);@@ -68,8 +57,5 @@ int _dbCursor_get(DBC** dbcp, char** key, u_int32_t* key_len, char** value, u_int32_t* value_len, u_int32_t flags); int _dbCursor_set(DBC** dbcp, const char* key, u_int32_t key_len, char** value, u_int32_t* value_len, u_int32_t flags); int _dbCursor_put(DBC** dbcp, const char* key, u_int32_t key_len, const char* value, u_int32_t value_len, u_int32_t flags);-#if defined(USE_DB_CXX)-}-#endif  #endif