/* * Copyright (c) 1983 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * * @(#)ndbm.h 5.1 (Berkeley) 5/30/85 */ #ifndef _myndbm_h #define _myndbm_h #ifndef lint static char *myndbm_RCSid = "$Id: myndbm.h,v 1.4 1995/01/19 03:07:30 ambar Exp $"; USE(myndbm_RCSid); #endif #include <sys/file.h> #include <sys/stat.h> /* * Hashed key data base library. */ #define PBLKSIZ 1024 #define DBLKSIZ 4096 typedef struct { 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; } datum; /* * flags to dbm_store() */ #define DBM_INSERT 0 #define DBM_REPLACE 1 DBM *FDECL(dbm_open, (char *, int, int)); void FDECL(dbm_close, (DBM *)); datum FDECL(dbm_fetch, (DBM *, datum)); datum FDECL(dbm_firstkey, (DBM *)); datum FDECL(dbm_nextkey, (DBM *)); long FDECL(dbm_forder, (DBM *, datum)); int FDECL(dbm_delete, (DBM *, datum)); int FDECL(dbm_store, (DBM *, datum, datum, int)); #endif /* _myndbm_h */