Fix bug with missing initialization of member in init_diagnostics.
[yaz-moved-to-github.git] / ztest / ztest.c
index 7274130..7ea27de 100644 (file)
@@ -1,8 +1,8 @@
 /*
- * Copyright (c) 1995-2003, Index Data.
+ * Copyright (c) 1995-2004, Index Data.
  * See the file LICENSE for details.
  *
- * $Id: ztest.c,v 1.56 2003-02-28 15:59:02 adam Exp $
+ * $Id: ztest.c,v 1.63 2004-03-29 15:09:14 adam Exp $
  */
 
 /*
@@ -34,6 +34,15 @@ int ztest_search (void *handle, bend_search_rr *rr)
         rr->errcode = 23;
         return 0;
     }
+#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;
@@ -386,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)",
@@ -424,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;  
@@ -596,6 +609,20 @@ 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 *)
@@ -613,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;
 }