1/* 2 * 3 * Copyright (c) 1999. Adrian Sun (asun@zoology.washington.edu) 4 * All Rights Reserved. See COPYRIGHT. 5 * 6 * cnid_delete: delete a CNID from the database 7 */ 8 9#ifdef HAVE_CONFIG_H 10#include "config.h" 11#endif 12 13#ifdef CNID_BACKEND_TDB 14 15#include "cnid_tdb.h" 16 17int cnid_tdb_delete(struct _cnid_db *cdb, const cnid_t id) 18{ 19 struct _cnid_tdb_private *db; 20 TDB_DATA key, data; 21 22 if (!cdb || !(db = cdb->_private) || !id) { 23 return -1; 24 } 25 memset(&key, 0, sizeof(key)); 26 memset(&data, 0, sizeof(data)); 27 28 key.dptr = (unsigned char *)&id; 29 key.dsize = sizeof(cnid_t); 30 data = tdb_fetch(db->tdb_cnid, key); 31 if (!data.dptr) 32 { 33 return 0; 34 } 35 36 tdb_delete(db->tdb_cnid, key); 37 38 key.dptr = data.dptr +CNID_DEVINO_OFS; 39 key.dsize = CNID_DEVINO_LEN; 40 tdb_delete(db->tdb_devino, key); 41 42 key.dptr = data.dptr +CNID_DID_OFS; 43 key.dsize = data.dsize -CNID_DID_OFS; 44 tdb_delete(db->tdb_didname, key); 45 46 free(data.dptr); 47 return 0; 48} 49 50#endif 51