/*
- * Copyright (C) 1994-1998, Index Data
+ * Copyright (C) 1994-1999, Index Data
* All rights reserved.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: zsets.c,v $
- * Revision 1.21 1998-11-16 16:03:46 adam
+ * 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
+ * Updated WIN32 code specific sections. Changed header.
+ *
+ * Revision 1.21 1998/11/16 16:03:46 adam
* Moved loggin utilities to Yaz. Was implemented in file zlogs.c.
*
* Revision 1.20 1998/11/16 10:10:53 adam
*/
#include <stdio.h>
#include <assert.h>
-#ifdef WINDOWS
+#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
else
{
logf (LOG_DEBUG, "adding result set %s", name);
- s = xmalloc (sizeof(*s));
+ s = (ZebraSet) xmalloc (sizeof(*s));
s->next = zh->sets;
zh->sets = s;
- s->name = xmalloc (strlen(name)+1);
+ s->name = (char *) xmalloc (strlen(name)+1);
strcpy (s->name, name);
- s->sort_info = xmalloc (sizeof(*s->sort_info));
+ s->sort_info = (struct zset_sort_info *)
+ xmalloc (sizeof(*s->sort_info));
s->sort_info->max_entries = 1000;
- s->sort_info->entries =
+ s->sort_info->entries = (struct zset_sort_entry **)
xmalloc (sizeof(*s->sort_info->entries) *
s->sort_info->max_entries);
- s->sort_info->all_entries =
+ s->sort_info->all_entries = (struct zset_sort_entry *)
xmalloc (sizeof(*s->sort_info->all_entries) *
s->sort_info->max_entries);
for (i = 0; i < s->sort_info->max_entries; i++)
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; i<num; i++)
+ statuses[i] = Z_DeleteStatus_resultSetDidNotExist;
+ zh->errCode = 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; i<num; i++)
+ if (!strcmp (s->name, 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,
return NULL;
if (!(rset = sset->rset))
return NULL;
- sr = xmalloc (sizeof(*sr) * num);
+ sr = (ZebraPosSet) xmalloc (sizeof(*sr) * num);
for (i = 0; i<num; i++)
{
sr[i].sysno = 0;
void zebraRankInstall (ZebraHandle zh, struct rank_control *ctrl)
{
- ZebraRankClass p = xmalloc (sizeof(*p));
- p->control = xmalloc (sizeof(*p->control));
+ ZebraRankClass p = (ZebraRankClass) xmalloc (sizeof(*p));
+ p->control = (struct rank_control *) xmalloc (sizeof(*p->control));
memcpy (p->control, ctrl, sizeof(*p->control));
p->control->name = xstrdup (ctrl->name);
p->init_flag = 0;