]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/cnid/cnid_resolve.c
apply parts of the netbsd build patch by Patrick Welche <prlw1@newn.cam.ac.uk>, mostl...
[netatalk.git] / libatalk / cnid / cnid_resolve.c
index 5a115abaa8bef382a72741b2ea0e806af7358391..86bc4789792bc7ae60e5645a1d753907847c58bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_resolve.c,v 1.11 2002-01-19 21:42:08 jmarcus Exp $
+ * $Id: cnid_resolve.c,v 1.13 2002-08-30 03:12:52 jmarcus Exp $
  */
 
 #ifdef HAVE_CONFIG_H
@@ -22,7 +22,7 @@
 #include "cnid_private.h"
 
 /* Return the did/name pair corresponding to a CNID. */
-char *cnid_resolve(void *CNID, cnid_t *id) {
+char *cnid_resolve(void *CNID, cnid_t *id, void *buffer, u_int32_t len) {
     CNID_private *db;
     DBT key, data;
     int rc;
@@ -34,12 +34,18 @@ char *cnid_resolve(void *CNID, cnid_t *id) {
     memset(&key, 0, sizeof(key));
     memset(&data, 0, sizeof(data));
 
+    data.data = buffer;
+    data.ulen = len;
+    data.flags = DB_DBT_USERMEM;
+
     key.data = id;
     key.size = sizeof(cnid_t);
     while ((rc = db->db_cnid->get(db->db_cnid, NULL, &key, &data, 0))) {
+#ifndef CNID_DB_CDB
         if (rc == DB_LOCK_DEADLOCK) {
             continue;
         }
+#endif /* CNID_DB_CDB */
 
         if (rc != DB_NOTFOUND) {
             LOG(log_error, logtype_default, "cnid_resolve: Unable to get did/name: %s",