X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=index%2Fzsets.c;h=c6a03c25f63e559a45054115ef7e0bb6176be9b0;hb=eb2b742588ce07fb4516bbca22c93b938b13e433;hp=6394f3da5dac9cc6defcaddff6568f30fd1d575e;hpb=ef696645cc3b7e0f4027008d1dc589c0f0f90c1f;p=idzebra-moved-to-github.git diff --git a/index/zsets.c b/index/zsets.c index 6394f3d..c6a03c2 100644 --- a/index/zsets.c +++ b/index/zsets.c @@ -4,7 +4,13 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: zsets.c,v $ - * Revision 1.23 1999-05-26 07:49:13 adam + * Revision 1.25 2000-03-15 15:00:31 adam + * First work on threaded version. + * + * Revision 1.24 1999/11/04 15:00:45 adam + * Implemented delete result set(s). + * + * Revision 1.23 1999/05/26 07:49:13 adam * C++ compilation. * * Revision 1.22 1999/02/02 14:51:15 adam @@ -218,26 +224,48 @@ ZebraSet resultSetGet (ZebraHandle zh, const char *name) return NULL; } - -void resultSetDestroy (ZebraHandle zh) +void resultSetDestroy (ZebraHandle zh, int num, char **names,int *statuses) { - ZebraSet s, s1; - - for (s = zh->sets; s; s = s1) + ZebraSet *ss = &zh->sets; + int i; + + if (statuses) + for (i = 0; ierrCode = 0; + zh->errString = NULL; + while (*ss) { - s1 = s->next; - - xfree (s->sort_info->all_entries); - xfree (s->sort_info->entries); - xfree (s->sort_info); - - if (s->nmem) - nmem_destroy (s->nmem); - rset_delete (s->rset); - xfree (s->name); - xfree (s); + int i = -1; + ZebraSet s = *ss; + if (num >= 0) + { + for (i = 0; iname, names[i])) + { + if (statuses) + statuses[i] = Z_DeleteStatus_success; + i = -1; + break; + } + } + if (i < 0) + { + *ss = s->next; + + xfree (s->sort_info->all_entries); + xfree (s->sort_info->entries); + xfree (s->sort_info); + + if (s->nmem) + nmem_destroy (s->nmem); + rset_delete (s->rset); + xfree (s->name); + xfree (s); + } + else + ss = &s->next; } - zh->sets = NULL; } ZebraPosSet zebraPosSetCreate (ZebraHandle zh, const char *name, @@ -344,11 +372,11 @@ void resultSetInsertSort (ZebraHandle zh, ZebraSet sset, struct zset_sort_info *sort_info = sset->sort_info; int i, j; - sortIdx_sysno (zh->sortIdx, sysno); + sortIdx_sysno (zh->service->sortIdx, sysno); for (i = 0; isortIdx, criteria[i].attrUse); - sortIdx_read (zh->sortIdx, this_entry.buf[i]); + sortIdx_type (zh->service->sortIdx, criteria[i].attrUse); + sortIdx_read (zh->service->sortIdx, this_entry.buf[i]); } i = sort_info->num_entries; while (--i >= 0) @@ -534,14 +562,15 @@ void resultSetSortSingle (ZebraHandle zh, NMEM nmem, case Z_SortKey_sortAttributes: logf (LOG_DEBUG, "Sort: key %d is of type sortAttributes", i+1); sort_criteria[i].attrUse = - zebra_maps_sort (zh->zebra_maps, sk->u.sortAttributes); + zebra_maps_sort (zh->service->zebra_maps, + sk->u.sortAttributes); logf (LOG_DEBUG, "use value = %d", sort_criteria[i].attrUse); if (sort_criteria[i].attrUse == -1) { zh->errCode = 116; return; } - if (sortIdx_type (zh->sortIdx, sort_criteria[i].attrUse)) + if (sortIdx_type (zh->service->sortIdx, sort_criteria[i].attrUse)) { zh->errCode = 207; return; @@ -632,19 +661,19 @@ void resultSetRank (ZebraHandle zh, ZebraSet zebraSet, RSET rset) ZebraRankClass zebraRankLookup (ZebraHandle zh, const char *name) { - ZebraRankClass p = zh->rank_classes; + ZebraRankClass p = zh->service->rank_classes; while (p && strcmp (p->control->name, name)) p = p->next; if (p && !p->init_flag) { if (p->control->create) - p->class_handle = (*p->control->create)(zh); + p->class_handle = (*p->control->create)(zh->service); p->init_flag = 1; } return p; } -void zebraRankInstall (ZebraHandle zh, struct rank_control *ctrl) +void zebraRankInstall (ZebraService zh, struct rank_control *ctrl) { ZebraRankClass p = (ZebraRankClass) xmalloc (sizeof(*p)); p->control = (struct rank_control *) xmalloc (sizeof(*p->control)); @@ -655,7 +684,7 @@ void zebraRankInstall (ZebraHandle zh, struct rank_control *ctrl) zh->rank_classes = p; } -void zebraRankDestroy (ZebraHandle zh) +void zebraRankDestroy (ZebraService zh) { ZebraRankClass p = zh->rank_classes; while (p)