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