• 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_resolve.c,v 1.4 2009-11-22 14:14:05 franklahm Exp $
3 */
4
5#ifdef HAVE_CONFIG_H
6#include "config.h"
7#endif
8
9#ifdef CNID_BACKEND_TDB
10
11#include "cnid_tdb.h"
12
13/* Return the did/name pair corresponding to a CNID. */
14char *cnid_tdb_resolve(struct _cnid_db *cdb, cnid_t * id, void *buffer, size_t len)
15{
16    struct _cnid_tdb_private *db;
17    TDB_DATA key, data;
18
19    if (!cdb || !(db = cdb->_private) || !id || !(*id)) {
20        return NULL;
21    }
22    key.dptr  = (char *)id;
23    key.dsize = sizeof(cnid_t);
24    data = tdb_fetch(db->tdb_cnid, key);
25    if (data.dptr)
26    {
27        if (data.dsize < len && data.dsize > sizeof(cnid_t)) {
28            memcpy(id, (char *)data.dptr + +CNID_DID_OFS, sizeof(cnid_t));
29            strcpy(buffer, (char *)data.dptr + CNID_NAME_OFS);
30            free(data.dptr);
31            return buffer;
32        }
33        free(data.dptr);
34    }
35    return NULL;
36}
37
38#endif
39