xref: /csrg-svn/old/libndbm/dbm.c (revision 24292)
123772Sbloom /*
223772Sbloom  * Copyright (c) 1980 Regents of the University of California.
323772Sbloom  * All rights reserved.  The Berkeley software License Agreement
423772Sbloom  * specifies the terms and conditions for redistribution.
523772Sbloom  */
623772Sbloom 
723760Skre #ifndef lint
8*24292Skre static char sccsid[] = "@(#)dbm.c	5.3 (Berkeley) 85/08/15";
923772Sbloom #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);
28*24292Skre 		if (cur_db == NODB)
29*24292Skre 			return (-1);
3023760Skre 	}
3123760Skre 	return (0);
3223760Skre }
3323760Skre 
3423760Skre long
3523760Skre forder(key)
3623760Skre datum key;
3723760Skre {
3823760Skre 	if (cur_db == NODB) {
3923760Skre 		printf(no_db);
4023760Skre 		return (0L);
4123760Skre 	}
4223760Skre 	return (dbm_forder(cur_db, key));
4323760Skre }
4423760Skre 
4523760Skre datum
4623760Skre fetch(key)
4723760Skre datum key;
4823760Skre {
4923760Skre 	datum item;
5023760Skre 
5123760Skre 	if (cur_db == NODB) {
5223760Skre 		printf(no_db);
5323760Skre 		item.dptr = 0;
5423760Skre 		return (item);
5523760Skre 	}
5623760Skre 	return (dbm_fetch(cur_db, key));
5723760Skre }
5823760Skre 
5923760Skre delete(key)
6023760Skre datum key;
6123760Skre {
6223760Skre 	if (cur_db == NODB) {
6323760Skre 		printf(no_db);
6423760Skre 		return (-1);
6523760Skre 	}
6623760Skre 	if (dbm_rdonly(cur_db))
6723760Skre 		return (-1);
6823760Skre 	return (dbm_delete(cur_db, key));
6923760Skre }
7023760Skre 
7123760Skre store(key, dat)
7223760Skre datum key, dat;
7323760Skre {
7423760Skre 	if (cur_db == NODB) {
7523760Skre 		printf(no_db);
7623760Skre 		return (-1);
7723760Skre 	}
7823760Skre 	if (dbm_rdonly(cur_db))
7923760Skre 		return (-1);
8023760Skre 
8123760Skre 	return (dbm_store(cur_db, key, dat, DBM_REPLACE));
8223760Skre }
8323760Skre 
8423760Skre datum
8523760Skre firstkey()
8623760Skre {
8723760Skre 	datum item;
8823760Skre 
8923760Skre 	if (cur_db == NODB) {
9023760Skre 		printf(no_db);
9123760Skre 		item.dptr = 0;
9223760Skre 		return (item);
9323760Skre 	}
9423760Skre 	return (dbm_firstkey(cur_db));
9523760Skre }
9623760Skre 
9723760Skre datum
9823760Skre nextkey(key)
9923760Skre datum key;
10023760Skre {
10123760Skre 	datum item;
10223760Skre 
10323760Skre 	if (cur_db == NODB) {
10423760Skre 		printf(no_db);
10523760Skre 		item.dptr = 0;
10623760Skre 		return (item);
10723760Skre 	}
10823760Skre 	return (dbm_nextkey(cur_db, key));
10923760Skre }
110