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