xref: /csrg-svn/old/libndbm/dbm.c (revision 47255)
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