• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/netatalk-3.0.5/libatalk/cnid/tdb/
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