Improved installation. Updated for inclusion of YAZ header files.
[idzebra-moved-to-github.git] / index / zserver.c
index 85ff5d9..3b060d5 100644 (file)
@@ -4,7 +4,29 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: zserver.c,v $
- * Revision 1.67  1999-02-02 14:51:14  adam
+ * Revision 1.75  1999-11-30 13:48:04  adam
+ * Improved installation. Updated for inclusion of YAZ header files.
+ *
+ * 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
 #include <unistd.h>
 #endif
 
-#include <data1.h>
-#include <dmalloc.h>
+#include <yaz/data1.h>
 
 #include "zserver.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;
@@ -278,6 +301,10 @@ bend_initresult *bend_init (bend_initrequest *q)
     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");
 
@@ -316,8 +343,9 @@ bend_initresult *bend_init (bend_initrequest *q)
 
 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;
@@ -345,8 +373,9 @@ bend_searchresult *bend_search (void *handle, bend_searchrequest *q, int *fd)
 
 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;
@@ -380,14 +409,16 @@ bend_fetchresult *bend_fetch (void *handle, bend_fetchrequest *q, int *num)
 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,
@@ -414,7 +445,7 @@ void bend_close (void *handle)
 
 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,
@@ -424,21 +455,33 @@ int bend_sort (void *handle, bend_sort_rr *rr)
     return 0;
 }
 
+int bend_delete (void *handle, bend_delete_rr *rr)
+{
+    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 pre_init (struct statserv_options_block *sob)
+static void bend_start (struct statserv_options_block *sob)
 {
-    char *pidfile = "zebrasrv.pid";
-    int fd = creat (pidfile, 0666);
-    
-    if (fd == -1)
-       logf (LOG_WARN|LOG_ERRNO, "creat %s", pidfile);
-    else
+    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
@@ -450,7 +493,7 @@ int main (int argc, char **argv)
     sob = statserv_getcontrol ();
     strcpy (sob->configname, FNAME_CONFIG);
 #ifndef WIN32
-    sob->pre_init = pre_init;
+    sob->bend_start = bend_start;
 #endif
     statserv_setcontrol (sob);