X-Git-Url: https://git.cweiske.de/claws-mail-maildir-plugin.git/blobdiff_plain/de00844d1f20416a0f16613e818b4b2933989688..52e6cf0744674060f472039af66e76ca907b07bc:/src/uiddb.c diff --git a/src/uiddb.c b/src/uiddb.c index 9df0967..c998fd8 100644 --- a/src/uiddb.c +++ b/src/uiddb.c @@ -36,8 +36,24 @@ static DB_ENV *dbenv; void uiddb_init() { - db_env_create(&dbenv, 0); - dbenv->open(dbenv, get_tmp_dir(), DB_INIT_MPOOL | DB_INIT_CDB | DB_CREATE, 0600); + int ret; + int flags = DB_INIT_MPOOL | DB_INIT_CDB | DB_CREATE; + + if ((ret = db_env_create(&dbenv, 0)) != 0) { + g_warning("db_env_create: %s", db_strerror(ret)); + return; + } + if ((ret = dbenv->open(dbenv, get_tmp_dir(), flags, 0600)) != 0) { + if (ret != DB_RUNRECOVERY) { + g_warning("dbenv->open: %s", db_strerror(ret)); + return; + } + flags |= DB_RECOVER; + if ((ret = dbenv->open(dbenv, get_tmp_dir(), flags, 0600)) != 0) { + g_warning("dbenv->open (recovering): %s", db_strerror(ret)); + return; + } + } initialized = TRUE; }