CDBR(3) | Library Functions Manual | CDBR(3) |
cdbr
, cdbr_open
,
cdbr_open_mem
, cdbr_entries
,
cdbr_get
, cdbr_find
,
cdbr_close
—
cdbr_open
(const
char *path, int
flags);
struct cdbr *
cdbr_open_mem
(void *base,
size_t size, int flags,
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);
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.
cdb
format first appeared in
NetBSD 6.0.
cdbr
and cdbw
functions have
been written by Joerg Sonnenberger
<joerg@NetBSD.org>.
December 1, 2018 | NetBSD 9.0 |