Fix bug with missing initialization of member in init_diagnostics.
[yaz-moved-to-github.git] / ztest / ztest.c
index a021b64..7ea27de 100644 (file)
@@ -1,8 +1,8 @@
 /*
- * Copyright (c) 1995-2002, Index Data.
+ * Copyright (c) 1995-2004, Index Data.
  * See the file LICENSE for details.
  *
- * $Id: ztest.c,v 1.52 2002-03-18 21:33:48 adam Exp $
+ * $Id: ztest.c,v 1.63 2004-03-29 15:09:14 adam Exp $
  */
 
 /*
 #include <stdlib.h>
 #include <ctype.h>
 
+#include <yaz/yaz-util.h>
 #include <yaz/backend.h>
-#include <yaz/log.h>
-
-#if YAZ_MODULE_ill
 #include <yaz/ill.h>
-#endif
 
 Z_GenericRecord *dummy_grs_record (int num, ODR o);
 char *dummy_marc_record (int num, ODR odr);
@@ -37,7 +34,16 @@ int ztest_search (void *handle, bend_search_rr *rr)
         rr->errcode = 23;
         return 0;
     }
-    if (strcmp (rr->basenames[0], "Default"))
+#if NMEM_DEBUG
+    /* if database is stop, stop this process.. For debugging only. */
+    if (!yaz_matchstr (rr->basenames[0], "stop"))
+    {
+       nmem_print_list_l(LOG_LOG);
+        exit(0);
+    }
+#endif
+    /* Throw Database unavailable if other than Default */
+    if (yaz_matchstr (rr->basenames[0], "Default"))
     {
         rr->errcode = 109;
         rr->errstring = rr->basenames[0];
@@ -99,7 +105,6 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
                yaz_log(LOG_LOG, "setId: %s", n->resultSetItem->resultSetId);
                yaz_log(LOG_LOG, "item: %d", *n->resultSetItem->item);
            }
-#if YAZ_MODULE_ill
            if (n->itemRequest)
            {
                Z_External *r = (Z_External*) n->itemRequest;
@@ -177,7 +182,6 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
                             *item_req->protocol_version_num);
                }
            }
-#endif
             if (k)
             {
 
@@ -391,6 +395,10 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
            }
        }
     }
+    else if (rr->esr->taskSpecificParameters->which == Z_External_update0)
+    {
+       yaz_log(LOG_LOG, "Received DB Update (version 0)");
+    }
     else
     {
         yaz_log (LOG_WARN, "Unknown Extended Service(%d)",
@@ -429,7 +437,7 @@ int ztest_present (void *handle, bend_present_rr *rr)
 int ztest_fetch(void *handle, bend_fetch_rr *r)
 {
     char *cp;
-    r->errstring = 0;
+
     r->last_in_set = 0;
     r->basename = "Default";
     r->output_format = r->request_format;  
@@ -601,9 +609,24 @@ int ztest_scan(void *handle, bend_scan_rr *q)
     return 0;
 }
 
+static int ztest_explain(void *handle, bend_explain_rr *rr)
+{
+    if (rr->database && !strcmp(rr->database, "Default"))
+    {
+       rr->explain_buf = "<explain>\n"
+           "\t<serverInfo>\n"
+           "\t\t<host>localhost</host>\n"
+           "\t\t<port>210</port>\n"
+           "\t</serverInfo>\n"
+           "</explain>\n";
+    }
+    return 0;
+}
+
 bend_initresult *bend_init(bend_initrequest *q)
 {
-    bend_initresult *r = (bend_initresult *) odr_malloc (q->stream, sizeof(*r));
+    bend_initresult *r = (bend_initresult *)
+        odr_malloc (q->stream, sizeof(*r));
     int *counter = (int *) xmalloc (sizeof(int));
 
     *counter = 0;
@@ -617,6 +640,8 @@ bend_initresult *bend_init(bend_initrequest *q)
     q->bend_delete = ztest_delete;
     q->bend_fetch = ztest_fetch;
     q->bend_scan = ztest_scan;
+    q->bend_explain = ztest_explain;
+
     return r;
 }