Remove illegal ccl characters from subject refinements.
[pazpar2-moved-to-github.git] / reclists.c
index 004efcd..579e34b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: reclists.c,v 1.1 2006-11-24 20:29:07 quinn Exp $
+ * $Id: reclists.c,v 1.4 2006-12-08 21:40:58 quinn Exp $
  */
 
 #include <assert.h>
@@ -15,20 +15,6 @@ struct reclist_bucket
     struct reclist_bucket *next;
 };
 
-struct reclist
-{
-    struct reclist_bucket **hashtable;
-    int hashtable_size;
-    int hashmask;
-
-    struct record **flatlist;
-    int flatlist_size;
-    int num_records;
-    int pointer;
-
-    NMEM nmem;
-};
-
 struct record *reclist_read_record(struct reclist *l)
 {
     if (l->pointer < l->num_records)
@@ -81,27 +67,27 @@ struct reclist *reclist_create(NMEM nmem, int numrecs)
     return res;
 }
 
-void reclist_insert(struct reclist *l, struct record  *record)
+struct record *reclist_insert(struct reclist *l, struct record  *record)
 {
     unsigned int bucket;
     struct reclist_bucket **p;
+    struct record *head;
 
-    bucket = hash(record->merge_key) & l->hashmask;
+    bucket = hash((unsigned char*) record->merge_key) & l->hashmask;
     for (p = &l->hashtable[bucket]; *p; p = &(*p)->next)
     {
         // We found a matching record. Merge them
         if (!strcmp(record->merge_key, (*p)->record->merge_key))
         {
             struct record *existing = (*p)->record;
-            yaz_log(YLOG_LOG, "Found a matching record: %s", record->merge_key);
             record->next_cluster = existing->next_cluster;
             existing->next_cluster = record;
+            head = existing;
             break;
         }
     }
     if (!*p) // We made it to the end of the bucket without finding match
     {
-        yaz_log(YLOG_DEBUG, "Added a new record: %s", record->merge_key);
         struct reclist_bucket *new = nmem_malloc(l->nmem,
                 sizeof(struct reclist_bucket));
         new->record = record;
@@ -109,7 +95,9 @@ void reclist_insert(struct reclist *l, struct record  *record)
         new->next = 0;
         *p = new;
         l->flatlist[l->num_records++] = record;
+        head = record;
     }
+    return head;
 }