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)