|
|
1.1 root 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.3 (Berkeley) 5/29/90
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: #if __STDC__ || c_plusplus
56: extern DBM *dbm_open(const char *, int, int);
57: extern void dbm_close(DBM *);
58: extern datum dbm_fetch(DBM *, datum);
59: extern datum dbm_firstkey(DBM *);
60: extern datum dbm_nextkey(DBM *);
61: extern long dbm_forder(DBM *, datum);
62: extern int dbm_delete(DBM *, datum);
63: extern int dbm_store(DBM *, datum, datum, int);
64: #else
65: extern DBM *dbm_open();
66: extern void dbm_close();
67: extern datum dbm_fetch();
68: extern datum dbm_firstkey();
69: extern datum dbm_nextkey();
70: extern long dbm_forder();
71: extern int dbm_delete();
72: extern int dbm_store();
73: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.