123772Sbloom /* 238117Sbostic * Copyright (c) 1985 The Regents of the University of California. 338117Sbostic * All rights reserved. 438117Sbostic * 5*42650Sbostic * %sccs.include.redist.c% 623772Sbloom */ 723772Sbloom 823760Skre #ifndef lint 9*42650Sbostic static char sccsid[] = "@(#)dbm.c 5.5 (Berkeley) 06/01/90"; 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 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 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 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 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 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 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 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 } 10923760Skre return (dbm_nextkey(cur_db, key)); 11023760Skre } 111