packages feed

BerkeleyDB 0.8.3 → 0.8.4

raw patch · 4 files changed

+82/−8 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Database.Berkeley.Db: data DbEnv_native
+ Database.Berkeley.Db: dbEnv_set_data_dir :: DbEnv -> FilePath -> IO ()
+ Database.Berkeley.Db: dbEnv_set_lg_dir :: DbEnv -> FilePath -> IO ()
+ Database.Berkeley.Db: dbEnv_toNative :: DbEnv -> (Ptr DbEnv_native -> IO a) -> IO a

Files

BerkeleyDB.cabal view
@@ -1,5 +1,5 @@ name: BerkeleyDB-version: 0.8.3+version: 0.8.4 license: BSD3 license-file: LICENSE cabal-version: >= 1.4@@ -9,9 +9,10 @@ stability: beta synopsis: Berkeley DB binding description:-    Berkeley DB is a fast, scalable, fully transactional database that runs on a local file-    system, and functions as a dictionary of arbitrary-sized binary blobs.-    (It is NOT an SQL-based database.)  This package provides a thin Haskell binding for Berkeley DB.+    This package provides a Haskell binding for Berkeley DB, which is a fast, scalable,+    fully transactional database that runs on a local file system, and functions as a+    dictionary of arbitrary-sized binary blobs.  It is NOT an SQL-based database.  It+    is not free for commercial use.     .     This is a work in progress: The coverage of the Berkeley DB API is not yet complete. Tested with     Berkeley DB versions 4.7 and 4.8, but should work with earlier versions.
Database/Berkeley/Db.hsc view
@@ -18,6 +18,8 @@         dbEnv_close,         DbEnvCreateFlag,         dbEnv_create,+        dbEnv_set_data_dir,+        dbEnv_set_lg_dir,         dbEnv_get_cache_size,         dbEnv_get_lk_max_lockers,         dbEnv_get_lk_max_locks,@@ -77,10 +79,13 @@         dbEnv_get_lg_regionmax,         dbEnv_set_lg_regionmax,         -- * Private-        dbToNum,       -- | Needed for BerkeleyDBXML: Binary representation of a DbFlag-        dbErrFromNum,  -- | Needed for BerkeleyDBXML: Convert an error code to a DbError-        DbEnv_struct,  -- | Needed for BerkeleyDBXML: C pointer type for a DbEnv-        DbTxn_struct   -- | Needed for BerkeleyDBXML: C pointer type for a DbTxn+        dbToNum,+        dbErrFromNum,+        DbEnv_struct,+        DbTxn_struct,+        -- * C integration+        DbEnv_native,+        dbEnv_toNative     ) where  import Foreign.C@@ -144,6 +149,7 @@     SYSTEM_ERROR Int             -- ^ An errno value returned by the operating system     deriving (Eq,Show) +-- | Needed for BerkeleyDBXML: Convert an error code to a DbError dbErrFromNum :: Int -> DbError dbErrFromNum (#const DB_BUFFER_SMALL) = DB_BUFFER_SMALL dbErrFromNum (#const DB_DONOTINDEX) = DB_DONOTINDEX@@ -192,6 +198,7 @@  ------ DbEnv ------------------------------------------------------------------ +-- | Needed for BerkeleyDBXML: C pointer type for a DbEnv data DbEnv_struct type DbEnv = ForeignPtr DbEnv_struct @@ -215,6 +222,47 @@         toNum DB_RPCCLIENT = 0x0000002  +foreign import ccall unsafe "db_helper.h _dbenv_set_data_dir" _dbenv_set_data_dir+    :: Ptr DbEnv_struct -> CString -> IO CInt++dbEnv_set_data_dir :: DbEnv -> FilePath -> IO ()+dbEnv_set_data_dir dbenv dir =+    withCString dir $ \c_str ->+    withForeignPtr dbenv $ \c_dbenv -> do+        ret <- _dbenv_set_data_dir c_dbenv c_str+        if ret /= 0+            then throwDB "dbEnv_set_data_dir" ret+            else return ()+++foreign import ccall unsafe "db_helper.h _dbenv_set_lg_dir" _dbenv_set_lg_dir+    :: Ptr DbEnv_struct -> CString -> IO CInt++dbEnv_set_lg_dir :: DbEnv -> FilePath -> IO ()+dbEnv_set_lg_dir dbenv dir =+    withCString dir $ \c_str ->+    withForeignPtr dbenv $ \c_dbenv -> do+        ret <- _dbenv_set_lg_dir c_dbenv c_str+        if ret /= 0+            then throwDB "dbEnv_set_lg_dir" ret+            else return ()+++foreign import ccall unsafe "db_helper.h _dbenv_toNative" _dbenv_toNative+    :: Ptr DbEnv_struct -> Ptr (Ptr DbEnv_native) -> IO CInt++data DbEnv_native+-- | Convert the Haskell handle into a native handle of type DB_ENV* which can be passed to C.+dbEnv_toNative :: DbEnv -> (Ptr DbEnv_native -> IO a) -> IO a+dbEnv_toNative dbenv code =+    alloca $ \pNative ->+    withForeignPtr dbenv $ \c_dbenv -> do+        ret <- _dbenv_toNative c_dbenv pNative+        if ret /= 0+            then throwDB "dbEnv_toNative" ret+            else code =<< peek pNative++ foreign import ccall safe "db_helper.h _dbenv_get_lk_max_lockers" _dbenv_get_lk_max_lockers     :: Ptr DbEnv_struct -> Ptr CUInt -> IO CInt @@ -434,6 +482,7 @@     DB_DUPSORT  +-- | Needed for BerkeleyDBXML: Binary representation of a DbFlag dbToNum :: DbFlag -> Word32 dbToNum DB_CREATE = #const DB_CREATE dbToNum	DB_DURABLE_UNKNOWN = #const DB_DURABLE_UNKNOWN@@ -701,6 +750,7 @@ dbTypeToNum DB_QUEUE = 4 dbTypeToNum DB_UNKNOWN = 5 +-- | Needed for BerkeleyDBXML: C pointer type for a DbTxn data DbTxn_struct type DbTxn = ForeignPtr DbTxn_struct foreign import ccall "db_helper.h &_dbtxn_delete" _dbtxn_delete
Database/Berkeley/db_helper.c view
@@ -51,6 +51,26 @@     return ret; } +int _dbenv_toNative(MY_DBENV* dbenvp, DB_ENV** pDbEnv)+{+    int ret;+    UNWRAP_DBENV();+    *pDbEnv = dbenv;+    return 0;+}++int _dbenv_set_data_dir(MY_DBENV* dbenvp, char* dir)+{+    UNWRAP_DBENV();+    return dbenv->set_data_dir(dbenv, dir);+}++int _dbenv_set_lg_dir(MY_DBENV* dbenvp, char* dir)+{+    UNWRAP_DBENV();+    return dbenv->set_lg_dir(dbenv, dir);+}+ 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);
Database/Berkeley/db_helper.h view
@@ -11,6 +11,9 @@   int _dbenv_create(MY_DBENV** dbenvpp, u_int32_t flags);+int _dbenv_toNative(MY_DBENV* dbenvpp, DB_ENV** pDbEnv);+int _dbenv_set_data_dir(MY_DBENV* dbenvp, char* dir);+int _dbenv_set_lg_dir(MY_DBENV* dbenvp, char* dir); 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);