NAME
cdbw_open,
cdbw_put,
cdbw_put_data,
cdbw_put_key,
cdbw_stable_seeder,
cdbw_output,
cdbw_close —
create constant
databases
SYNOPSIS
#include <cdbw.h>
struct cdbw *
cdbw_open(
void);
int
cdbw_put(
struct cdbw *cdbw,
const void *key,
size_t keylen,
const void *data,
size_t datalen);
int
cdbw_put_data(
struct cdbw *cdbw,
const void *data,
size_t datalen,
uint32_t *index);
int
cdbw_put_key(
struct cdbw *cdbw,
const void *key,
size_t keylen,
uint32_t index);
uint32_t
cdbw_stable_seeder(
void);
int
cdbw_output(
struct cdbw *cdbw,
int output,
const char descr[16],
uint32_t (*seedgen)(void));
void
cdbw_close(
struct
cdbw *cdbw);
DESCRIPTION
The
cdbw functions are used to create a constant databases for
use with
cdbr(3). Details about
the file format, including overhead and limitations, can be found in
cdb(5).
cdbw_open() prepares a new
cdb writer. The
function returns a handle to pass to the other functions.
cdbw_close() frees all resources associated with the handle.
cdbw_put() adds the given (key,value) pair after checking for
a duplicate key.
cdbw_put_data() adds the given value to the
writer without adding a key reference. The returned index can be used in
subsequent calls to
cdbw_put_key() to add one or more keys
pointing to this value.
cdbw_put_key() checks for duplicate
keys and valid index arguments. On success it adds the given key.
cdbw_output() computes the database file and writes it to the
given descriptor. The function returns an error if the file cannot be written
correctly. The
descr parameter provides a human readable
description of the database content. The
seedgen
parameter can be used to override the default PRNG. The bitwise layout of the
output depends on the chosen seed. The function should return a different
value for each invocation. The
cdbw_stable_seeder() can be
used to create reproducible output. It may be slower than the default.
SEE ALSO
cdbr(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>.