• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/ap/gpl/timemachine/netatalk-2.2.5/libatalk/cnid/tdb/
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