diff -urNp xca-0.5.1.org/widgets/MainWindow.cpp xca-0.5.1/widgets/MainWindow.cpp --- xca-0.5.1.org/widgets/MainWindow.cpp 2004-06-13 23:22:37.000000000 +0200 +++ xca-0.5.1/widgets/MainWindow.cpp 2006-10-28 18:14:35.000000000 +0200 @@ -451,6 +451,11 @@ void MainWindow::dberr(const char *errpf Error(e); } +void MainWindow::dberrEnv(const DbEnv *dbEnv, const char *errpfx, const char *msg) +{ + dberr(errpfx, (char *) msg); +} + QString MainWindow::getPath() { QString x = settings->getString("workingdir"); diff -urNp xca-0.5.1.org/widgets/MainWindow.h xca-0.5.1/widgets/MainWindow.h --- xca-0.5.1.org/widgets/MainWindow.h 2004-04-15 01:36:56.000000000 +0200 +++ xca-0.5.1/widgets/MainWindow.h 2006-10-28 18:12:12.000000000 +0200 @@ -105,6 +105,7 @@ class MainWindow: public MainWindow_UI static int passRead(char *buf, int size, int rwflag, void *userdata); static int passWrite(char *buf, int size, int rwflag, void *userdata); static void dberr(const char *errpfx, char *msg); + static void dberrEnv(const DbEnv *dbEnv, const char *errpfx, const char *msg); // db4.3 API change static NewX509 *newX509(); static QString md5passwd(const char *pass); static void Error(errorEx &err); diff -urNp xca-0.5.1.org/widgets/MW_database.cpp xca-0.5.1/widgets/MW_database.cpp --- xca-0.5.1.org/widgets/MW_database.cpp 2004-04-16 00:31:35.000000000 +0200 +++ xca-0.5.1/widgets/MW_database.cpp 2006-10-28 18:13:27.000000000 +0200 @@ -63,16 +63,23 @@ void MainWindow::init_database() { if (dbenv) return; // already initialized.... try { global_tid = NULL; + dbenv = new DbEnv(0); +#if DB_VERSION_MINOR < 3 dbenv->set_errcall(&MainWindow::dberr); +#else + dbenv->set_errcall(&MainWindow::dberrEnv); +#endif dbenv->open(QFile::encodeName(baseDir), DB_RECOVER | DB_INIT_TXN | \ DB_INIT_MPOOL | DB_INIT_LOG | DB_INIT_LOCK | \ DB_CREATE | DB_PRIVATE , 0600 ); + dbenv->txn_begin(NULL, &global_tid, 0); #ifndef DB_AUTO_COMMIT #define DB_AUTO_COMMIT 0 #endif dbenv->set_flags(DB_AUTO_COMMIT,1); + } catch (DbException &err) { QString e = err.what();