Changeset librcc,54

Show
Ignore:
Timestamp:
10/10/09 23:39:39 (1 month ago)
Author:
Suren A. Chilingaryan <csa@dside.dyndns.org>
branch-nick:
librcc
Message:

Problems with BerkeleyDB 4.7.x

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • librcc/.bzrignore

    r53 r54  
    3434external/rccexternal 
    3535stamp-h.in 
     36example1 
     37example2 
     38rcc-gtk-config 
     39rcc-gtk2-config 
  • librcc/src/rccdb4.c

    r50 r54  
    3737    DB *db; 
    3838     
    39 # ifndef DB_LOG_AUTOREMOVE 
     39# if ((!defined(DB_LOG_AUTOREMOVE)) && (!defined(DB_LOG_AUTO_REMOVE))) 
    4040#  ifdef DB_VERSION_MISMATCH 
    4141    char stmp[160]; 
     
    4646    if (err) return NULL; 
    4747 
    48 # ifdef DB_LOG_AUTOREMOVE 
     48# if defined(DB_LOG_AUTOREMOVE) 
    4949    dbe->set_flags(dbe, DB_LOG_AUTOREMOVE, 1); 
    5050    dbe->set_lg_max(dbe, 131072); 
    5151     
     52    err = rccLock(); 
     53    if (!err) { 
     54        err = dbe->open(dbe, dbpath, DB_CREATE|DB_INIT_TXN|DB_USE_ENVIRON|DB_INIT_LOCK|DB_INIT_MPOOL|DB_RECOVER, 00644); 
     55        rccUnLock(); 
     56    }  
     57# elif defined(DB_LOG_AUTO_REMOVE) 
     58        // Starting from berkeleydb 4.7 API has changed 
     59    dbe->log_set_config(dbe, DB_LOG_AUTO_REMOVE, 1); 
     60    dbe->set_lg_max(dbe, 131072); 
     61 
    5262    err = rccLock(); 
    5363    if (!err) { 
     
    5969#  ifdef DB_VERSION_MISMATCH 
    6070    if (err == DB_VERSION_MISMATCH) { 
    61         if (!rccLock()) {     
     71        if (!rccLock()) { 
    6272            err = dbe->open(dbe, dbpath, DB_CREATE|DB_INIT_LOCK|DB_INIT_LOG|DB_INIT_MPOOL|DB_INIT_TXN|DB_USE_ENVIRON|DB_PRIVATE|DB_RECOVER, 0); 
    6373            dbe->close(dbe, 0); 
    64             dbe->remove(dbe, dbpath, 0); 
     74            if (err) { 
     75                err = db_env_create(&dbe, 0); 
     76                if (!err) dbe->remove(dbe, dbpath, 0); 
     77            } 
    6578            rccUnLock(); 
    6679        } else {