1 /*- 2 * Copyright (c) 1983 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.proprietary.c% 6 * 7 * @(#)ndbm.h 5.2 (Berkeley) 04/22/91 8 */ 9 10 /* 11 * Derived from: 12 * 13 * @(#)ndbm.h 5.3 (Berkeley) 5/29/90 14 */ 15 16 /* 17 * Hashed key data base library. 18 */ 19 #define PBLKSIZ 1024 20 #define DBLKSIZ 4096 21 22 typedef struct { 23 int dbm_dirf; /* open directory file */ 24 int dbm_pagf; /* open page file */ 25 int dbm_flags; /* flags, see below */ 26 long dbm_maxbno; /* last ``bit'' in dir file */ 27 long dbm_bitno; /* current bit number */ 28 long dbm_hmask; /* hash mask */ 29 long dbm_blkptr; /* current block for dbm_nextkey */ 30 int dbm_keyptr; /* current key for dbm_nextkey */ 31 long dbm_blkno; /* current page to read/write */ 32 long dbm_pagbno; /* current page in pagbuf */ 33 char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */ 34 long dbm_dirbno; /* current block in dirbuf */ 35 char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */ 36 } DBM; 37 38 #define _DBM_RDONLY 0x1 /* data base open read-only */ 39 #define _DBM_IOERR 0x2 /* data base I/O error */ 40 41 #define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY) 42 43 #define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR) 44 /* use this one at your own risk! */ 45 #define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR) 46 47 /* for flock(2) and fstat(2) */ 48 #define dbm_dirfno(db) ((db)->dbm_dirf) 49 #define dbm_pagfno(db) ((db)->dbm_pagf) 50 51 typedef struct { 52 char *dptr; 53 int dsize; 54 } datum; 55 56 /* 57 * flags to dbm_store() 58 */ 59 #define DBM_INSERT 0 60 #define DBM_REPLACE 1 61 62 #if __STDC__ || c_plusplus 63 extern DBM *dbm_open(const char *, int, int); 64 extern void dbm_close(DBM *); 65 extern datum dbm_fetch(DBM *, datum); 66 extern datum dbm_firstkey(DBM *); 67 extern datum dbm_nextkey(DBM *); 68 extern long dbm_forder(DBM *, datum); 69 extern int dbm_delete(DBM *, datum); 70 extern int dbm_store(DBM *, datum, datum, int); 71 #else 72 extern DBM *dbm_open(); 73 extern void dbm_close(); 74 extern datum dbm_fetch(); 75 extern datum dbm_firstkey(); 76 extern datum dbm_nextkey(); 77 extern long dbm_forder(); 78 extern int dbm_delete(); 79 extern int dbm_store(); 80 #endif 81