xref: /original-bsd/old/libndbm/ndbm.h (revision ff24bfdf)
1 /*-
2  * Copyright (c) 1983 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.proprietary.c%
6  *
7  *	@(#)ndbm.h	5.2 (Berkeley) 04/22/91
8  */
9 
10 /*
11  * Derived from:
12  *
13  *	@(#)ndbm.h	5.3 (Berkeley) 5/29/90
14  */
15 
16 /*
17  * Hashed key data base library.
18  */
19 #define PBLKSIZ 1024
20 #define DBLKSIZ 4096
21 
22 typedef struct {
23 	int	dbm_dirf;		/* open directory file */
24 	int	dbm_pagf;		/* open page file */
25 	int	dbm_flags;		/* flags, see below */
26 	long	dbm_maxbno;		/* last ``bit'' in dir file */
27 	long	dbm_bitno;		/* current bit number */
28 	long	dbm_hmask;		/* hash mask */
29 	long	dbm_blkptr;		/* current block for dbm_nextkey */
30 	int	dbm_keyptr;		/* current key for dbm_nextkey */
31 	long	dbm_blkno;		/* current page to read/write */
32 	long	dbm_pagbno;		/* current page in pagbuf */
33 	char	dbm_pagbuf[PBLKSIZ];	/* page file block buffer */
34 	long	dbm_dirbno;		/* current block in dirbuf */
35 	char	dbm_dirbuf[DBLKSIZ];	/* directory file block buffer */
36 } DBM;
37 
38 #define _DBM_RDONLY	0x1	/* data base open read-only */
39 #define _DBM_IOERR	0x2	/* data base I/O error */
40 
41 #define dbm_rdonly(db)	((db)->dbm_flags & _DBM_RDONLY)
42 
43 #define dbm_error(db)	((db)->dbm_flags & _DBM_IOERR)
44 	/* use this one at your own risk! */
45 #define dbm_clearerr(db)	((db)->dbm_flags &= ~_DBM_IOERR)
46 
47 /* for flock(2) and fstat(2) */
48 #define dbm_dirfno(db)	((db)->dbm_dirf)
49 #define dbm_pagfno(db)	((db)->dbm_pagf)
50 
51 typedef struct {
52 	char	*dptr;
53 	int	dsize;
54 } datum;
55 
56 /*
57  * flags to dbm_store()
58  */
59 #define DBM_INSERT	0
60 #define DBM_REPLACE	1
61 
62 #if __STDC__ || c_plusplus
63 extern DBM *dbm_open(const char *, int, int);
64 extern void dbm_close(DBM *);
65 extern datum dbm_fetch(DBM *, datum);
66 extern datum dbm_firstkey(DBM *);
67 extern datum dbm_nextkey(DBM *);
68 extern long dbm_forder(DBM *, datum);
69 extern int dbm_delete(DBM *, datum);
70 extern int dbm_store(DBM *, datum, datum, int);
71 #else
72 extern DBM *dbm_open();
73 extern void dbm_close();
74 extern datum dbm_fetch();
75 extern datum dbm_firstkey();
76 extern datum dbm_nextkey();
77 extern long dbm_forder();
78 extern int dbm_delete();
79 extern int dbm_store();
80 #endif
81