geteuid(),
getegid()
);
- cit_backtrace();
exit(CTDLEXIT_DB);
}
{
if (!IsEmptyStr(msg)) {
syslog(LOG_DEBUG, "db: %s", msg);
- cit_backtrace();
}
}
{
int *FOO = NULL;
syslog(LOG_ERR, "db: %s", msg);
- cit_backtrace();
*FOO = 1;
}
static void dbpanic(DB_ENV * env, int errval)
{
syslog(LOG_ERR, "db: PANIC: %s", db_strerror(errval));
- cit_backtrace();
}
static void cclose(DBC * cursor)
* already there, no problem.
*/
if ((mkdir(ctdl_data_dir, 0700) != 0) && (errno != EEXIST)){
- syslog(LOG_ERR, "db: unable to create database directory [%s]: %s", ctdl_data_dir, strerror(errno));
+ syslog(LOG_ERR, "db: unable to create database directory [%s]: %m", ctdl_data_dir);
}
if (chmod(ctdl_data_dir, 0700) != 0){
- syslog(LOG_ERR, "db: unable to set database directory accessrights [%s]: %s", ctdl_data_dir, strerror(errno));
+ syslog(LOG_ERR, "db: unable to set database directory accessrights [%s]: %m", ctdl_data_dir);
}
if (chown(ctdl_data_dir, CTDLUID, (-1)) != 0){
- syslog(LOG_ERR, "db: unable to set the owner for [%s]: %s", ctdl_data_dir, strerror(errno));
+ syslog(LOG_ERR, "db: unable to set the owner for [%s]: %m", ctdl_data_dir);
}
syslog(LOG_DEBUG, "db: Setting up DB environment\n");
/* db_env_set_func_yield((int (*)(u_long, u_long))sched_yield); */
exit(CTDLEXIT_DB);
}
- flags = DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_INIT_TXN | DB_INIT_LOCK | DB_THREAD | DB_RECOVER;
+ flags = DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_INIT_TXN | DB_INIT_LOCK | DB_THREAD | DB_INIT_LOG;
syslog(LOG_DEBUG, "db: dbenv->open(dbenv, %s, %d, 0)", ctdl_data_dir, flags);
ret = dbenv->open(dbenv, ctdl_data_dir, flags, 0);
if (ret == DB_RUNRECOVERY) {
}
+/*
+ * compact (defragment) the database , possibly returning space back to the underlying filesystem
+ */
+void cdb_compact(void)
+{
+ int ret;
+ int i;
+
+ syslog(LOG_DEBUG, "db: cdb_compact() started");
+ for (i = 0; i < MAXCDB; i++) {
+ syslog(LOG_DEBUG, "db: compacting database %d", i);
+ ret = dbp[i]->compact(dbp[i], NULL, NULL, NULL, NULL, DB_FREE_SPACE, NULL);
+ if (ret) {
+ syslog(LOG_ERR, "db: compact: %s", db_strerror(ret));
+ }
+ }
+ syslog(LOG_DEBUG, "db: cdb_compact() finished");
+}
+
// Has an item already been seen (is it in the CDB_USETABLE) ?
// Returns 0 if it hasn't, 1 if it has