Man Linux: Main Page and Category List

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)