1/*
2 * Copyright (C) 1994-2005 The Free Software Foundation, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2, or (at your option)
7 * any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 */
14
15#ifdef MY_NDBM
16
17#define	DBLKSIZ	4096
18
19typedef struct
20{
21    List *dbm_list;			/* cached database */
22    Node *dbm_next;			/* next key to return for nextkey() */
23
24    /* Name of the file to write to if modified is set.  malloc'd.  */
25    char *name;
26
27    /* Nonzero if the database has been modified and dbm_close needs to
28       write it out to disk.  */
29    int modified;
30} DBM;
31
32typedef struct
33{
34    char *dptr;
35    int dsize;
36} datum;
37
38/*
39 * So as not to conflict with other dbm_open, etc., routines that may
40 * be included by someone's libc, all of my emulation routines are prefixed
41 * by "my" and we define the "standard" ones to be "my" ones here.
42 */
43#define	dbm_open	mydbm_open
44#define	dbm_close	mydbm_close
45#define	dbm_fetch	mydbm_fetch
46#define	dbm_firstkey	mydbm_firstkey
47#define	dbm_nextkey	mydbm_nextkey
48#define dbm_store	mydbm_store
49#define  DBM_INSERT  0
50#define  DBM_REPLACE 1
51
52DBM *mydbm_open PROTO((char *file, int flags, int mode));
53void mydbm_close PROTO((DBM * db));
54datum mydbm_fetch PROTO((DBM * db, datum key));
55datum mydbm_firstkey PROTO((DBM * db));
56datum mydbm_nextkey PROTO((DBM * db));
57extern int mydbm_store PROTO ((DBM *, datum, datum, int));
58
59#endif				/* MY_NDBM */
60