]> 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 271667a3f557d65cbddb5bf5ffa2dfbd48d1340e..86bc4789792bc7ae60e5645a1d753907847c58bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_resolve.c,v 1.9 2001-11-27 23:38:18 jmarcus Exp $
+ * $Id: cnid_resolve.c,v 1.13 2002-08-30 03:12:52 jmarcus Exp $
  */
 
 #ifdef HAVE_CONFIG_H
@@ -11,7 +11,7 @@
 #include <string.h>
 #include <sys/param.h>
 #include <sys/stat.h>
-#include <syslog.h>
+#include <atalk/logger.h>
 #include <errno.h>
 
 #include <db.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,16 +34,22 @@ 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) {
-            syslog(LOG_ERR, "cnid_resolve: Unable to get did/name: %s",
-                   db_strerror(rc));
+            LOG(log_error, logtype_default, "cnid_resolve: Unable to get did/name: %s",
+                db_strerror(rc));
         }
 
         *id = 0;
@@ -52,8 +58,8 @@ char *cnid_resolve(void *CNID, cnid_t *id) {
 
     memcpy(id, (char *)data.data + CNID_DEVINO_LEN, sizeof(cnid_t));
 #ifdef DEBUG
-    syslog(LOG_INFO, "cnid_resolve: Returning id = %u, did/name = %s",
-           ntohl(*id), (char *)data.data + CNID_HEADER_LEN);
+    LOG(log_info, logtype_default, "cnid_resolve: Returning id = %u, did/name = %s",
+        ntohl(*id), (char *)data.data + CNID_HEADER_LEN);
 #endif
     return (char *)data.data + CNID_HEADER_LEN;
 }