Added LOC-only target file for character set testing
[pazpar2-moved-to-github.git] / src / http_command.c
index 086db07..bc1bee5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: http_command.c,v 1.8 2007-01-06 05:32:23 quinn Exp $
+ * $Id: http_command.c,v 1.12 2007-01-08 19:41:56 quinn Exp $
  */
 
 #include <stdio.h>
 #include <ctype.h>
 #include <sys/time.h>
 
+#if HAVE_CONFIG_H
+#include <cconfig.h>
+#endif
+
 #include <yaz/yaz-util.h>
 
 #include "util.h"
@@ -271,7 +275,7 @@ static void show_records(struct http_channel *c, int active)
     struct http_request *rq = c->request;
     struct http_response *rs = c->response;
     struct http_session *s = locate_session(rq, rs);
-    struct record **rl;
+    struct record_cluster **rl;
     NMEM nmem_show;
     char *start = http_argbyname(rq, "start");
     char *num = http_argbyname(rq, "num");
@@ -308,10 +312,34 @@ static void show_records(struct http_channel *c, int active)
     {
         int ccount;
         struct record *p;
+        struct record_cluster *rec = rl[i];
+        struct conf_service *service = global_parameters.server->service;
+        int imeta;
 
         wrbuf_puts(c->wrbuf, "<hit>\n");
-        wrbuf_printf(c->wrbuf, "<title>%s</title>\n", rl[i]->title);
-        for (ccount = 1, p = rl[i]->next_cluster; p;  p = p->next_cluster, ccount++)
+        for (imeta = 0; imeta < service->num_metadata; imeta++)
+        {
+            struct conf_metadata *cmd = &service->metadata[imeta];
+            struct record_metadata *md;
+            if (!rec->metadata[imeta])
+                continue;
+            if (!cmd->brief)
+                continue;
+            for (md = rec->metadata[imeta]; md; md = md->next)
+            {
+                wrbuf_printf(c->wrbuf, "<md-%s>", cmd->name);
+                switch (cmd->type)
+                {
+                    case Metadata_type_generic:
+                        wrbuf_puts(c->wrbuf, md->data.text);
+                        break;
+                    default:
+                        wrbuf_puts(c->wrbuf, "[Can't represent]");
+                }
+                wrbuf_printf(c->wrbuf, "</md-%s>", cmd->name);
+            }
+        }
+        for (ccount = 0, p = rl[i]->records; p;  p = p->next, ccount++)
             ;
         if (ccount > 1)
             wrbuf_printf(c->wrbuf, "<count>%d</count>\n", ccount);