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