* Copyright (C) 1995-2007, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: client.c,v 1.332 2007-04-12 13:52:57 adam Exp $
+ * $Id: client.c,v 1.336 2007-05-03 08:04:10 adam Exp $
*/
/** \file client.c
* \brief yaz-client program
if (yazProxy && type_and_host)
{
- const int *oid_proxy = yaz_string_to_oid(yaz_oid_std(),
- CLASS_USERINFO, OID_STR_PROXY);
- yaz_oi_set_string_oid(&req->otherInfo, out, oid_proxy,
+ yaz_oi_set_string_oid(&req->otherInfo, out, yaz_oid_userinfo_proxy,
1, type_and_host);
}
yaz_oi_APDU(apdu, &p);
- if ((p0=yaz_oi_update(p, out, NULL, 0, 0))) {
+ if ((p0=yaz_oi_update(p, out, NULL, 0, 0)))
+ {
ODR_MASK_SET(req->options, Z_Options_negotiationModel);
p0->which = Z_OtherInfo_externallyDefinedInfo;
negotiationCharsetRecords);
}
}
-
if (send_apdu(apdu))
printf("Sent initrequest.\n");
}
Z_CharSetandLanguageNegotiation *p =
yaz_get_charneg_record(res->otherInfo);
-
+
if (p) {
char *charset=NULL, *lang=NULL;
yaz_get_response_charneg(session_mem, p, &charset, &lang,
&selected);
+ printf("Accepted character set : %s\n", charset);
+ printf("Accepted code language : %s\n", lang ? lang : "none");
+ printf("Accepted records in ...: %d\n", selected );
+
if (outputCharset && negotiationCharset) {
- odr_set_charset (out, charset, outputCharset);
- odr_set_charset (in, outputCharset, charset);
+ printf("Converting between %s and %s\n",
+ outputCharset, negotiationCharset);
+ odr_set_charset (out, charset, outputCharset);
+ odr_set_charset (in, outputCharset, charset);
}
else {
- odr_set_charset (out, 0, 0);
- odr_set_charset (in, 0, 0);
+ odr_set_charset (out, 0, 0);
+ odr_set_charset (in, 0, 0);
}
-
- printf("Accepted character set : %s\n", charset);
- printf("Accepted code language : %s\n", lang ? lang : "none");
- printf("Accepted records in ...: %d\n", selected );
}
}
fflush (stdout);
static void display_record(Z_External *r)
{
- char oid_name_buf[OID_STR_MAX];
- int oclass;
const int *oid = r->direct_reference;
- const char *oid_name = 0;
record_last = r;
/*
*/
if (oid)
{
- oid_name = yaz_oid_to_string_buf(oid, &oclass, oid_name_buf);
+ int oclass;
+ char oid_name_buf[OID_STR_MAX];
+ const char *oid_name
+ = yaz_oid_to_string_buf(oid, &oclass, oid_name_buf);
printf("Record type: ");
if (oid_name)
printf("%s\n", oid_name);
}
}
}
- if (oid_name && !yaz_matchstr(oid_name, OID_STR_SOIF))
+ if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_soif))
{
print_record((const unsigned char *) r->u.octet_aligned->buf,
r->u.octet_aligned->len);
else if (oid && r->which == Z_External_octet)
{
const char *octet_buf = (char*)r->u.octet_aligned->buf;
- if (oid_name && (!yaz_matchstr(oid_name, OID_STR_XML)
- || !yaz_matchstr(oid_name, OID_STR_APPLICATION_XML)
- || !yaz_matchstr(oid_name, OID_STR_HTML)))
+ if (oid && (!oid_oidcmp(oid, yaz_oid_recsyn_xml)
+ || !oid_oidcmp(oid, yaz_oid_recsyn_xml)
+ || !oid_oidcmp(oid, yaz_oid_recsyn_html)))
{
print_record((const unsigned char *) octet_buf,
r->u.octet_aligned->len);
}
- else if (oid_name && !yaz_matchstr(oid_name, OID_STR_POSTSCRIPT))
+ else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_postscript))
{
int size = r->u.octet_aligned->len;
if (size > 100)
if (marcCharset && !strcmp(marcCharset, "auto"))
{
- if (!yaz_matchstr(oid_name, OID_STR_USMARC))
+ if (!oid_oidcmp(oid, yaz_oid_recsyn_usmarc))
{
if (octet_buf[9] == 'a')
from = "UTF-8";
if (marc_file)
fwrite (octet_buf, 1, r->u.octet_aligned->len, marc_file);
}
- else if (oid_name && !yaz_matchstr(oid_name, OID_STR_SUTRS))
+ else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_sutrs))
{
if (r->which != Z_External_sutrs)
{
if (marc_file)
fwrite (r->u.sutrs->buf, 1, r->u.sutrs->len, marc_file);
}
- else if (oid_name && !yaz_matchstr(oid_name, OID_STR_GRS1))
+ else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_grs_1))
{
WRBUF w;
if (r->which != Z_External_grs1)
puts (wrbuf_cstr(w));
wrbuf_destroy(w);
}
- else if (oid_name && !yaz_matchstr(oid_name, OID_STR_OPAC))
+ else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_opac))
{
int i;
if (r->u.opac->bibliographicRecord)
const char *diag_name = 0;
diag_name = yaz_oid_to_string_buf
(r->diagnosticSetId, &oclass, diag_name_buf);
- if (yaz_matchstr(diag_name, OID_STR_BIB1))
+ if (oid_oidcmp(r->diagnosticSetId, yaz_oid_diagset_bib_1))
printf("Unknown diagset: %s\n", diag_name);
}
printf(" [%d] %s", *r->condition, diagbib1_str(*r->condition));
record_this = record_last;
}
- req->packageType =
- yaz_string_to_oid_odr(yaz_oid_std(),
- CLASS_EXTSERV,
- version == 0 ? "DB. Update (first version)" :
- "DB. Update", out);
+ req->packageType = odr_oiddup(out, (version == 0 ?
+ yaz_oid_extserv_database_update_first_version :
+ yaz_oid_extserv_database_update));
+
req->packageName = esPackageName;
req->referenceId = set_refid (out);
return 1;
}
-#if 0
/*
this command takes 3 arge {name class oid}
*/
{0,(enum oid_class) 0}
};
char oname_str[101], oclass_str[101], oid_str[101];
- char* name;
int i;
- oid_class oidclass = CLASS_GENERAL;
- int val = 0, oid[OID_SIZE];
- struct oident * new_oident=NULL;
-
+ int oidclass = CLASS_GENERAL;
+ int oid[OID_SIZE];
+
if (sscanf (args, "%100[^ ] %100[^ ] %100s",
oname_str,oclass_str, oid_str) < 1) {
printf("Error in register command \n");
return 0;
}
- i = 0;
- name = oid_str;
- val = 0;
-
- while (isdigit (*(unsigned char *) name))
- {
- val = val*10 + (*name - '0');
- name++;
- if (*name == '.')
- {
- if (i < OID_SIZE-1)
- oid[i++] = val;
- val = 0;
- name++;
- }
- }
- oid[i] = val;
- oid[i+1] = -1;
-
- new_oident = oid_addent (oid, PROTO_GENERAL, oidclass, oname_str,
- VAL_DYNAMIC);
- if(strcmp(new_oident->desc,oname_str))
+ oid_dotstring_to_oid(oid_str, oid);
+
+ if (yaz_oid_add(yaz_oid_std(), oidclass, oname_str, oid))
{
- fprintf(stderr,"oid is already named as %s, registration failed\n",
- new_oident->desc);
+ printf("oid %s already exists, registration failed\n",
+ oname_str);
}
return 1;
}
-#endif
int cmd_push_command(const char* arg)
{
{"set_auto_wait", cmd_set_auto_wait," on|off",complete_auto_reconnect,1,NULL},
{"set_otherinfo", cmd_set_otherinfo,"<otherinfoinddex> <oid> <string>",NULL,0,NULL},
{"sleep", cmd_sleep,"<seconds>",NULL,0,NULL},
-#if 0
{"register_oid", cmd_register_oid,"<name> <class> <oid>",NULL,0,NULL},
-#endif
{"push_command", cmd_push_command,"<command>",command_generator,0,NULL},
{"register_tab", cmd_register_tab,"<commandname> <tab>",command_generator,0,NULL},
{"cclparse", cmd_cclparse,"<ccl find command>",NULL,0,NULL},
ODR_MASK_SET(&z3950_options, Z_Options_sort);
ODR_MASK_SET(&z3950_options, Z_Options_extendedServices);
ODR_MASK_SET(&z3950_options, Z_Options_delSet);
+ ODR_MASK_SET(&z3950_options, Z_Options_negotiationModel);
while ((ret = options("k:c:q:a:b:m:v:p:u:t:Vxd:", argv, argc, &arg)) != -2)
{