Provided by: libtdb-dev_1.4.2-3build1_amd64 bug


       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


       #include <tdb.h>

       TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb);
       TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA prev_key);


       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

                   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.


       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

       NOTE: The caller is responsible for freeing the data pointed to by dptr


       Software: Andrew Tridgell <> and  Luke  Kenneth  Casson  Leighton  Man
       page: Ben Woodard <>


       gdbm(3), tdb(3)