Copyright (C) 2000-2012 |
GNU Info (gdbm.info)CompatibilityCompatibility 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 |