You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by je...@apache.org on 2002/10/04 06:25:12 UTC

cvs commit: apr-util/dbm apr_dbm_berkeleydb.c

jerenkrantz    2002/10/03 21:25:12

  Modified:    dbm      apr_dbm_berkeleydb.c
  Log:
  Add further support for DB_AUTO_COMMIT flag which is required in DB4.1+
  when a NULL transaction is passed.
  
  Note that we treat DB 4.0 as DB_VER == 3, while higher versions of 4.x are
  treated as DB_VER == 4 which has these API changes.
  
  Revision  Changes    Path
  1.20      +25 -13    apr-util/dbm/apr_dbm_berkeleydb.c
  
  Index: apr_dbm_berkeleydb.c
  ===================================================================
  RCS file: /home/cvs/apr-util/dbm/apr_dbm_berkeleydb.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -u -r1.19 -r1.20
  --- apr_dbm_berkeleydb.c	19 Sep 2002 08:04:17 -0000	1.19
  +++ apr_dbm_berkeleydb.c	4 Oct 2002 04:25:12 -0000	1.20
  @@ -73,12 +73,14 @@
    */
   
   #if   defined(DB_VERSION_MAJOR) && (DB_VERSION_MAJOR == 4)
  -/* DB 4.1 has an altered open() argument list. */
  +/* We will treat anything greater than 4.1 as DB4.
  + * We can treat 4.0 as DB3.
  + */
   #if   defined(DB_VERSION_MINOR) && (DB_VERSION_MINOR >= 1)
  -#define DB_NEED_OPEN_TXN_ARG
  -#endif
  -/* Otherwise, DB4 can be treated as DB3. */
  +#define DB_VER 4
  +#else
   #define DB_VER 3
  +#endif
   #elif defined(DB_VERSION_MAJOR) && (DB_VERSION_MAJOR == 3)
   #define DB_VER 3
   #elif defined(DB_VERSION_MAJOR) && (DB_VERSION_MAJOR == 2)
  @@ -196,10 +198,13 @@
       {
           int dberr;
   
  -#if DB_VER == 3
  +#if DB_VER >= 3
  +#if DB_VER == 4
  +        dbmode |= DB_AUTO_COMMIT;
  +#endif
           if ((dberr = db_create(&file.bdb, NULL, 0)) == 0) {
               if ((dberr = (*file.bdb->open)(file.bdb,
  -#ifdef DB_NEED_OPEN_TXN_ARG
  +#if DB_VER == 4
                                              NULL,
   #endif
                                              pathname, NULL, 
  @@ -283,6 +288,11 @@
       apr_status_t rv;
       DBT ckey = { 0 };
       DBT cvalue = { 0 };
  +#if DB_VER == 4
  +    int flags = DB_AUTO_COMMIT;
  +#else
  +    int flags = 0;
  +#endif
   
       ckey.data = key.dptr;
       ckey.size = key.dsize;
  @@ -294,7 +304,7 @@
                                            TXN_ARG
                                            &ckey,
                                            &cvalue,
  -                                         0));
  +                                         flags));
   
       /* store any error info into DBM, and return a status code. */
       return set_error(dbm, rv);
  @@ -304,6 +314,11 @@
   {
       apr_status_t rv;
       DBT ckey = { 0 };
  +#if DB_VER == 4
  +    int flags = DB_AUTO_COMMIT;
  +#else
  +    int flags = 0;
  +#endif
   
       ckey.data = key.dptr;
       ckey.size = key.dsize;
  @@ -311,7 +326,7 @@
       rv = db2s((*GET_BDB(dbm->file)->del)(GET_BDB(dbm->file),
                                            TXN_ARG
                                            &ckey,
  -                                         0));
  +                                         flags));
   
       /* store any error info into DBM, and return a status code. */
       return set_error(dbm, rv);
  @@ -346,11 +361,8 @@
       dberr = (*f->bdb->seq)(f->bdb, &first, &data, R_FIRST);
   #else
       if ((dberr = (*f->bdb->cursor)(f->bdb, NULL, &f->curs
  -#if DB_VER == 3
  -                                , 0
  -#elif (DB_VERSION_MAJOR == 2) && (DB_VERSION_MINOR > 5) 
  -                                , 0
  -
  +#if DB_VER >= 3 || ((DB_VERSION_MAJOR == 2) && (DB_VERSION_MINOR > 5))
  +                                   , 0
   #endif
                )) == 0) {
           dberr = (*f->curs->c_get)(f->curs, &first, &data, DB_FIRST);