]> arthur.barton.de Git - netatalk.git/commitdiff
Add checking for kMDQueryItemArray to Tracker SPARQL too
authorFrank Lahm <franklahm@googlemail.com>
Fri, 18 Jan 2013 16:30:19 +0000 (17:30 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Fri, 18 Jan 2013 16:30:19 +0000 (17:30 +0100)
etc/spotlight/slmod_sparql.c

index ec2943b2c1b5bd74eceeb302ff647fc0ca6094bb..fd0f984560e7c95403b33001d7b820aeaea4a374 100644 (file)
@@ -182,6 +182,17 @@ EC_CLEANUP:
     EC_EXIT;
 }
 
+static int cnid_cmp_fn(const void *p1, const void *p2)
+{
+    const uint64_t *cnid1 = p1, *cnid2 = p2;
+    if (*cnid1 == *cnid2)
+        return 0;
+    if (*cnid1 < *cnid2)
+        return -1;
+    else
+        return 1;            
+}
+
 static int sl_mod_fetch_result(void *p)
 {
     EC_INIT;
@@ -243,6 +254,11 @@ static int sl_mod_fetch_result(void *p)
         LOG(log_debug, logtype_sl, "Result %d: CNID: %" PRIu32 ", path: \"%s\"", i, ntohl(id), path);
 
         uint64 = ntohl(id);
+        if (slq->slq_cnids) {
+            if (!bsearch(&uint64, slq->slq_cnids, slq->slq_cnids_num, sizeof(uint64_t), cnid_cmp_fn))
+                goto loop_cleanup;
+        }
+
         dalloc_add_copy(cnids->ca_cnids, &uint64, uint64_t);
         add_filemeta(slq->slq_reqinfo, fm_array, id, path);