+static void write_subrecord(struct record *r, WRBUF w,
+ struct conf_service *service, int show_details)
+{
+ const char *name = session_setting_oneval(
+ client_get_database(r->client), PZ_NAME);
+
+ wrbuf_puts(w, " <location id=\"");
+ wrbuf_xmlputs(w, client_get_id(r->client));
+ wrbuf_puts(w, "\"\n");
+
+ wrbuf_puts(w, " name=\"");
+ wrbuf_xmlputs(w, *name ? name : "Unknown");
+ wrbuf_puts(w, "\" ");
+
+ wrbuf_puts(w, "checksum=\"");
+ wrbuf_printf(w, "%u", r->checksum);
+ wrbuf_puts(w, "\">\n");
+
+ write_metadata(w, service, r->metadata, show_details, 2);
+ wrbuf_puts(w, " </location>\n");
+}
+
+static void show_raw_record_error(void *data, const char *addinfo)
+{
+ http_channel_observer_t obs = data;
+ struct http_channel *c = http_channel_observer_chan(obs);
+ struct http_response *rs = c->response;
+
+ http_remove_observer(obs);
+
+ error(rs, PAZPAR2_RECORD_FAIL, addinfo);
+}
+
+static void show_raw_record_ok(void *data, const char *buf, size_t sz)
+{
+ http_channel_observer_t obs = data;
+ struct http_channel *c = http_channel_observer_chan(obs);
+ struct http_response *rs = c->response;
+
+ http_remove_observer(obs);
+
+ wrbuf_write(c->wrbuf, buf, sz);
+ rs->payload = nmem_strdup(c->nmem, wrbuf_cstr(c->wrbuf));
+ http_send_response(c);
+}
+
+
+static void show_raw_record_ok_binary(void *data, const char *buf, size_t sz)
+{
+ http_channel_observer_t obs = data;
+ struct http_channel *c = http_channel_observer_chan(obs);
+ struct http_response *rs = c->response;
+
+ http_remove_observer(obs);
+
+ wrbuf_write(c->wrbuf, buf, sz);
+ rs->payload = nmem_strdup(c->nmem, wrbuf_cstr(c->wrbuf));
+
+ rs->content_type = "application/octet-stream";
+ http_send_response(c);
+}
+
+
+void show_raw_reset(void *data, struct http_channel *c, void *data2)
+{
+ //struct client *client = data;
+ //client_show_raw_remove(client, data2);
+}
+
+static void cmd_record_ready(void *data);
+
+static void show_record(struct http_channel *c, struct http_session *s)