2 * $Id: cnid_cdb_get.c,v 1.2 2005-04-28 20:49:59 bfernhomberg Exp $
7 #endif /* HAVE_CONFIG_H */
9 #ifdef CNID_BACKEND_CDB
10 #include "cnid_cdb_private.h"
12 /* Return CNID for a given did/name. */
13 cnid_t cnid_cdb_get(struct _cnid_db *cdb, const cnid_t did, char *name,
16 char start[CNID_DID_LEN + MAXPATHLEN + 1], *buf;
22 if (!cdb || !(db = cdb->_private) || (len > MAXPATHLEN)) {
26 memset(&key, 0, sizeof(key));
27 memset(&data, 0, sizeof(data));
30 memcpy(buf, &did, sizeof(did));
32 memcpy(buf, name, len);
33 *(buf + len) = '\0'; /* Make it a C-string. */
35 key.size = CNID_DID_LEN + len + 1;
37 while ((rc = db->db_didname->get(db->db_didname, NULL, &key, &data, 0))) {
39 if (rc != DB_NOTFOUND) {
40 LOG(log_error, logtype_default, "cnid_get: Unable to get CNID %u, name %s: %s",
41 ntohl(did), name, db_strerror(rc));
47 memcpy(&id, data.data, sizeof(id));
49 LOG(log_info, logtype_default, "cnid_get: Returning CNID for %u, name %s as %u",
50 ntohl(did), name, ntohl(id));
55 #endif /* CNID_BACKEND_CDB */