* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: client.c,v 1.268 2005-01-15 19:47:08 adam Exp $
+ * $Id: client.c,v 1.273 2005-02-02 17:11:05 adam Exp $
*/
#include <stdio.h>
#include <stdlib.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
-
#if HAVE_LANGINFO_H
#include <langinfo.h>
#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
#if HAVE_OPENSSL_SSL_H
#include <openssl/bio.h>
#include <openssl/err.h>
#endif
-#include <time.h>
-#include <ctype.h>
-
#ifdef WIN32
+#include <sys/stat.h>
#include <io.h>
+#include <windows.h>
#define S_ISREG(x) (x & _S_IFREG)
#define S_ISDIR(x) (x & _S_IFDIR)
-#else
-#include <unistd.h>
#endif
#include <yaz/yaz-util.h>
#include <readline/history.h>
#endif
-#include <sys/stat.h>
#include "admin.h"
#include "tabcomplete.h"
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);
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},