NAME
cdbr cdbr_open,
cdbr_open_mem,
cdbr_entries,
cdbr_get,
cdbr_find,
cdbr_close,
cdbr_write —
constant database access methods
SYNOPSIS
struct cdbr *
cdbr_open(
const
char *path,
int
flags);
struct cdbr *
cdbr_open_mem(
void *base,
size_t size,
void (*unmap)(void *, void
*, size_t),
void *cookie);
uint32_t
cdbr_entries(
struct
cdbr *cdbr);
int
cdbr_get(
struct
cdbr *cdbr,
uint32_t
index,
const void
**data,
size_t
*datalen);
int
cdbr_find(
struct cdbr *cdbr,
const void *key,
size_t keylen,
const void **data,
size_t
*datalen);
void
cdbr_close(
struct
cdbr *cdbr);
DESCRIPTION
The
cdbr library provides a space efficient (key,value)
database based on perfect hashing.
A cdb database is opened for reading by calling
cdbr_open().
The only supported value for
flags is
CDBR_DEFAULT
. The function returns a handle to pass to
the other functions. The database is closed by invoking
cdbr_close(). All resources associated with the handle are
freed and the memory returned by
cdbr_get() and
cdbr_find() is invalidated.
cdbr_open_mem() works like
cdbr_open(),
but takes a memory reference to the content of the database file. If
unmap is not
NULL
, it is called
by
cdbr_close() with
cookie,
base and
size as arguments. It is
not called by
cdbr_open_mem() on error.
The number of records in the database can be obtained by calling
cdbr_entries(). Records can be obtained by record number
using
cdbr_get() or by key using
cdbr_find(). Both functions return 0 on success and update
data and
datalen accordingly. The
location
*data remains valid until
cdbr_close() is called. It is the responsibility of the
caller of
cdbr_find() to ensure that the key matches the
returned data. The function returns the only possible match, but the database
doesn't store the keys to minimize overhead.
SEE ALSO
nbperf(1),
cdbw(3),
db(3),
cdb(5)
HISTORY
Support for the
cdb format first appeared in
NetBSD 6.0.
AUTHORS
The
cdbr and
cdbw functions have been
written by
Joerg Sonnenberger
<
joerg@NetBSD.org>.