* See the file LICENSE for details.
*
* $Log: client.c,v $
- * Revision 1.120 2001-04-06 12:26:46 adam
+ * Revision 1.126 2001-08-06 20:22:23 adam
+ * Client doesn't set VAL_PROXY otherinfo unless -p is specified.
+ *
+ * Revision 1.125 2001/07/19 19:51:41 adam
+ * Added typecasts to make C++ happy.
+ *
+ * Revision 1.124 2001/07/04 20:13:51 ja7
+ * Added new commend "proxy" for ysing a yaz-proxy to connect to the target
+ * Added new command line option -p for setting the proxy host
+ *
+ * Revision 1.123 2001/06/11 12:54:47 heikki
+ * Displayng diags in EsResponse, even if they should not be there...
+ *
+ * Revision 1.122 2001/05/16 07:27:29 adam
+ * Reference id set for InitRequest.
+ *
+ * Revision 1.121 2001/04/22 12:26:17 ja7
+ * if Compiled with Command line history a open command is pushed into
+ * the command history if yaz-client is startet with a server on the
+ * command line. eg
+ * yaz-clinet tcp:server:port/database
+ * hash the commend
+ * open tcp:server:port/database
+ * in the command history on startup
+ *
+ * Added the refid set with setrefid to the update APDU
+ *
+ * Revision 1.120 2001/04/06 12:26:46 adam
* Optional CCL module. Moved atoi_n to marcdisp.h from yaz-util.h.
*
* Revision 1.119 2001/04/05 13:08:48 adam
#include <yaz/proto.h>
#include <yaz/marcdisp.h>
#include <yaz/diagbib1.h>
+#include <yaz/otherinfo.h>
#include <yaz/pquery.h>
static char last_scan_query[512] = "0";
static char ccl_fields[512] = "default.bib";
static char* esPackageName = 0;
+static char* yazProxy = 0;
-static char last_cmd[100] = "?";
+static char last_cmd[32] = "?";
static FILE *marcdump = 0;
static char *refid = NULL;
/* INIT SERVICE ------------------------------- */
-static void send_initRequest()
+static void send_initRequest(const char* type_and_host)
{
Z_APDU *apdu = zget_APDU(out, Z_APDU_initRequest);
Z_InitRequest *req = apdu->u.initRequest;
req->idAuthentication = auth;
+ req->referenceId = set_refid (out);
+
+ if (yazProxy)
+ yaz_oi_set_string_oidval(&req->otherInfo, out, VAL_PROXY,
+ 1, type_and_host);
+
send_apdu(apdu);
printf("Sent initrequest.\n");
}
if (sscanf (arg, "%100[^/]/%100s", type_and_host, base) < 1)
return 0;
- conn = cs_create_host(type_and_host, 1, &add);
+ if(yazProxy)
+ {
+ conn = cs_create_host(yazProxy, 1, &add);
+ }
+ else
+ {
+ conn = cs_create_host(type_and_host, 1, &add);
+ }
+
if (!conn)
{
printf ("Couldn't create comstack\n");
return 0;
}
printf("Ok.\n");
- send_initRequest();
+
+ send_initRequest(type_and_host);
if (*base)
cmd_base (base);
return 2;
display_diagrecs(res->diagnostics, res->num_diagnostics);
break;
}
+ if ( (*res->operationStatus != Z_ExtendedServicesResponse_failure) &&
+ (res->num_diagnostics != 0) ) {
+ display_diagrecs(res->diagnostics, res->num_diagnostics);
+ }
+
}
#if YAZ_MODULE_ill
oid_ent_to_oid (&update_oid, oid);
req->packageType = odr_oiddup(out,oid);
req->packageName = esPackageName;
+
+ req->referenceId = set_refid (out);
r = req->taskSpecificParameters = (Z_External *)
odr_malloc (out, sizeof(*r));
return 1;
};
+int cmd_proxy(char* arg) {
+ xfree (yazProxy);
+ yazProxy = NULL;
+ if (*arg)
+ {
+ yazProxy = (char *) xmalloc (strlen(arg)+1);
+ strcpy (yazProxy, arg);
+ }
+ return 1;
+};
+
static void initialize(void)
{
#if YAZ_MODULE_ccl
{"itemorder", cmd_itemorder, "ill|item <itemno>"},
{"update", cmd_update, "<item>"},
{"packagename", cmd_packagename, "<packagename>"},
+ {"proxy", cmd_proxy, "('tcp'|'osi')':'[<tsel>'/']<host>[':'<port>]"},
#ifdef ASN_COMPILED
/* Server Admin Functions */
{"adm-reindex", cmd_adm_reindex, "<database-name>"},
#ifdef USE_SELECT
fd_set input;
#endif
- char line[1024], word[1024], arg[1024];
+ char line[1024], word[32], arg[1024];
#ifdef USE_SELECT
FD_ZERO(&input);
gettimeofday (&tv_start, 0);
#endif
- if ((res = sscanf(line, "%s %[^;]", word, arg)) <= 0)
+ if ((res = sscanf(line, "%31s %1023[^;]", word, arg)) <= 0)
{
strcpy(word, last_cmd);
*arg = '\0';
int ret;
int opened = 0;
- while ((ret = options("c:a:m:v:", argv, argc, &arg)) != -2)
+ while ((ret = options("c:a:m:v:p:", argv, argc, &arg)) != -2)
{
switch (ret)
{
if (!opened)
{
initialize ();
- if (cmd_open (arg) == 2)
- opened = 1;
+ if (cmd_open (arg) == 2) {
+#if HAVE_READLINE_HISTORY_H
+ char* tmp=(char*)malloc(strlen(arg)+6);
+ *tmp=0;
+ strcat(tmp,"open ");
+ strcat(tmp,arg);
+ add_history(tmp);
+ free(tmp);
+#endif
+ opened = 1;
+ };
}
break;
case 'm':
else
apdu_file=fopen(arg, "a");
break;
+ case 'p':
+ yazProxy=strdup(arg);
+ break;
case 'v':
yaz_log_init (yaz_log_mask_str(arg), "", NULL);
break;
default:
fprintf (stderr, "Usage: %s [-m <marclog>] [ -a <apdulog>] "
- "[-c cclfields] [<server-addr>]\n",
+ "[-c cclfields] [-p <proxy-addr>] [<server-addr>]\n",
prog);
exit (1);
}