]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/cnid/cnid_get.c
Replaced EAGAIN with DB_LOCK_DEADLOCK.
[netatalk.git] / libatalk / cnid / cnid_get.c
index d1f82977b2008d987e01b1fc28837f0b2963134f..56b6e9710661cd9054d6d7f5169eeb6ef622f461 100644 (file)
@@ -1,3 +1,12 @@
+/*
+ * $Id: cnid_get.c,v 1.7 2001-09-22 07:12:10 jmarcus Exp $
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#ifdef CNID_DB
 #include <stdio.h>
 #include <string.h>
 #include <sys/param.h>
@@ -20,6 +29,7 @@ cnid_t cnid_get(void *CNID, const cnid_t did, const char *name,
   CNID_private *db;
   DBT key, data;
   cnid_t id;
+  int rc = 0;
 
   if (!(db = CNID) || (len > MAXPATHLEN))
     return 0;
@@ -35,13 +45,13 @@ cnid_t cnid_get(void *CNID, const cnid_t did, const char *name,
   key.data = start;
   key.size = CNID_DID_LEN + len + 1;
 
-  while (errno = db->db_didname->get(db->db_didname, NULL,
-                                    &key, &data, 0)) {
-    if (errno == EAGAIN
+  while ((rc = db->db_didname->get(db->db_didname, NULL,
+                                     &key, &data, 0))) {
+    if (rc == DB_LOCK_DEADLOCK
       continue;
 
-    if (errno != DB_NOTFOUND)
-      syslog(LOG_ERR, "cnid_get: can't get CNID(%u:%s)", did, name);
+    if (rc != DB_NOTFOUND)
+      syslog(LOG_ERR, "cnid_get: can't get CNID(%u:%s) (%d)", did, name, rc);
 
     return 0;
   }
@@ -49,3 +59,4 @@ cnid_t cnid_get(void *CNID, const cnid_t did, const char *name,
   memcpy(&id, data.data, sizeof(id));
   return id;
 }
+#endif /* CNID_DB */