static int scan_stepSize = 0;
static char scan_position[64];
static int scan_size = 20;
-static char cur_host[200];
+static WRBUF cur_host = 0;
static Odr_int last_hit_count = 0;
static int pretty_xml = 0;
static Odr_int sru_maximumRecords = 0;
return 0;
}
-static int session_connect(const char *arg)
+static int session_connect(void)
{
int r;
const char *basep = 0;
yaz_cookies_destroy(yaz_cookies);
yaz_cookies = yaz_cookies_create();
- r = session_connect_base(arg, &basep);
+ r = session_connect_base(wrbuf_cstr(cur_host), &basep);
if (basep && *basep)
set_base(basep);
else if (protocol == PROTO_Z3950)
int r;
if (arg)
{
- strncpy(cur_host, arg, sizeof(cur_host)-1);
- cur_host[sizeof(cur_host)-1] = 0;
+ wrbuf_rewind(cur_host);
+ if (!strstr(arg, "://") && strcmp(sru_method, "soap"))
+ wrbuf_puts(cur_host, "http://");
+ wrbuf_puts(cur_host, arg);
}
set_base("");
- r = session_connect(cur_host);
+ r = session_connect();
if (conn && conn->protocol == PROTO_HTTP)
queryType = QueryType_CQL;
-
return r;
}
static int send_srw(Z_SRW_PDU *sr)
{
char *path = yaz_encode_sru_dbpath_odr(out, databaseNames[0]);
- return send_srw_host_path(sr, cur_host, path);
+ return send_srw_host_path(sr, wrbuf_cstr(cur_host), path);
}
static int send_SRW_redirect(const char *uri)
char *rec_buf, int rec_len)
{
if (!conn)
- session_connect(cur_host);
+ session_connect();
if (!conn)
return 0;
else
return 0;
#if YAZ_HAVE_XML2
if (!conn)
- session_connect(cur_host);
+ session_connect();
if (conn)
{
Z_SRW_PDU *sr = 0;
{
if (*arg)
{
- strncpy(cur_host, arg, sizeof(cur_host)-1);
- cur_host[sizeof(cur_host)-1] = 0;
+ wrbuf_rewind(cur_host);
+ if (!strstr(arg, "://") && strcmp(sru_method, "soap"))
+ wrbuf_puts(cur_host, "http://");
+ wrbuf_puts(cur_host, arg);
}
if (only_z3950())
return 1;
- send_Z3950_initRequest(cur_host);
+ send_Z3950_initRequest(wrbuf_cstr(cur_host));
return 2;
}
{
#if YAZ_HAVE_XML2
if (!conn)
- session_connect(cur_host);
+ session_connect();
if (!conn)
return 0;
if (!send_SRW_searchRequest(arg))
}
else
{
- if (*cur_host && auto_reconnect)
+ if (wrbuf_len(cur_host) && auto_reconnect)
{
int i = 0;
for (;;)
printf("Unable to reconnect\n");
break;
}
- session_connect(cur_host);
+ session_connect();
wait_and_handle_response(0);
}
return 0;
{
#if YAZ_HAVE_XML2
if (!conn)
- session_connect(cur_host);
+ session_connect();
if (!conn)
return 0;
if (!send_SRW_presentRequest(arg))
static void exit_client(int code)
{
+ odr_destroy(in);
+ odr_destroy(out);
+ odr_destroy(print);
+ ccl_qual_rm(&bibset);
yaz_cookies_destroy(yaz_cookies);
file_history_save(file_history);
file_history_destroy(&file_history);
nmem_destroy(nmem_auth);
+ wrbuf_destroy(cur_host);
exit(code);
}
{
#if YAZ_HAVE_XML2
if (!conn)
- session_connect(cur_host);
+ session_connect();
if (!conn)
return 0;
if (send_SRW_scanRequest(scan_query, pos_p, scan_size) < 0)
}
else
{
- if (*cur_host && !conn && auto_reconnect)
+ if (wrbuf_len(cur_host) && !conn && auto_reconnect)
{
- session_connect(cur_host);
+ session_connect();
wait_and_handle_response(0);
}
if (!conn)
FILE *inf;
int i;
+ cur_host = wrbuf_alloc();
+
if (!(out = odr_createmem(ODR_ENCODE)) ||
!(in = odr_createmem(ODR_DECODE)) ||
!(print = odr_createmem(ODR_PRINT)))
{
cs_close(conn);
conn = 0;
- session_connect(cur_host);
+ session_connect();
reconnect_ok = 0;
if (conn)
{
{
const char *base_tmp;
int host_change = 0;
- location = yaz_check_location(in, cur_host,
+ location = yaz_check_location(in, wrbuf_cstr(cur_host),
location, &host_change);
if (host_change)
session_connect_base(location, &base_tmp);
/* connection options */
if (conn)
- printf("Connected to : %s\n", cur_host);
- else if (*cur_host)
- printf("Not connected to : %s\n", cur_host);
+ printf("Connected to : %s\n", wrbuf_cstr(cur_host));
+ else if (cur_host && wrbuf_len(cur_host))
+ printf("Not connected to : %s\n", wrbuf_cstr(cur_host));
else
printf("Not connected : \n");
if (yazProxy) printf("using proxy : %s\n",yazProxy);
const char *host, int portnum)
{
const char *val;
+ const char *http_lead;
initlog();
else
c->lang = 0;
+ val = ZOOM_options_get(c->options, "sru");
+ if (val && *val && !strstr(host, "://"))
+ http_lead = "http://";
+ else
+ http_lead = "";
+ c->sru_mode = get_sru_mode_from_string(val);
+
if (host)
{
+ char hostn[128];
xfree(c->host_port);
if (portnum)
{
- char hostn[128];
sprintf(hostn, "%.80s:%d", host, portnum);
- c->host_port = xstrdup(hostn);
+ host = hostn;
}
- else
- c->host_port = xstrdup(host);
+ c->host_port = xmalloc(strlen(host) + strlen(http_lead) + 1);
+ strcpy(c->host_port, http_lead);
+ strcat(c->host_port, host);
}
{
}
}
- val = ZOOM_options_get(c->options, "sru");
- c->sru_mode = get_sru_mode_from_string(val);
-
xfree(c->sru_version);
val = ZOOM_options_get(c->options, "sru_version");
c->sru_version = xstrdup(val ? val : "1.2");