X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=reclists.c;h=579e34bde651a78a2e2672e23a042df399c417aa;hb=eca54f46680e3da32c28be81f127be97049b6edb;hp=004efcd8af1cf60165f7ea7e886df05fd1e6d0d3;hpb=d7967e62bb987396444404f5e6ed59bbda5f5131;p=pazpar2-moved-to-github.git diff --git a/reclists.c b/reclists.c index 004efcd..579e34b 100644 --- a/reclists.c +++ b/reclists.c @@ -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 @@ -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; }