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