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