date and time created 87/02/15 16:03:28 by lepreau
[unix-history] / usr / src / old / libndbm / dbm.c
/*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
#ifndef lint
static char sccsid[] = "@(#)dbm.c 5.3 (Berkeley) 85/08/15";
#endif not lint
#include "dbm.h"
#define NODB ((DBM *)0)
static DBM *cur_db = NODB;
static char no_db[] = "dbm: no open database\n";
dbminit(file)
char *file;
{
if (cur_db != NODB)
dbm_close(cur_db);
cur_db = dbm_open(file, 2, 0);
if (cur_db == NODB) {
cur_db = dbm_open(file, 0, 0);
if (cur_db == NODB)
return (-1);
}
return (0);
}
long
forder(key)
datum key;
{
if (cur_db == NODB) {
printf(no_db);
return (0L);
}
return (dbm_forder(cur_db, key));
}
datum
fetch(key)
datum key;
{
datum item;
if (cur_db == NODB) {
printf(no_db);
item.dptr = 0;
return (item);
}
return (dbm_fetch(cur_db, key));
}
delete(key)
datum key;
{
if (cur_db == NODB) {
printf(no_db);
return (-1);
}
if (dbm_rdonly(cur_db))
return (-1);
return (dbm_delete(cur_db, key));
}
store(key, dat)
datum key, dat;
{
if (cur_db == NODB) {
printf(no_db);
return (-1);
}
if (dbm_rdonly(cur_db))
return (-1);
return (dbm_store(cur_db, key, dat, DBM_REPLACE));
}
datum
firstkey()
{
datum item;
if (cur_db == NODB) {
printf(no_db);
item.dptr = 0;
return (item);
}
return (dbm_firstkey(cur_db));
}
datum
nextkey(key)
datum key;
{
datum item;
if (cur_db == NODB) {
printf(no_db);
item.dptr = 0;
return (item);
}
return (dbm_nextkey(cur_db, key));
}