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
Thecdbw
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
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>.