/*
- * Copyright (C) 1995-1998, Index Data
+ * Copyright (C) 1995-1999, Index Data
* All rights reserved.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: zserver.c,v $
- * Revision 1.64 1998-09-22 10:48:21 adam
+ * Revision 1.74 1999-11-29 15:13:26 adam
+ * Server sets implementationName - and Version.
+ *
+ * Revision 1.73 1999/11/04 15:00:45 adam
+ * Implemented delete result set(s).
+ *
+ * Revision 1.71 1999/07/14 10:59:26 adam
+ * Changed functions isc_getmethod, isams_getmethod.
+ * Improved fatal error handling (such as missing EXPLAIN schema).
+ *
+ * Revision 1.70 1999/06/10 12:14:56 adam
+ * Fixed to use bend_start instead of pre_init.
+ *
+ * Revision 1.69 1999/06/10 09:20:03 adam
+ * Minor change to pre_init handler.
+ *
+ * Revision 1.68 1999/05/26 07:49:13 adam
+ * C++ compilation.
+ *
+ * Revision 1.67 1999/02/02 14:51:14 adam
+ * Updated WIN32 code specific sections. Changed header.
+ *
+ * Revision 1.66 1998/10/28 10:54:41 adam
+ * SDRKit integration.
+ *
+ * Revision 1.65 1998/10/18 07:54:54 adam
+ * Additional info added for diagnostics 114 (Unsupported use attribute) and
+ * 121 (Unsupported attribute set).
+ *
+ * Revision 1.64 1998/09/22 10:48:21 adam
* Minor changes in search API.
*
* Revision 1.63 1998/09/02 13:53:21 adam
#include <stdio.h>
#include <assert.h>
#include <fcntl.h>
-#ifdef WINDOWS
+#ifdef WIN32
#include <io.h>
#include <process.h>
#else
#endif
#include <data1.h>
-#include <dmalloc.h>
#include "zserver.h"
+#ifndef ZEBRASDR
+#define ZEBRASDR 0
+#endif
+#if ZEBRASDR
+#include "zebrasdr.h"
+#endif
+
static int bend_sort (void *handle, bend_sort_rr *rr);
+static int bend_delete (void *handle, bend_delete_rr *rr);
bend_initresult *bend_init (bend_initrequest *q)
{
- bend_initresult *r = odr_malloc (q->stream, sizeof(*r));
+ bend_initresult *r = (bend_initresult *)
+ odr_malloc (q->stream, sizeof(*r));
ZebraHandle zh;
struct statserv_options_block *sob;
char *user = NULL;
r->errcode = 0;
r->errstring = 0;
q->bend_sort = bend_sort;
+ q->bend_delete = bend_delete;
+
+ q->implementation_name = "Z'mbol Information Server";
+ q->implementation_version = "Z'mbol 1.0";
logf (LOG_DEBUG, "bend_init");
bend_searchresult *bend_search (void *handle, bend_searchrequest *q, int *fd)
{
- ZebraHandle zh = handle;
- bend_searchresult *r = odr_malloc (q->stream, sizeof(*r));
+ ZebraHandle zh = (ZebraHandle) handle;
+ bend_searchresult *r = (bend_searchresult *)
+ odr_malloc (q->stream, sizeof(*r));
r->hits = 0;
r->errcode = 0;
r->errstring = zh->errString;
r->hits = zh->hits;
break;
+ case Z_Query_type_2:
+ r->errcode = 107;
+ r->errstring = "type-2";
+ break;
default:
r->errcode = 107;
}
bend_fetchresult *bend_fetch (void *handle, bend_fetchrequest *q, int *num)
{
- ZebraHandle zh = handle;
- bend_fetchresult *r = odr_malloc (q->stream, sizeof(*r));
+ ZebraHandle zh = (ZebraHandle) handle;
+ bend_fetchresult *r = (bend_fetchresult *)
+ odr_malloc (q->stream, sizeof(*r));
ZebraRetrievalRecord retrievalRecord;
retrievalRecord.position = q->number;
bend_scanresult *bend_scan (void *handle, bend_scanrequest *q, int *num)
{
ZebraScanEntry *entries;
- ZebraHandle zh = handle;
- bend_scanresult *r = odr_malloc (q->stream, sizeof(*r));
+ ZebraHandle zh = (ZebraHandle) handle;
+ bend_scanresult *r = (bend_scanresult *)
+ odr_malloc (q->stream, sizeof(*r));
int is_partial, i;
r->term_position = q->term_position;
r->num_entries = q->num_entries;
- r->entries = odr_malloc (q->stream, sizeof(*r->entries) * q->num_entries);
+ r->entries = (struct scan_entry *)
+ odr_malloc (q->stream, sizeof(*r->entries) * q->num_entries);
zebra_scan (zh, q->stream, q->term,
q->attributeset,
q->num_bases, q->basenames,
int bend_sort (void *handle, bend_sort_rr *rr)
{
- ZebraHandle zh = handle;
+ ZebraHandle zh = (ZebraHandle) handle;
zebra_sort (zh, rr->stream,
rr->num_input_setnames, (const char **) rr->input_setnames,
return 0;
}
-#ifndef WINDOWS
-static void pre_init (struct statserv_options_block *sob)
+int bend_delete (void *handle, bend_delete_rr *rr)
{
- char *pidfile = "zebrasrv.pid";
- int fd = creat (pidfile, 0666);
-
- if (fd == -1)
- logf (LOG_WARN|LOG_ERRNO, "creat %s", pidfile);
- else
+ ZebraHandle zh = (ZebraHandle) handle;
+
+ rr->delete_status = zebra_deleleResultSet(zh, rr->function,
+ rr->num_setnames, rr->setnames,
+ rr->statuses);
+ return 0;
+}
+
+#ifndef WIN32
+static void bend_start (struct statserv_options_block *sob)
+{
+ if (!sob->inetd)
{
- char pidstr[30];
+ char *pidfile = "zebrasrv.pid";
+ int fd = creat (pidfile, 0666);
+ if (fd == -1)
+ logf (LOG_WARN|LOG_ERRNO, "creat %s", pidfile);
+ else
+ {
+ char pidstr[30];
- sprintf (pidstr, "%ld", (long) getpid ());
- write (fd, pidstr, strlen(pidstr));
- close (fd);
+ sprintf (pidstr, "%ld", (long) getpid ());
+ write (fd, pidstr, strlen(pidstr));
+ close (fd);
+ }
}
}
#endif
sob = statserv_getcontrol ();
strcpy (sob->configname, FNAME_CONFIG);
-#ifndef WINDOWS
- sob->pre_init = pre_init;
+#ifndef WIN32
+ sob->bend_start = bend_start;
#endif
statserv_setcontrol (sob);
+#if ZEBRASDR
+ zebraSdr_std ();
+#endif
return statserv_main (argc, argv);
}