* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: client.c,v 1.270 2005-01-17 13:08:53 adam Exp $
+ * $Id: client.c,v 1.274 2005-02-25 17:03:41 adam Exp $
*/
#include <stdio.h>
#include <assert.h>
#include <time.h>
#include <ctype.h>
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
#if HAVE_LOCALE_H
#include <locale.h>
#endif
#endif
#ifdef WIN32
+#include <sys/stat.h>
#include <io.h>
#include <windows.h>
#define S_ISREG(x) (x & _S_IFREG)
static int z3950_version = 3;
static int scan_stepSize = 0;
static int scan_position = 1;
+static int scan_size = 20;
static char cur_host[200];
typedef enum {
render_initUserInfo(uif->u.userInfo1);
} else {
printf("UserInformationfield:\n");
- if (!z_External(print, (Z_External**)&uif, 0, 0)) {
+ if (!z_External(print, (Z_External**)&uif, 0, 0))
+ {
odr_perror(print, "Printing userinfo\n");
odr_reset(print);
}
if (uif->which == Z_External_octet) {
printf("Guessing visiblestring:\n");
- printf("'%s'\n", uif->u. octet_aligned->buf);
- } else if (uif->which == Z_External_single) {
+ printf("'%.*s'\n", uif->u.octet_aligned->len,
+ uif->u.octet_aligned->buf);
+ }
+ else if (uif->which == Z_External_single)
+ {
Odr_any *sat = uif->u.single_ASN1_type;
oident *oid = oid_getentbyoid(uif->direct_reference);
if (oid->value == VAL_OCLCUI) {
else
{
/* Peek at any private Init-diagnostic APDUs */
- printf("### NAUGHTY: External is '%.*s'\n", sat->len, sat->buf);
+ printf("### NAUGHTY: External is '%.*s'\n",
+ sat->len, sat->buf);
}
}
odr_reset (print);
Z_OtherInformationUnit *unit = ui1->list[i];
printf(" %d: otherInfo unit contains ", i+1);
if (unit->which == Z_OtherInfo_externallyDefinedInfo &&
+ unit->information.externallyDefinedInfo &&
unit->information.externallyDefinedInfo->which ==
Z_External_diag1) {
render_diag(unit->information.externallyDefinedInfo->u.diag1);
- } else {
- printf("unsupported otherInfo unit type %d\n", unit->which);
+ }
+ else if (unit->which != Z_OtherInfo_externallyDefinedInfo)
+ {
+ printf("unsupported otherInfo unit->which = %d\n", unit->which);
+ }
+ else
+ {
+ printf("unsupported otherInfo unit external %d\n",
+ unit->information.externallyDefinedInfo ?
+ unit->information.externallyDefinedInfo->which : -2);
}
}
}
strncpy(type_and_host, arg, sizeof(type_and_host)-1);
type_and_host[sizeof(type_and_host)-1] = '\0';
- cmd_open_remember_last_open_command(arg,type_and_host);
+ cmd_open_remember_last_open_command(arg, type_and_host);
if (yazProxy)
conn = cs_create_host(yazProxy, 1, &add);
/* add newline if not already added ... */
if (i <= 0 || buf[i-1] != '\n')
printf ("\n");
- if (marc_file)
- fwrite (buf, 1, len, marc_file);
}
static void display_record(Z_External *r)
}
}
if (ent && ent->value == VAL_SOIF)
+ {
print_record((const unsigned char *) r->u.octet_aligned->buf,
r->u.octet_aligned->len);
+ if (marc_file)
+ fwrite (r->u.octet_aligned->buf, 1, r->u.octet_aligned->len, marc_file);
+ }
else if (r->which == Z_External_octet)
{
const char *octet_buf = (char*)r->u.octet_aligned->buf;
return;
}
print_record(r->u.sutrs->buf, r->u.sutrs->len);
+ if (marc_file)
+ fwrite (r->u.sutrs->buf, 1, r->u.sutrs->len, marc_file);
}
else if (ent && ent->value == VAL_GRS1)
{
puts (wrbuf_buf(w));
wrbuf_free(w, 1);
}
- else if ( /* OPAC display not complete yet .. */
- ent && ent->value == VAL_OPAC)
+ else if (ent && ent->value == VAL_OPAC)
{
int i;
if (r->u.opac->bibliographicRecord)
static int cmd_init(const char *arg)
{
+ if (*arg)
+ {
+ strncpy (cur_host, arg, sizeof(cur_host)-1);
+ cur_host[sizeof(cur_host)-1] = 0;
+ }
if (!conn || protocol != PROTO_Z3950)
return 0;
- send_initRequest(0);
+ send_initRequest(cur_host);
return 2;
}
return 0;
}
+int cmd_scansize(const char *arg)
+{
+ int r = sscanf(arg, "%d", &scan_size);
+ if (r == 0)
+ scan_size = 20;
+ return 0;
+}
+
int cmd_scan(const char *arg)
{
if (protocol == PROTO_HTTP)
return 0;
if (*arg)
{
- if (send_SRW_scanRequest(arg, scan_position, 20) < 0)
+ if (send_SRW_scanRequest(arg, scan_position, scan_size) < 0)
return 0;
}
else
{
- if (send_SRW_scanRequest(last_scan_line, 1, 20) < 0)
+ if (send_SRW_scanRequest(last_scan_line, 1, scan_size) < 0)
return 0;
}
return 2;
if (*arg)
{
strcpy (last_scan_query, arg);
- if (send_scanrequest(arg, scan_position, 20, 0) < 0)
+ if (send_scanrequest(arg, scan_position, scan_size, 0) < 0)
return 0;
}
else
{
- if (send_scanrequest(last_scan_query, 1, 20, last_scan_line) < 0)
+ if (send_scanrequest(last_scan_query, 1, scan_size, last_scan_line) < 0)
return 0;
}
return 2;
{"scan", cmd_scan, "<term>",NULL,0,NULL},
{"scanstep", cmd_scanstep, "<size>",NULL,0,NULL},
{"scanpos", cmd_scanpos, "<size>",NULL,0,NULL},
+ {"scansize", cmd_scansize, "<size>",NULL,0,NULL},
{"sort", cmd_sort, "<sortkey> <flag> <sortkey> <flag> ...",NULL,0,NULL},
{"sort+", cmd_sort_newset, "<sortkey> <flag> <sortkey> <flag> ...",NULL,0,NULL},
{"authentication", cmd_authentication, "<acctstring>",NULL,0,NULL},