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