Mods for Windows compilation
[pazpar2-moved-to-github.git] / src / reclists.c
index a6e63ee..3e3100c 100644 (file)
@@ -27,11 +27,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include "pazpar2.h"
 #include "reclists.h"
+#include "jenkins_hash.h"
 
-extern struct parameters global_parameters;
-
-// Not threadsafe
-static struct reclist_sortparms *sortparms = 0;
+static struct reclist_sortparms *qsort_sortparms = 0; /* thread pr */
 
 struct reclist_bucket
 {
@@ -168,7 +166,7 @@ static int reclist_cmp(const void *p1, const void *p2)
     struct reclist_sortparms *s;
     int res = 0;
 
-    for (s = sortparms; s && res == 0; s = s->next)
+    for (s = qsort_sortparms; s && res == 0; s = s->next)
     {
         union data_types *ut1 = r1->sortkeys[s->offset];
         union data_types *ut2 = r2->sortkeys[s->offset];
@@ -214,7 +212,7 @@ static int reclist_cmp(const void *p1, const void *p2)
 
 void reclist_sort(struct reclist *l, struct reclist_sortparms *parms)
 {
-    sortparms = parms;
+    qsort_sortparms = parms;
     qsort(l->flatlist, l->num_records, 
           sizeof(struct record_cluster*), reclist_cmp);
     reclist_rewind(l);
@@ -234,23 +232,6 @@ void reclist_rewind(struct reclist *l)
         l->pointer = 0;
 }
 
-// Jenkins one-at-a-time hash (from wikipedia)
-static unsigned int hash(const unsigned char *key)
-{
-    unsigned int hash = 0;
-
-    while (*key)
-    {
-        hash += *(key++);
-        hash += (hash << 10);
-        hash ^= (hash >> 6);
-    }
-    hash += (hash << 3);
-    hash ^= (hash >> 11);
-    hash += (hash << 15);
-    return hash;
-}
-
 struct reclist *reclist_create(NMEM nmem, int numrecs)
 {
     int hashsize = 1;
@@ -290,7 +271,7 @@ struct record_cluster *reclist_insert( struct reclist *l,
     assert(merge_key);
     assert(total);
 
-    bucket = hash((unsigned char*) merge_key) & l->hashmask;
+    bucket = jenkins_hash((unsigned char*) merge_key) & l->hashmask;
 
     for (p = &l->hashtable[bucket]; *p; p = &(*p)->next)
     {