GNU Info

Info Node: (gdbm.info)Compatibility

(gdbm.info)Compatibility


Next: Conversion Prev: Variables Up: Top
Enter node , (file) or (file)node

Compatibility with standard `dbm' and `ndbm'.
*********************************************

   GNU `dbm' files are not `sparse'. You can copy them with the UNIX
`cp' command and they will not expand in the copying process.

   There is a compatibility mode for use with programs that already use
UNIX `dbm' and UNIX `ndbm'.

   GNU `dbm' has compatibility functions for `dbm'. For `dbm'
compatibility functions, you need the include file `dbm.h'.

   In this compatibility mode, no `gdbm' file pointer is required by
the user, and Only one file may be opened at a time. All users in
compatibility mode are assumed to be writers. If the `gdbm' file is a
read only, it will fail as a writer, but will also try to open it as a
reader.  All returned pointers in datum structures point to data that
`gdbm' WILL free. They should be treated as static pointers (as
standard UNIX `dbm' does). The compatibility function names are the
same as the UNIX `dbm' function names. Their definitions follow:

     int dbminit(name);
     int store(key, content);
     datum fetch(key);
     int delete(key);
     datum firstkey();
     datum nextkey(key);
     int dbmclose();

   Standard UNIX `dbm' and GNU `dbm' do not have the same data format
in the file. You cannot access a standard UNIX `dbm' file with GNU
`dbm'!  If you want to use an old database with GNU `dbm', you must use
the `conv2gdbm' program.

   Also, GNU `dbm' has compatibility functions for `ndbm'. For `ndbm'
compatibility functions, you need the include file `ndbm.h'.

   Again, just like `ndbm', any returned datum can be assumed to be
static storage. You do not have to free that memory, the `ndbm'
compatibility functions will do it for you.

   The functions are:

     DBM *dbm_open(name, flags, mode);
     void dbm_close(file);
     datum dbm_fetch(file, key);
     int dbm_store(file, key, `content', flags);
     int dbm_delete(file, key);
     datum dbm_firstkey(file);
     datum dbm_nextkey(file);
     int dbm_error(file);
     int dbm_clearerr(file);
     int dbm_dirfno(file);
     int dbm_pagfno(file);
     int dbm_rdonly(file);

   If you want to compile an old C program that used UNIX `dbm' or
`ndbm' and want to use `gdbm' files, execute the following `cc' command:

     cc ... -lgdbm


automatically generated by info2www version 1.2.2.9