NAME
tdb_traverse - visit every element in a tdb database
SYNOPSIS
#include <tdb.h>
int tdb_traverse(TDB_CONTEXT *tdb,
int (*fn)(TDB_CONTEXT *,TDB_DATA,TDB_DATA,void *),
void *state);
DESCRIPTION
tdb_traverse is the only sure way to visit all the items within a given
database, tdb Because this function has intimate knowledge of the
internals of the database, it is able to cope with writers touching the
database at the same time it is trying to traverse it.
If fn is supplied it will be called with the state parameter for each
element in the database, as the forth argument. The First argument is
the database tdb the second is the key and the third is the data. If
this function call returns anything but 0, the traversal will stop.
Unlike in tdb_fetch() the programmer is not required to free either the
pointer from either the key or data parameters that are passed into the
function. The fn function should have the prototype:
int (*tdb_traverse_func)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *);
Calling tdb_traverse with a NULL fn parameter is the appropriate way to
count the number of elements in the database.
RETURN VALUE
The return value is the number of elements traversed or -1 if there was
an error.
AUTHORS
Software: Andrew Tridgell <tridge@linuxcare.com> and Luke Kenneth
Casson Leighton Man page: Ben Woodard <ben@valinux.com>
SEE ALSO
gdbm(3), tdb(3)