xref: /csrg-svn/old/libndbm/dbm.c (revision 23760)
1*23760Skre #ifndef lint
2*23760Skre static char sccsid[] = "@(#) (Berkeley) 85/06/25";
3*23760Skre #endif
4*23760Skre 
5*23760Skre #include	"dbm.h"
6*23760Skre 
7*23760Skre #define	NODB	((DBM *)0)
8*23760Skre 
9*23760Skre static DBM *cur_db = NODB;
10*23760Skre 
11*23760Skre static char no_db[] = "dbm: no open database\n";
12*23760Skre 
13*23760Skre dbminit(file)
14*23760Skre 	char *file;
15*23760Skre {
16*23760Skre 	if (cur_db != NODB)
17*23760Skre 		dbm_close(cur_db);
18*23760Skre 
19*23760Skre 	cur_db = dbm_open(file, 2, 0);
20*23760Skre 	if (cur_db == NODB) {
21*23760Skre 		cur_db = dbm_open(file, 0, 0);
22*23760Skre 		return (-1);
23*23760Skre 	}
24*23760Skre 	return (0);
25*23760Skre }
26*23760Skre 
27*23760Skre long
28*23760Skre forder(key)
29*23760Skre datum key;
30*23760Skre {
31*23760Skre 	if (cur_db == NODB) {
32*23760Skre 		printf(no_db);
33*23760Skre 		return (0L);
34*23760Skre 	}
35*23760Skre 	return (dbm_forder(cur_db, key));
36*23760Skre }
37*23760Skre 
38*23760Skre datum
39*23760Skre fetch(key)
40*23760Skre datum key;
41*23760Skre {
42*23760Skre 	datum item;
43*23760Skre 
44*23760Skre 	if (cur_db == NODB) {
45*23760Skre 		printf(no_db);
46*23760Skre 		item.dptr = 0;
47*23760Skre 		return (item);
48*23760Skre 	}
49*23760Skre 	return (dbm_fetch(cur_db, key));
50*23760Skre }
51*23760Skre 
52*23760Skre delete(key)
53*23760Skre datum key;
54*23760Skre {
55*23760Skre 	if (cur_db == NODB) {
56*23760Skre 		printf(no_db);
57*23760Skre 		return (-1);
58*23760Skre 	}
59*23760Skre 	if (dbm_rdonly(cur_db))
60*23760Skre 		return (-1);
61*23760Skre 	return (dbm_delete(cur_db, key));
62*23760Skre }
63*23760Skre 
64*23760Skre store(key, dat)
65*23760Skre datum key, dat;
66*23760Skre {
67*23760Skre 	if (cur_db == NODB) {
68*23760Skre 		printf(no_db);
69*23760Skre 		return (-1);
70*23760Skre 	}
71*23760Skre 	if (dbm_rdonly(cur_db))
72*23760Skre 		return (-1);
73*23760Skre 
74*23760Skre 	return (dbm_store(cur_db, key, dat, DBM_REPLACE));
75*23760Skre }
76*23760Skre 
77*23760Skre datum
78*23760Skre firstkey()
79*23760Skre {
80*23760Skre 	datum item;
81*23760Skre 
82*23760Skre 	if (cur_db == NODB) {
83*23760Skre 		printf(no_db);
84*23760Skre 		item.dptr = 0;
85*23760Skre 		return (item);
86*23760Skre 	}
87*23760Skre 	return (dbm_firstkey(cur_db));
88*23760Skre }
89*23760Skre 
90*23760Skre datum
91*23760Skre nextkey(key)
92*23760Skre datum key;
93*23760Skre {
94*23760Skre 	datum item;
95*23760Skre 
96*23760Skre 	if (cur_db == NODB) {
97*23760Skre 		printf(no_db);
98*23760Skre 		item.dptr = 0;
99*23760Skre 		return (item);
100*23760Skre 	}
101*23760Skre 	return (dbm_nextkey(cur_db, key));
102*23760Skre }
103