man.bsd.lv manual page server

Manual Page Search Parameters

CDBR(3) Library Functions Manual CDBR(3)

cdbr, cdbr_open, cdbr_open_mem, cdbr_entries, cdbr_get, cdbr_find, cdbr_closeconstant database access methods

struct cdbr *
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);

The cdbr library provides a space efficient (key,value) database based on perfect hashing.

A cdb database is opened for reading by calling (). 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 (). All resources associated with the handle are freed and the memory returned by cdbr_get() and cdbr_find() is invalidated. () 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 (). Records can be obtained by record number using () or by key using (). 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.

nbperf(1), cdbw(3), db(3), cdb(5)

Support for the cdb format first appeared in NetBSD 6.0.

The cdbr and cdbw functions have been written by Joerg Sonnenberger <joerg@NetBSD.org>.

December 1, 2018 NetBSD-9.2