static void free_sdbm(struct dbmdata *dbmp) { if (dbmp->di_dbm) sdbm_close(dbmp->di_dbm); ruby_xfree(dbmp); }
/* * call-seq: * sdbm.close -> nil * * Closes the database file. * * Raises SDBMError if the database is already closed. */ static VALUE fsdbm_close(VALUE obj) { struct dbmdata *dbmp; GetDBM(obj, dbmp); sdbm_close(dbmp->di_dbm); dbmp->di_dbm = 0; return Qnil; }
static void remove_dbm (Dbm *db) { Dbm *tmp = DtopEntry; if (db == DtopEntry) DtopEntry = db->next; else { while (tmp->next && tmp->next != db) tmp = tmp->next; if (tmp->next) tmp->next = tmp->next->next; } sdbm_close(db->db); new_free((char **)&db); }
int main(int argc, char *argv[]) { DBM *db; datum key, val; int count = 1; if (argc != 2) { printf("%s - dumps mod_dav lock database\n", argv[0]); printf("%s: no database specified (don't include extension)\n", argv[0]); return(-1); } if (CheckFile(argv, ".pag")) return(-1); if (CheckFile(argv, ".dir")) return(-1); db = sdbm_open((char *) argv[1], O_RDONLY | O_BINARY, DAV_FS_MODE_FILE); key = sdbm_firstkey(db); if (key.dsize == 0) { printf("%s: no outstanding locks.\n", argv[0]); } else { while(key.dsize) { printf("[Lock record #%3d]\n", count++); val = sdbm_fetch(db, key); if (display_info(key, val) == -1) return(-1); key = sdbm_nextkey(db); } } sdbm_close(db); exit(0); }