OpenBSD manual page server

Manual Page Search Parameters

DBM(3) Library Functions Manual DBM(3)

dbminit, dbmclose, fetch, store, delete, firstkey, nextkeydatabase subroutines

#include <dbm.h>

int
dbminit(const char *file);

int
dbmclose(void);

datum
fetch(datum key);

int
store(datum key, datum content);

int
delete(datum key);

datum
firstkey(void);

datum
nextkey(datum key);

These functions provide a dbm-compatible interface to the database access methods described in db(3). Each unique record in the database is a key/content pair, the components of which may be any arbitrary binary data. The key and the content data are described by the datum data structure:

typedef struct {
	void *dptr;
	size_t dsize;
} datum;

The () function is used to open a database. Before the call to dbminit(), the files file.pag and file.dir must exist. The user is responsible for creating the zero-length .pag and .dir files.

Once the database is open, () is used to retrieve the data content associated with the specified key. Similarly, () is used to store the content data with the specified key.

The () function removes the specified key and its associated content from the database.

The functions () and nextkey() are used to iterate over all of the records in the database. Each record will be reached exactly once, but in no particular order. The firstkey() function returns the first record of the database, and thereafter nextkey() returns the following records. The following code traverses the entire database:

for (key = firstkey(); key.dptr != NULL; key = nextkey(key))

The behaviour of () is undefined if the database is modified after a call to firstkey().

The database is closed with the () function (it must be closed before a new one can be opened).

The underlying database is a hash(3) database with a bucket size of 4096, a filling factor of 40, default hashing function and cache size, and uses the host's native byte order.

Upon successful completion, all functions that return int return a value of 0, otherwise a negative value is returned.

Functions that return a datum indicate errors by setting the dptr field to NULL.

db(3), hash(3), ndbm(3)

Because the dbm routines are implemented on top of db(3), only a single file, file.pag, is used to actually store the database. The references to file.dir are purely for backwards compatibility with historic implementations.

May 31, 2007 OpenBSD-5.3