123772Sbloom /*
238117Sbostic * Copyright (c) 1985 The Regents of the University of California.
338117Sbostic * All rights reserved.
438117Sbostic *
542650Sbostic * %sccs.include.redist.c%
623772Sbloom */
723772Sbloom
823760Skre #ifndef lint
9*47255Sbostic static char sccsid[] = "@(#)dbm.c 5.6 (Berkeley) 03/12/91";
1038117Sbostic #endif /* not lint */
1123760Skre
1223760Skre #include "dbm.h"
1323760Skre
1423760Skre #define NODB ((DBM *)0)
1523760Skre
1623760Skre static DBM *cur_db = NODB;
1723760Skre
1823760Skre static char no_db[] = "dbm: no open database\n";
1923760Skre
dbminit(file)2023760Skre dbminit(file)
2123760Skre char *file;
2223760Skre {
2323760Skre if (cur_db != NODB)
2423760Skre dbm_close(cur_db);
2523760Skre
2623760Skre cur_db = dbm_open(file, 2, 0);
2723760Skre if (cur_db == NODB) {
2823760Skre cur_db = dbm_open(file, 0, 0);
2924292Skre if (cur_db == NODB)
3024292Skre return (-1);
3123760Skre }
3223760Skre return (0);
3323760Skre }
3423760Skre
3523760Skre long
forder(key)3623760Skre forder(key)
3723760Skre datum key;
3823760Skre {
3923760Skre if (cur_db == NODB) {
4023760Skre printf(no_db);
4123760Skre return (0L);
4223760Skre }
4323760Skre return (dbm_forder(cur_db, key));
4423760Skre }
4523760Skre
4623760Skre datum
fetch(key)4723760Skre fetch(key)
4823760Skre datum key;
4923760Skre {
5023760Skre datum item;
5123760Skre
5223760Skre if (cur_db == NODB) {
5323760Skre printf(no_db);
5423760Skre item.dptr = 0;
5523760Skre return (item);
5623760Skre }
5723760Skre return (dbm_fetch(cur_db, key));
5823760Skre }
5923760Skre
delete(key)6023760Skre delete(key)
6123760Skre datum key;
6223760Skre {
6323760Skre if (cur_db == NODB) {
6423760Skre printf(no_db);
6523760Skre return (-1);
6623760Skre }
6723760Skre if (dbm_rdonly(cur_db))
6823760Skre return (-1);
6923760Skre return (dbm_delete(cur_db, key));
7023760Skre }
7123760Skre
store(key,dat)7223760Skre store(key, dat)
7323760Skre datum key, dat;
7423760Skre {
7523760Skre if (cur_db == NODB) {
7623760Skre printf(no_db);
7723760Skre return (-1);
7823760Skre }
7923760Skre if (dbm_rdonly(cur_db))
8023760Skre return (-1);
8123760Skre
8223760Skre return (dbm_store(cur_db, key, dat, DBM_REPLACE));
8323760Skre }
8423760Skre
8523760Skre datum
firstkey()8623760Skre firstkey()
8723760Skre {
8823760Skre datum item;
8923760Skre
9023760Skre if (cur_db == NODB) {
9123760Skre printf(no_db);
9223760Skre item.dptr = 0;
9323760Skre return (item);
9423760Skre }
9523760Skre return (dbm_firstkey(cur_db));
9623760Skre }
9723760Skre
9823760Skre datum
nextkey(key)9923760Skre nextkey(key)
10023760Skre datum key;
10123760Skre {
10223760Skre datum item;
10323760Skre
10423760Skre if (cur_db == NODB) {
10523760Skre printf(no_db);
10623760Skre item.dptr = 0;
10723760Skre return (item);
10823760Skre }
109*47255Sbostic return (dbm_nextkey(cur_db));
11023760Skre }
111