implement new interface

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3626 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1997-10-16 04:13:04 +00:00
parent 1c7c304b6c
commit 593cda47a5
2 changed files with 51 additions and 16 deletions

View File

@@ -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

View File

@@ -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;
} }