]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/cnid/cnid_resolve.c
Big commit to improve database throughput and fix deadlocks. This also
[netatalk.git] / libatalk / cnid / cnid_resolve.c
index 95574fe38f9e0559c56375917e10db1b55ebd17d..271667a3f557d65cbddb5bf5ffa2dfbd48d1340e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_resolve.c,v 1.8 2001-10-21 08:33:33 jmarcus Exp $
+ * $Id: cnid_resolve.c,v 1.9 2001-11-27 23:38:18 jmarcus Exp $
  */
 
 #ifdef HAVE_CONFIG_H
 
 /* Return the did/name pair corresponding to a CNID. */
 char *cnid_resolve(void *CNID, cnid_t *id) {
-       CNID_private *db;
-       DBT key, data;
-       int rc;
-
-       if (!(db = CNID) || !id || !(*id)) {
-               return NULL;
-       }
-
-       memset(&key, 0, sizeof(key));
-       memset(&data, 0, sizeof(data));
-
-       key.data = id;
-       key.size = sizeof(cnid_t);
-       while ((rc = db->db_cnid->get(db->db_cnid, NULL, &key, &data, 0))) {
-               if (rc == DB_LOCK_DEADLOCK) {
-                       continue;
-               }
-
-               if (rc != DB_NOTFOUND) {
-                       syslog(LOG_ERR, "cnid_resolve: Unable to get did/name: %s",
-                              db_strerror(rc));
-               }
-
-               *id = 0;
-               return NULL;
-       }
-
-       memcpy(id, (char *)data.data + CNID_DEVINO_LEN, sizeof(cnid_t));
+    CNID_private *db;
+    DBT key, data;
+    int rc;
+
+    if (!(db = CNID) || !id || !(*id)) {
+        return NULL;
+    }
+
+    memset(&key, 0, sizeof(key));
+    memset(&data, 0, sizeof(data));
+
+    key.data = id;
+    key.size = sizeof(cnid_t);
+    while ((rc = db->db_cnid->get(db->db_cnid, NULL, &key, &data, 0))) {
+        if (rc == DB_LOCK_DEADLOCK) {
+            continue;
+        }
+
+        if (rc != DB_NOTFOUND) {
+            syslog(LOG_ERR, "cnid_resolve: Unable to get did/name: %s",
+                   db_strerror(rc));
+        }
+
+        *id = 0;
+        return NULL;
+    }
+
+    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);
+    syslog(LOG_INFO, "cnid_resolve: Returning id = %u, did/name = %s",
+           ntohl(*id), (char *)data.data + CNID_HEADER_LEN);
 #endif
-       return (char *)data.data + CNID_HEADER_LEN;
+    return (char *)data.data + CNID_HEADER_LEN;
 }
 #endif /* CNID_DB */