9 #include <netatalk/endian.h>
10 #include <atalk/adouble.h>
11 #include <atalk/cnid.h>
13 #include "cnid_private.h"
15 /* return CNID for a given did/name */
16 cnid_t cnid_get(void *CNID, const cnid_t did, const char *name,
19 char start[CNID_DID_LEN + MAXPATHLEN + 1], *buf;
24 if (!(db = CNID) || (len > MAXPATHLEN))
27 memset(&key, 0, sizeof(key));
28 memset(&data, 0, sizeof(data));
31 memcpy(buf, &did, sizeof(did));
33 memcpy(buf, name, len);
34 *(buf + len) = '\0'; /* make sure to nul terminate. */
36 key.size = CNID_DID_LEN + len + 1;
38 while (errno = db->db_didname->get(db->db_didname, NULL,
43 if (errno != DB_NOTFOUND)
44 syslog(LOG_ERR, "cnid_get: can't get CNID(%u:%s)", did, name);
49 memcpy(&id, data.data, sizeof(id));