static int error_from_dbm (int refnum) { Dbm * db; if (!(db = lookup_dbm(refnum))) return -1; return sdbm_error(db->db); }
static int error_from_dbm (int refnum) { Dbm * db; /* dbm_open() returns -1 on failure, and we save errno */ if (refnum == -1) return last_failed_open_errno; if (!(db = lookup_dbm(refnum))) return -1; return sdbm_error(db->db); }
static int write_to_dbm (int refnum, char *key, char *data, int replace) { Dbm *db; Datum k, d; if (!(db = lookup_dbm(refnum))) return -1; k.dptr = key; k.dsize = strlen(key); d.dptr = data; d.dsize = strlen(data); if (sdbm_store(db->db, k, d, replace? DBM_REPLACE : DBM_INSERT)) return sdbm_error(db->db); return 0; }
static int delete_from_dbm (int refnum, char *key) { Dbm * db; Datum k; int retval; if (!(db = lookup_dbm(refnum))) return -1; k.dptr = key; k.dsize = strlen(key); retval = sdbm_delete(db->db, k); if (retval == 1) return -1; /* Key Not found */ else if (retval == -1) return sdbm_error(db->db); /* Errno error */ else return 0; }