Skip to content

Instantly share code, notes, and snippets.

@Ironlenny
Created October 21, 2016 21:43
Show Gist options
  • Save Ironlenny/d3e4255d322bf2c7b439aacf32276a75 to your computer and use it in GitHub Desktop.
Save Ironlenny/d3e4255d322bf2c7b439aacf32276a75 to your computer and use it in GitHub Desktop.
The database driver
#include "meta_db.h"
#include <stdbool.h>
#include <lmdb.h>
#include <stdio.h>
int meta_max_dbs = 0;
int meta_open(const char *file, unsigned long db_name, bool create,
MDB_env **env, MDB_dbi *dbi)
{
int rc = 0;
const int buff_size = 11;
char buff[buff_size];
char *name = NULL;
MDB_txn *txn = NULL;
if (db_name != 0)
{
snprintf(buff, buff_size, "%lu", db_name);
name = buff;
}
rc = mdb_env_create(env);
rc = mdb_env_set_maxdbs(*env, meta_max_dbs);
rc = mdb_env_open(*env, file, 0, 0644);
rc = mdb_txn_begin(*env, NULL, 0, &txn);
if (create == true)
rc = mdb_dbi_open(txn, name, MDB_CREATE, dbi);
rc = mdb_dbi_open(txn, name, 0, dbi);
return rc;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment