home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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
- */
-
- /*
- * 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
-
- #ifdef __STRICT_BSD__
- DBM *dbm_open();
- void dbm_close();
- datum dbm_fetch();
- datum dbm_firstkey();
- datum dbm_nextkey();
- long dbm_forder();
- int dbm_delete();
- int dbm_store();
- #else
- DBM *dbm_open(char *file, int flags, ...);
- void dbm_close(DBM *db);
- datum dbm_fetch(DBM *db, datum key);
- datum dbm_firstkey(DBM *db);
- datum dbm_nextkey(DBM *db);
- long dbm_forder(DBM *db, datum key);
- int dbm_delete(DBM *db, datum key);
- int dbm_store(DBM *db, datum key, datum content, int flags);
- #endif __STRICT_BSD__
-