More type casts. Modify CQL tree - bool is C++ reserved name.
[yaz-moved-to-github.git] / zutil / srwtst.c
diff --git a/zutil/srwtst.c b/zutil/srwtst.c
new file mode 100644 (file)
index 0000000..562f2fe
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2002-2003, Index Data.
+ * See the file LICENSE for details.
+ *
+ * $Id: srwtst.c,v 1.1 2003-02-14 18:49:24 adam Exp $
+ */
+
+#include <yaz/srw.h>
+
+#if HAVE_XSLT
+Z_SOAP_Handler h[2] = {
+    {"http://www.loc.gov/zing/srw/v1.0/", 0, (Z_SOAP_fun) yaz_srw_codec},
+    {0, 0, 0}
+};
+
+int main(int argc, char **argv)
+{
+    char buf[163840];
+    char *content_buf = buf;
+    int content_len;
+    int ret;
+    size_t no;
+    Z_SOAP *soap_package = 0;
+    ODR decode, encode;
+    int debug = 0;
+
+    if (argc == 2 && !strcmp(argv[1], "debug"))
+        debug = 1;
+    no = fread(buf, 1, sizeof(buf), stdin);
+    if (no < 1 || no == sizeof(buf))
+    {
+        fprintf(stderr, "Bad file or too big\n");
+        exit (1);
+    }
+    decode = odr_createmem(ODR_DECODE);
+    encode = odr_createmem(ODR_ENCODE);
+    content_len = no;
+    ret = z_soap_codec(decode, &soap_package, 
+                       &content_buf, &content_len, h);
+    if (!soap_package)
+    {
+        fprintf(stderr, "Decoding seriously failed\n");
+        exit(1);
+    }
+    if (debug)
+    {
+        fprintf(stderr, "got NS = %s\n", soap_package->ns);
+        if (soap_package->which == Z_SOAP_generic &&
+            soap_package->u.generic->no == 0)
+        {
+            Z_SRW_searchRetrieve *sr = soap_package->u.generic->p;
+            if (sr->which == Z_SRW_searchRetrieve_request)
+            { 
+                Z_SRW_searchRetrieveRequest *req = sr->u.request;
+            }
+            else if (sr->which == Z_SRW_searchRetrieve_response)
+            {
+                Z_SRW_searchRetrieveResponse *res = sr->u.response;
+                if (res->records && res->num_records)
+                {
+                    int i;
+                    for (i = 0; i<res->num_records; i++)
+                    {
+                        fprintf (stderr, "%d\n", i);
+                        if (res->records[i].recordData_buf)
+                            fwrite(res->records[i].recordData_buf, 1,
+                                   res->records[i].recordData_len, stderr);
+                    }
+                }
+            }
+
+        }
+    }
+    ret = z_soap_codec(encode, &soap_package,
+                       &content_buf, &content_len, h);
+    if (content_buf && content_len)
+        fwrite (content_buf, content_len, 1, stdout);
+    else
+    {
+        fprintf(stderr, "No output!\n");
+        exit(1);
+    }
+    exit(0);
+}
+#else
+int main(int argc, char **argv)
+{
+    fprintf(stderr, "SOAP disabled\n");
+    exit(1);
+}
+#endif