COHERENT manpages

This page displays the COHERENT manpage for gdbm_open() [Open a GDBM data base].

List of available manpages
Index


gdbm_open() -- GDBM Function (libgdbm)

Open a GDBM data base
#include <gdbm.h>
GDBM_FILE gdbm_open(database, block_size, read_write, mode, bailout)
char *database;
int block_size, read_write, mode;
void (*bailout)();

Function  gdbm_open()  opens a  GDBM  data base.   It  takes the  following
parameters:

database
     This gives  the complete name  of the data  base.  Please note  that a
     data base  actually consists of  two files: one,  called database.dir,
     holds  the hashed  index; the  other,  called database.pag,  holds the
     data.  The  GDBM routines manage the manipulation  of these files; you
     need not  worry about  them yourself.  (For  more details on  how GDBM
     works, see the Lexicon entry for libgdbm.)

block_size
     This  gives  the  size of  a  single  transfer  from  disk to  memory.
     gdbm_open()  ignores this  parameter is unless  database is  new.  The
     minimum size is 512.  If you set block_size to less than 512, the GDBM
     routines use a block size of BSIZE. (This constant gives the size of a
     block under COHERENT; it is set in header file <sys/buf.h>.

read_write
     This parameter  indicates whether you  are opening the  data base into
     read mode  or write mode.   If a process  opens database only  to read
     records within it, it is  called a ``reader''.  If, however, a process
     can also  add records  to database, remove  record from it,  or modify
     records within it, it is  called a ``writer''.  database can be opened
     by multiple  readers simultaneously, or by a  single writer; it cannot
     be opened  by multiple  writers simultaneously, or  by a reader  and a
     writer simultaneously.   This rule prevents a  writer from modifying a
     data base while it is being read, and so confusing the readers; and to
     prevent multiple writers from ``clobbering'' each other's changes.

     read_write can be one of the following values:

     GDBM_READER
          The process opening database is a reader.
     GDBM_WRITER
          The process opening database is a writer.
     GDBM_WRCREAT
          The  process  opening database  is  a writer;  if  the data  base
          database does not exist, create it.
     GDBM_NEWDB
          The process  opening database is  a writer; create  database as a
          new data base, regardless of whether it already exists.
     GDBM_FAST
          If  this  constant is  OR'd  onto  GDBM_WRITER, GDBM_WRCREAT,  or
          GDBM_NEWDB, the  GDBM routines write the  data base without disk-
          file  syncronization.   This speeds  writing  to  the data  base;
          however, if the writer  dies unexpectedly, some data may be lost.
          To flush buffered data to disk, call function gdbm_sync().

mode This is a bitwise OR of the modes into which database is created.  For
     a list of  the flags that can be incorporated  into this argument, see
     the  Lexicon entry  stat.h. gdbm_open()  ignores this  argument unless
     read_write is set to GDBM_WRCREAT or GDBM_NEWDB.

bailout
     This  points to  the function  that gdbm_open()  calls should  a fatal
     error occur.  This function must take only one argument, a string that
     holds an error message.  If you set bailout to NULL, the GDBM routines
     use a default function.

If  all goes  well,  gdbm_open() returns  a  pointer to  a  record of  type
GDBM_FILE. All other GDBM functions need this record to manipulate the data
base in  database. If  an error occurs,  gdbm_open() returns NULL  and sets
global  variable   gdbm_errno  and   errno  to  appropriate   values.   For
information on  interpreting the contents  of errno, see  the Lexicon entry
for errno.h;  for information on  interpreting the contents  of gdbm_errno,
see the entry for gdbmerrno.h.

See Also


Notes

For  a statement  of copyright  and  permissions on  this routine,  see the
Lexicon entry for libgdbm.