Code: Show/Hide local int init_db(void)
{ int err; mkdir(ASSS_DB_HOME, 0755); if ((err = db_env_create(&dbenv, 0))) { fprintf(stderr, "db_env_create: %s\n", db_strerror(err)); return MM_FAIL; } if ((err = dbenv->open( dbenv, ASSS_DB_HOME, DB_INIT_CDB | DB_INIT_MPOOL | DB_CREATE, 0644))) { fprintf(stderr, "db_env_create: %s\n", db_strerror(err)); goto close_env; } if ((err = db_create(&db, dbenv, 0))) { fprintf(stderr, "db_env_create: %s\n", db_strerror(err)); goto close_env; } if ((err = db->open( db, #if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1 /* they added a transaction parameter to the db->open * call in 4.1.0. */ NULL, #endif ASSS_DB_FILENAME, NULL, DB_BTREE, DB_CREATE, 0644))) { fprintf(stderr, "db_env_create: %s\n", db_strerror(err)); goto close_db; } /* sync once */ db->sync(db, 0); return MM_OK; close_db: db->close(db, 0); close_env: dbenv->close(dbenv, 0); return MM_FAIL; } |