* Copyright (c) 1995-2004, Index Data
* See the file LICENSE for details.
*
- * $Id: client.c,v 1.226 2004-01-15 10:16:26 adam Exp $
+ * $Id: client.c,v 1.236 2004-03-17 10:59:41 adam Exp $
*/
#include <stdio.h>
static char *outputCharset = 0;
static char *marcCharset = 0;
static char* yazLang = 0;
+static char* http_version = "1.1";
static char last_cmd[32] = "?";
static FILE *marc_file = 0;
req->referenceId = set_refid (out);
- if (yazProxy)
+ if (yazProxy && type_and_host)
yaz_oi_set_string_oidval(&req->otherInfo, out, VAL_PROXY,
1, type_and_host);
yaz_oi_APDU(apdu, &p);
if ((p0=yaz_oi_update(p, out, NULL, 0, 0))) {
- ODR_MASK_SET(req->options, Z_Options_negotiationModel);
-
- p0->which = Z_OtherInfo_externallyDefinedInfo;
- p0->information.externallyDefinedInfo =
- yaz_set_proposal_charneg(
- out,
- (const char**)&negotiationCharset,
- negotiationCharset ? 1 : 0,
- (const char**)&yazLang, yazLang ? 1 : 0, 1);
+ ODR_MASK_SET(req->options, Z_Options_negotiationModel);
+
+ p0->which = Z_OtherInfo_externallyDefinedInfo;
+ p0->information.externallyDefinedInfo =
+ yaz_set_proposal_charneg(
+ out,
+ (const char**)&negotiationCharset,
+ negotiationCharset ? 1 : 0,
+ (const char**)&yazLang, yazLang ? 1 : 0, 1);
}
}
if (ent && r->which == Z_External_octet)
{
Z_ext_typeent *type = z_ext_getentbyref(ent->value);
- void *rr;
+ char *rr;
if (type)
{
*/
odr_setbuf(in, (char*)r->u.octet_aligned->buf,
r->u.octet_aligned->len, 0);
- if (!(*type->fun)(in, (char **)&rr, 0, 0))
+ if (!(*type->fun)(in, &rr, 0, 0))
{
odr_perror(in, "Decoding constructed record.");
fprintf(stdout, "[Near %d]\n", odr_offset(in));
printf ("shelvingLocation: %s\n", data->shelvingLocation);
if (data->callNumber)
printf ("callNumber: %s\n", data->callNumber);
+ if (data->shelvingData)
+ printf ("shelvingData: %s\n", data->shelvingData);
if (data->copyNumber)
printf ("copyNumber: %s\n", data->copyNumber);
if (data->publicNote)
strcpy(path+1, databaseNames[0]);
gdu = z_get_HTTP_Request(out);
+ gdu->u.HTTP_Request->version = http_version;
gdu->u.HTTP_Request->path = odr_strdup(out, path);
if (host_port)
sr = yaz_srw_get(out, Z_SRW_searchRetrieve_request);
sr->u.request->query_type = Z_SRW_query_type_cql;
sr->u.request->query.cql = odr_strdup(out, arg);
+
+ sr->u.request->maximumRecords = odr_intdup(out, 0);
+
if (record_schema)
sr->u.request->recordSchema = record_schema;
+ if (recordsyntax == VAL_TEXT_XML)
+ sr->u.explain_request->recordPacking = "xml";
return send_srw(sr);
}
#endif
/* save this for later .. when fetching individual records */
sr = yaz_srw_get(out, Z_SRW_explain_request);
+ if (recordsyntax == VAL_TEXT_XML)
+ sr->u.explain_request->recordPacking = "xml";
send_srw(sr);
return 2;
}
#endif
return 0;
}
-
+
+static int cmd_init(const char *arg)
+{
+ if (!conn || protocol != PROTO_Z3950)
+ return 0;
+ send_initRequest(0);
+ return 2;
+}
+
static int cmd_find(const char *arg)
{
if (!*arg)
sr->u.request->maximumRecords = odr_intdup(out, nos);
if (record_schema)
sr->u.request->recordSchema = record_schema;
+ if (recordsyntax == VAL_TEXT_XML)
+ sr->u.request->recordPacking = "xml";
return send_srw(sr);
}
#endif
for (i = 0; i<res->num_diagnostics; i++)
{
- printf ("SRW diagnostic %d %s\n",
- *res->diagnostics[i].code,
- yaz_diag_srw_str(*res->diagnostics[i].code));
-
+ if (res->diagnostics[i].uri)
+ printf ("SRW diagnostic %s\n",
+ res->diagnostics[i].uri);
+ else
+ printf ("SRW diagnostic missing or could not be decoded\n");
+ if (res->diagnostics[i].message)
+ printf ("Message: %s\n", res->diagnostics[i].message);
if (res->diagnostics[i].details)
printf ("Details: %s\n", res->diagnostics[i].details);
}
{"options", cmd_options, "", NULL, 0, NULL},
{"zversion", cmd_zversion, "", NULL, 0, NULL},
{"help", cmd_help, "", NULL,0,NULL},
+ {"init", cmd_init, "", NULL,0,NULL},
{0,0,0,0,0,0}
};