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 (Berkeley) 05/30/85 7 */ 8 9 /* 10 * Hashed key data base library. 11 */ 12 #define PBLKSIZ 1024 13 #define DBLKSIZ 4096 14 15 typedef struct { 16 int dbm_dirf; /* open directory file */ 17 int dbm_pagf; /* open page file */ 18 int dbm_flags; /* flags, see below */ 19 long dbm_maxbno; /* last ``bit'' in dir file */ 20 long dbm_bitno; /* current bit number */ 21 long dbm_hmask; /* hash mask */ 22 long dbm_blkptr; /* current block for dbm_nextkey */ 23 int dbm_keyptr; /* current key for dbm_nextkey */ 24 long dbm_blkno; /* current page to read/write */ 25 long dbm_pagbno; /* current page in pagbuf */ 26 char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */ 27 long dbm_dirbno; /* current block in dirbuf */ 28 char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */ 29 } DBM; 30 31 #define _DBM_RDONLY 0x1 /* data base open read-only */ 32 #define _DBM_IOERR 0x2 /* data base I/O error */ 33 34 #define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY) 35 36 #define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR) 37 /* use this one at your own risk! */ 38 #define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR) 39 40 /* for flock(2) and fstat(2) */ 41 #define dbm_dirfno(db) ((db)->dbm_dirf) 42 #define dbm_pagfno(db) ((db)->dbm_pagf) 43 44 typedef struct { 45 char *dptr; 46 int dsize; 47 } datum; 48 49 /* 50 * flags to dbm_store() 51 */ 52 #define DBM_INSERT 0 53 #define DBM_REPLACE 1 54 55 DBM *dbm_open(); 56 void dbm_close(); 57 datum dbm_fetch(); 58 datum dbm_firstkey(); 59 datum dbm_nextkey(); 60 long dbm_forder(); 61 int dbm_delete(); 62 int dbm_store(); 63