- int dbm_dirf; /* open directory file */
- int dbm_pagf; /* open page file */
- int dbm_flags; /* flags, see below */
- long dbm_maxbno; /* last ``bit'' in dir file */
- long dbm_bitno; /* current bit number */
- long dbm_hmask; /* hash mask */
- long dbm_blkptr; /* current block for dbm_nextkey */
- int dbm_keyptr; /* current key for dbm_nextkey */
- long dbm_blkno; /* current page to read/write */
- long dbm_pagbno; /* current page in pagbuf */
- char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */
- long dbm_dirbno; /* current block in dirbuf */
- char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */
-} DBM;
-
-#define _DBM_RDONLY 0x1 /* data base open read-only */
-#define _DBM_IOERR 0x2 /* data base I/O error */
-
-#define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
-
-#define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR)
- /* use this one at your own risk! */
-#define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR)
-
-/* for flock(2) and fstat(2) */
-#define dbm_dirfno(db) ((db)->dbm_dirf)
-#define dbm_pagfno(db) ((db)->dbm_pagf)
-
-typedef struct {
- char *dptr;
- int dsize;