* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: client.c,v 1.272 2005-01-27 09:05:09 adam Exp $
+ * $Id: client.c,v 1.275 2005-03-06 12:54:32 adam Exp $
*/
#include <stdio.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 {
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)
FILE *inf;
struct stat status;
stat (fname, &status);
- if (S_ISREG(status.st_mode) && (inf = fopen(fname, "r")))
+ if (S_ISREG(status.st_mode) && (inf = fopen(fname, "rb")))
{
size_t len = status.st_size;
char *buf = (char *) xmalloc (len);
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},