implement new interface
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3626 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
36
lib/hdb/db.c
36
lib/hdb/db.c
@@ -47,6 +47,12 @@ DB_close(krb5_context context, HDB *db)
|
|||||||
{
|
{
|
||||||
DB *d = (DB*)db->db;
|
DB *d = (DB*)db->db;
|
||||||
d->close(d);
|
d->close(d);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
DB_destroy(krb5_context context, HDB *db)
|
||||||
|
{
|
||||||
free(db->name);
|
free(db->name);
|
||||||
free(db);
|
free(db);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -250,20 +256,32 @@ DB__del(krb5_context context, HDB *db, krb5_data key)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
krb5_error_code
|
static krb5_error_code
|
||||||
hdb_db_open(krb5_context context, HDB **db,
|
DB_open(krb5_context context, HDB *db, int flags, mode_t mode)
|
||||||
const char *filename, int flags, mode_t mode)
|
|
||||||
{
|
{
|
||||||
DB *d;
|
|
||||||
char *fn;
|
char *fn;
|
||||||
asprintf(&fn, "%s.db", filename);
|
|
||||||
d = dbopen(fn, flags, mode, DB_BTREE, NULL);
|
asprintf(&fn, "%s.db", db->name);
|
||||||
|
db->db = dbopen(fn, flags, mode, DB_BTREE, NULL);
|
||||||
free(fn);
|
free(fn);
|
||||||
if(d == NULL)
|
if(db->db == NULL)
|
||||||
return errno;
|
return errno;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
krb5_error_code
|
||||||
|
hdb_db_create(krb5_context context, HDB **db,
|
||||||
|
const char *filename)
|
||||||
|
{
|
||||||
*db = malloc(sizeof(**db));
|
*db = malloc(sizeof(**db));
|
||||||
(*db)->db = d;
|
if (*db == NULL)
|
||||||
|
return ENOMEM;
|
||||||
|
|
||||||
|
(*db)->db = NULL;
|
||||||
(*db)->name = strdup(filename);
|
(*db)->name = strdup(filename);
|
||||||
|
(*db)->master_key_set = 0;
|
||||||
|
(*db)->openp = 0;
|
||||||
|
(*db)->open = DB_open;
|
||||||
(*db)->close = DB_close;
|
(*db)->close = DB_close;
|
||||||
(*db)->fetch = _hdb_fetch;
|
(*db)->fetch = _hdb_fetch;
|
||||||
(*db)->store = _hdb_store;
|
(*db)->store = _hdb_store;
|
||||||
@@ -276,8 +294,8 @@ hdb_db_open(krb5_context context, HDB **db,
|
|||||||
(*db)->_get = DB__get;
|
(*db)->_get = DB__get;
|
||||||
(*db)->_put = DB__put;
|
(*db)->_put = DB__put;
|
||||||
(*db)->_del = DB__del;
|
(*db)->_del = DB__del;
|
||||||
|
(*db)->destroy = DB_destroy;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -47,6 +47,12 @@ NDBM_close(krb5_context context, HDB *db)
|
|||||||
{
|
{
|
||||||
DBM *d = (DBM*)db->db;
|
DBM *d = (DBM*)db->db;
|
||||||
dbm_close(d);
|
dbm_close(d);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
NDBM_destroy(krb5_context context, HDB *db)
|
||||||
|
{
|
||||||
free(db->name);
|
free(db->name);
|
||||||
free(db);
|
free(db);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -209,18 +215,28 @@ NDBM__del(krb5_context context, HDB *db, krb5_data key)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
NDBM_open(krb5_context context, HDB *db, int flags, mode_t mode)
|
||||||
|
{
|
||||||
|
db->db = dbm_open((char*)db->name, flags, mode);
|
||||||
|
if(db->db == NULL)
|
||||||
|
return errno;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
krb5_error_code
|
krb5_error_code
|
||||||
hdb_ndbm_open(krb5_context context, HDB **db,
|
hdb_ndbm_create(krb5_context context, HDB **db,
|
||||||
const char *filename, int flags, mode_t mode)
|
const char *filename)
|
||||||
{
|
{
|
||||||
DBM *d;
|
|
||||||
d = dbm_open((char*)filename, flags, mode);
|
|
||||||
if(d == NULL)
|
|
||||||
return errno;
|
|
||||||
*db = malloc(sizeof(**db));
|
*db = malloc(sizeof(**db));
|
||||||
(*db)->db = d;
|
if (*db == NULL)
|
||||||
|
return ENOMEM;
|
||||||
|
|
||||||
|
(*db)->db = NULL;
|
||||||
(*db)->name = strdup(filename);
|
(*db)->name = strdup(filename);
|
||||||
|
(*db)->master_key_set = 0;
|
||||||
|
(*db)->openp = 0;
|
||||||
|
(*db)->open = NDBM_open;
|
||||||
(*db)->close = NDBM_close;
|
(*db)->close = NDBM_close;
|
||||||
(*db)->fetch = _hdb_fetch;
|
(*db)->fetch = _hdb_fetch;
|
||||||
(*db)->store = _hdb_store;
|
(*db)->store = _hdb_store;
|
||||||
@@ -233,6 +249,7 @@ hdb_ndbm_open(krb5_context context, HDB **db,
|
|||||||
(*db)->_get = NDBM__get;
|
(*db)->_get = NDBM__get;
|
||||||
(*db)->_put = NDBM__put;
|
(*db)->_put = NDBM__put;
|
||||||
(*db)->_del = NDBM__del;
|
(*db)->_del = NDBM__del;
|
||||||
|
(*db)->destroy = NDBM_destroy;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user