X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=client%2Fclient.c;h=9f44998e74778694729ce93c7fb0762edb58ccb3;hb=4602e6f66713b5c44cebd5a8deb2790e2cdea91e;hp=602dde830c226def1e01d04b30aa8b08d89835cd;hpb=d2fc23a41ae7eb6bd5f6e76a45530ede776bd018;p=yaz-moved-to-github.git diff --git a/client/client.c b/client/client.c index 602dde8..9f44998 100644 --- a/client/client.c +++ b/client/client.c @@ -2,7 +2,7 @@ * 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.276 2005-04-20 12:59:51 adam Exp $ */ #include @@ -130,6 +130,7 @@ static Odr_bitmask z3950_options; 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 { @@ -601,7 +602,7 @@ int session_connect(const char *arg) 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); @@ -770,8 +771,6 @@ static void print_record(const unsigned char *buf, size_t len) /* 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) @@ -827,8 +826,12 @@ 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; @@ -946,6 +949,8 @@ static void display_record(Z_External *r) 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) { @@ -960,8 +965,7 @@ static void display_record(Z_External *r) 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) @@ -2081,7 +2085,7 @@ static int cmd_update_common(const char *arg, int version) 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); @@ -2285,9 +2289,14 @@ static int cmd_explain(const char *arg) 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; } @@ -2870,6 +2879,14 @@ int cmd_scanpos(const char *arg) 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) @@ -2881,12 +2898,12 @@ int cmd_scan(const char *arg) 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; @@ -2913,12 +2930,12 @@ int cmd_scan(const char *arg) 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; @@ -4052,6 +4069,7 @@ static struct { {"scan", cmd_scan, "",NULL,0,NULL}, {"scanstep", cmd_scanstep, "",NULL,0,NULL}, {"scanpos", cmd_scanpos, "",NULL,0,NULL}, + {"scansize", cmd_scansize, "",NULL,0,NULL}, {"sort", cmd_sort, " ...",NULL,0,NULL}, {"sort+", cmd_sort_newset, " ...",NULL,0,NULL}, {"authentication", cmd_authentication, "",NULL,0,NULL}, @@ -4429,6 +4447,12 @@ int main(int argc, char **argv) strcpy (open_command, "open "); strcat (open_command, arg); } + else + { + fprintf(stderr, "%s: Specify at most one server address\n", + prog); + exit(1); + } break; case 'd': dump_file_prefix = arg;