xref: /csrg-svn/old/libndbm/dbm.c (revision 23772)
1*23772Sbloom /*
2*23772Sbloom  * Copyright (c) 1980 Regents of the University of California.
3*23772Sbloom  * All rights reserved.  The Berkeley software License Agreement
4*23772Sbloom  * specifies the terms and conditions for redistribution.
5*23772Sbloom  */
6*23772Sbloom 
723760Skre #ifndef lint
8*23772Sbloom static char sccsid[] = "@(#)dbm.c	5.2 (Berkeley) 85/06/26";
9*23772Sbloom #endif not lint
1023760Skre 
1123760Skre #include	"dbm.h"
1223760Skre 
1323760Skre #define	NODB	((DBM *)0)
1423760Skre 
1523760Skre static DBM *cur_db = NODB;
1623760Skre 
1723760Skre static char no_db[] = "dbm: no open database\n";
1823760Skre 
1923760Skre dbminit(file)
2023760Skre 	char *file;
2123760Skre {
2223760Skre 	if (cur_db != NODB)
2323760Skre 		dbm_close(cur_db);
2423760Skre 
2523760Skre 	cur_db = dbm_open(file, 2, 0);
2623760Skre 	if (cur_db == NODB) {
2723760Skre 		cur_db = dbm_open(file, 0, 0);
2823760Skre 		return (-1);
2923760Skre 	}
3023760Skre 	return (0);
3123760Skre }
3223760Skre 
3323760Skre long
3423760Skre forder(key)
3523760Skre datum key;
3623760Skre {
3723760Skre 	if (cur_db == NODB) {
3823760Skre 		printf(no_db);
3923760Skre 		return (0L);
4023760Skre 	}
4123760Skre 	return (dbm_forder(cur_db, key));
4223760Skre }
4323760Skre 
4423760Skre datum
4523760Skre fetch(key)
4623760Skre datum key;
4723760Skre {
4823760Skre 	datum item;
4923760Skre 
5023760Skre 	if (cur_db == NODB) {
5123760Skre 		printf(no_db);
5223760Skre 		item.dptr = 0;
5323760Skre 		return (item);
5423760Skre 	}
5523760Skre 	return (dbm_fetch(cur_db, key));
5623760Skre }
5723760Skre 
5823760Skre delete(key)
5923760Skre datum key;
6023760Skre {
6123760Skre 	if (cur_db == NODB) {
6223760Skre 		printf(no_db);
6323760Skre 		return (-1);
6423760Skre 	}
6523760Skre 	if (dbm_rdonly(cur_db))
6623760Skre 		return (-1);
6723760Skre 	return (dbm_delete(cur_db, key));
6823760Skre }
6923760Skre 
7023760Skre store(key, dat)
7123760Skre datum key, dat;
7223760Skre {
7323760Skre 	if (cur_db == NODB) {
7423760Skre 		printf(no_db);
7523760Skre 		return (-1);
7623760Skre 	}
7723760Skre 	if (dbm_rdonly(cur_db))
7823760Skre 		return (-1);
7923760Skre 
8023760Skre 	return (dbm_store(cur_db, key, dat, DBM_REPLACE));
8123760Skre }
8223760Skre 
8323760Skre datum
8423760Skre firstkey()
8523760Skre {
8623760Skre 	datum item;
8723760Skre 
8823760Skre 	if (cur_db == NODB) {
8923760Skre 		printf(no_db);
9023760Skre 		item.dptr = 0;
9123760Skre 		return (item);
9223760Skre 	}
9323760Skre 	return (dbm_firstkey(cur_db));
9423760Skre }
9523760Skre 
9623760Skre datum
9723760Skre nextkey(key)
9823760Skre datum key;
9923760Skre {
10023760Skre 	datum item;
10123760Skre 
10223760Skre 	if (cur_db == NODB) {
10323760Skre 		printf(no_db);
10423760Skre 		item.dptr = 0;
10523760Skre 		return (item);
10623760Skre 	}
10723760Skre 	return (dbm_nextkey(cur_db, key));
10823760Skre }
109