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 store(key, content);
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);
datum dbm_fetch(file, key);
int dbm_store(file, key, `content', flags);
int dbm_delete(file, key);
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 ... -L /usr/local/lib -lgdbm
automatically generated by