X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=client%2Fclient.c;h=5782e89597c3f606fce35c5a51fcfeec3d1007b1;hb=96714f89e8a4577ce57683d80c2c3147541e3efa;hp=89e803980096d286e8fa28b9b81e42f7ac7ba616;hpb=cfef2a68b0e7da6c2a3b47e44df9965d63156584;p=yaz-moved-to-github.git diff --git a/client/client.c b/client/client.c index 89e8039..5782e89 100644 --- a/client/client.c +++ b/client/client.c @@ -3,7 +3,33 @@ * See the file LICENSE for details. * * $Log: client.c,v $ - * Revision 1.116 2001-03-21 12:43:36 adam + * 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 + * New configure options: --enable-module. + * + * Revision 1.118 2001/03/27 14:48:06 adam + * Fixed scan for bad CCL. + * + * Revision 1.117 2001/03/25 21:55:12 adam + * Added odr_intdup. Ztest server returns TaskPackage for ItemUpdate. + * + * Revision 1.116 2001/03/21 12:43:36 adam * Implemented cs_create_host. Better error reporting for SSL comstack. * * Revision 1.115 2001/03/13 18:10:58 adam @@ -395,11 +421,11 @@ #include -#ifdef ASN_COMPILED +#if YAZ_MODULE_ill #include #endif -#if CCL2RPN +#if YAZ_MODULE_ccl #include #endif @@ -436,7 +462,7 @@ static Z_InitResponse *session = 0; /* session parameters */ static char last_scan_line[512] = "0"; static char last_scan_query[512] = "0"; static char ccl_fields[512] = "default.bib"; -char* esPackageName = 0; +static char* esPackageName = 0; static char last_cmd[100] = "?"; static FILE *marcdump = 0; @@ -450,7 +476,7 @@ typedef enum { static QueryType queryType = QueryType_Prefix; -#if CCL2RPN +#if YAZ_MODULE_ccl static CCL_bibset bibset; /* CCL bibset handle */ #endif @@ -529,6 +555,8 @@ static void send_initRequest() req->idAuthentication = auth; + req->referenceId = set_refid (out); + send_apdu(apdu); printf("Sent initrequest.\n"); } @@ -631,7 +659,6 @@ int cmd_open(char *arg) { void *add; char type_and_host[101], base[101]; - char *host = 0; CS_TYPE t; if (conn) @@ -1014,7 +1041,7 @@ static int send_searchRequest(char *arg) Z_SearchRequest *req = apdu->u.searchRequest; Z_Query query; int oid[OID_SIZE]; -#if CCL2RPN +#if YAZ_MODULE_ccl struct ccl_rpn_node *rpn = NULL; int error, pos; #endif @@ -1022,7 +1049,7 @@ static int send_searchRequest(char *arg) Z_RPNQuery *RPNquery; Odr_oct ccl_query; -#if CCL2RPN +#if YAZ_MODULE_ccl if (queryType == QueryType_CCL2RPN) { rpn = ccl_find_str(bibset, arg, &error, &pos); @@ -1090,7 +1117,7 @@ static int send_searchRequest(char *arg) ccl_query.buf = (unsigned char*) arg; ccl_query.len = strlen(arg); break; -#if CCL2RPN +#if YAZ_MODULE_ccl case QueryType_CCL2RPN: query.which = Z_Query_type_1; RPNquery = ccl_rpn_query(out, rpn); @@ -1309,7 +1336,7 @@ void process_ESResponse(Z_ExtendedServicesResponse *res) } } -#ifdef ASN_COMPILED +#if YAZ_MODULE_ill const char *get_ill_element (void *clientData, const char *element) { @@ -1373,14 +1400,9 @@ static Z_External *create_external_itemRequest() } return r; } -#else -static Z_External *create_external_itemRequest() -{ - return 0; -} #endif -#ifdef ASN_COMPILED +#ifdef YAZ_MODULE_ill static Z_External *create_external_ILL_APDU(int which) { struct ill_get_ctl ctl; @@ -1436,11 +1458,6 @@ static Z_External *create_external_ILL_APDU(int which) } return r; } -#else -static Z_External *create_external_ILLRequest() -{ - return 0; -} #endif @@ -1491,7 +1508,7 @@ static Z_External *create_ItemOrderExternal(const char *type, int itemno) (int *) odr_malloc(out, sizeof(int)); *r->u.itemOrder->u.esRequest->notToKeep->resultSetItem->item = itemno; -#ifdef ASN_COMPILED +#if YAZ_MODULE_ill if (!strcmp (type, "item") || !strcmp(type, "2")) { printf ("using item-request\n"); @@ -1504,6 +1521,17 @@ static Z_External *create_ItemOrderExternal(const char *type, int itemno) r->u.itemOrder->u.esRequest->notToKeep->itemRequest = create_external_ILL_APDU(ILL_APDU_ILL_Request); } + else if (!strcmp(type, "xml") || !strcmp(type, "3")) + { + const char *xml_buf = + "\n" + " request\n" + " 000200\n" + " 1212 \n" + ""; + r->u.itemOrder->u.esRequest->notToKeep->itemRequest = + z_ext_record (out, VAL_TEXT_XML, xml_buf, strlen(xml_buf)); + } else r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0; @@ -1551,6 +1579,8 @@ static int cmd_update(char *arg) 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)); @@ -1866,9 +1896,9 @@ int send_scanrequest(const char *query, int pp, int num, const char *term) Z_APDU *apdu = zget_APDU(out, Z_APDU_scanRequest); Z_ScanRequest *req = apdu->u.scanRequest; int use_rpn = 1; +#if YAZ_MODULE_ccl int oid[OID_SIZE]; -#if CCL2RPN if (queryType == QueryType_CCL2RPN) { oident bib1; @@ -1879,7 +1909,7 @@ int send_scanrequest(const char *query, int pp, int num, const char *term) if (error) { printf("CCL ERROR: %s\n", ccl_err_msg(error)); - return 0; + return -1; } use_rpn = 0; bib1.proto = PROTO_Z3950; @@ -1889,7 +1919,7 @@ int send_scanrequest(const char *query, int pp, int num, const char *term) if (!(req->termListAndStartPoint = ccl_scan_query (out, rpn))) { printf("Couldn't convert CCL to Scan term\n"); - return 0; + return -1; } ccl_rpn_delete (rpn); } @@ -2290,7 +2320,7 @@ int cmd_querytype (char *arg) queryType = QueryType_CCL; else if (!strcmp (arg, "prefix") || !strcmp(arg, "rpn")) queryType = QueryType_Prefix; -#if CCL2RPN +#if YAZ_MODULE_ccl else if (!strcmp (arg, "ccl2rpn") || !strcmp (arg, "cclrpn")) queryType = QueryType_CCL2RPN; #endif @@ -2299,7 +2329,7 @@ int cmd_querytype (char *arg) printf ("Querytype must be one of:\n"); printf (" prefix - Prefix query\n"); printf (" ccl - CCL query\n"); -#if CCL2RPN +#if YAZ_MODULE_ccl printf (" ccl2rpn - CCL query converted to RPN\n"); #endif return 0; @@ -2348,7 +2378,7 @@ int cmd_packagename(char* arg) { static void initialize(void) { -#if CCL2RPN +#if YAZ_MODULE_ccl FILE *inf; #endif nmem_init(); @@ -2363,7 +2393,7 @@ static void initialize(void) if (apdu_file) odr_setprint(print, apdu_file); -#if CCL2RPN +#if YAZ_MODULE_ccl bibset = ccl_qual_mk (); inf = fopen (ccl_fields, "r"); if (inf) @@ -2623,8 +2653,17 @@ int main(int argc, char **argv) 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':