]> arthur.barton.de Git - netatalk.git/blob - libatalk/cnid/tdb/cnid_tdb_delete.c
Fix compiler diagnostics
[netatalk.git] / libatalk / cnid / tdb / cnid_tdb_delete.c
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
18 int 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  = (unsigned 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 = 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