Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

tdb_traverse(3) [debian man page]

TDB_TRAVERSE(3) 					     Linux Programmer's Manual						   TDB_TRAVERSE(3)

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) Samba Aug 16, 2000 TDB_TRAVERSE(3)

Check Out this Related Man Page

TDB_FIRSTKEY(3) 					     Linux Programmer's Manual						   TDB_FIRSTKEY(3)

NAME
tdb_firstkey - return the key of the first record in a tdb database tdb_nextkey - return the key of next record in the tdb database SYNOPSIS
#include <tdb.h> TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb); TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA prev_key); DESCRIPTION
tdb_firstkey fetches the key of the first entry in the tdb database. tdb_nextkey fetches the key of the entry immediately after prev_key in the database. The TDB_DATA structure returned by both these functions is defined as: typedef struct { char *dptr; size_t dsize; } TDB_DATA; The order in which this traverses the database is its own internal hash order. Do not expect the keys to be in any recognizably sorted order. These functions are reliable even if other writers are accessing the database (or you are replacing or deleting elements as you traverse), except in the case of nested tdb_firstkey or tdb_nextkey calls. For example, the following outer traversal may fail to traverse all the elements, or may even traverse elements twice if other processes are manipulating the database: TDB_DATA i, j; for (i = tdb_firstkey(tdb); i.dptr; i = tdb_nextkey(tdb, i)) { for (j = tdb_firstkey(tdb); j.dptr; j = tdb_nextkey(tdb, j)) { ... } } If such behaviour is desired, use tdb_traverse instead. RETURN VALUE
If the call succeeds, then a TDB_DATA structure is returned with the dptr structure filled in. If the call fails or you have reached the end of the database then dptr will be set to NULL. NOTE: The caller is responsible for freeing the data pointed to by dptr 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) Samba Aug 16, 2000 TDB_FIRSTKEY(3)
Man Page