1*23760Skre #ifndef lint 2*23760Skre static char sccsid[] = "@(#) (Berkeley) 85/06/25"; 3*23760Skre #endif 4*23760Skre 5*23760Skre #include "dbm.h" 6*23760Skre 7*23760Skre #define NODB ((DBM *)0) 8*23760Skre 9*23760Skre static DBM *cur_db = NODB; 10*23760Skre 11*23760Skre static char no_db[] = "dbm: no open database\n"; 12*23760Skre 13*23760Skre dbminit(file) 14*23760Skre char *file; 15*23760Skre { 16*23760Skre if (cur_db != NODB) 17*23760Skre dbm_close(cur_db); 18*23760Skre 19*23760Skre cur_db = dbm_open(file, 2, 0); 20*23760Skre if (cur_db == NODB) { 21*23760Skre cur_db = dbm_open(file, 0, 0); 22*23760Skre return (-1); 23*23760Skre } 24*23760Skre return (0); 25*23760Skre } 26*23760Skre 27*23760Skre long 28*23760Skre forder(key) 29*23760Skre datum key; 30*23760Skre { 31*23760Skre if (cur_db == NODB) { 32*23760Skre printf(no_db); 33*23760Skre return (0L); 34*23760Skre } 35*23760Skre return (dbm_forder(cur_db, key)); 36*23760Skre } 37*23760Skre 38*23760Skre datum 39*23760Skre fetch(key) 40*23760Skre datum key; 41*23760Skre { 42*23760Skre datum item; 43*23760Skre 44*23760Skre if (cur_db == NODB) { 45*23760Skre printf(no_db); 46*23760Skre item.dptr = 0; 47*23760Skre return (item); 48*23760Skre } 49*23760Skre return (dbm_fetch(cur_db, key)); 50*23760Skre } 51*23760Skre 52*23760Skre delete(key) 53*23760Skre datum key; 54*23760Skre { 55*23760Skre if (cur_db == NODB) { 56*23760Skre printf(no_db); 57*23760Skre return (-1); 58*23760Skre } 59*23760Skre if (dbm_rdonly(cur_db)) 60*23760Skre return (-1); 61*23760Skre return (dbm_delete(cur_db, key)); 62*23760Skre } 63*23760Skre 64*23760Skre store(key, dat) 65*23760Skre datum key, dat; 66*23760Skre { 67*23760Skre if (cur_db == NODB) { 68*23760Skre printf(no_db); 69*23760Skre return (-1); 70*23760Skre } 71*23760Skre if (dbm_rdonly(cur_db)) 72*23760Skre return (-1); 73*23760Skre 74*23760Skre return (dbm_store(cur_db, key, dat, DBM_REPLACE)); 75*23760Skre } 76*23760Skre 77*23760Skre datum 78*23760Skre firstkey() 79*23760Skre { 80*23760Skre datum item; 81*23760Skre 82*23760Skre if (cur_db == NODB) { 83*23760Skre printf(no_db); 84*23760Skre item.dptr = 0; 85*23760Skre return (item); 86*23760Skre } 87*23760Skre return (dbm_firstkey(cur_db)); 88*23760Skre } 89*23760Skre 90*23760Skre datum 91*23760Skre nextkey(key) 92*23760Skre datum key; 93*23760Skre { 94*23760Skre datum item; 95*23760Skre 96*23760Skre if (cur_db == NODB) { 97*23760Skre printf(no_db); 98*23760Skre item.dptr = 0; 99*23760Skre return (item); 100*23760Skre } 101*23760Skre return (dbm_nextkey(cur_db, key)); 102*23760Skre } 103