From 7974df78bb70587ee593071d8e7fae43c7c6b84d Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 18 Mar 2008 11:18:16 +0100 Subject: [PATCH] Minor changes to parsing of itemorder comamand. The parsing of itemorder command was moved from create_ItemOrderExternal to cmd_itemorder. --- client/client.c | 55 +++++++++++++++++++++++-------------------------------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/client/client.c b/client/client.c index 1c0a752..befc3e7 100644 --- a/client/client.c +++ b/client/client.c @@ -2055,7 +2055,9 @@ static Z_External *create_external_ILL_APDU(int which) } -static Z_External *create_ItemOrderExternal(const char *type, int itemno, const char* document_name) +static Z_External *create_ItemOrderExternal(const char *type, int itemno, + const char *xml_buf, + int xml_len) { Z_External *r = (Z_External *) odr_malloc(out, sizeof(Z_External)); r->direct_reference = odr_oiddup(out, yaz_oid_extserv_item_order); @@ -2106,29 +2108,18 @@ static Z_External *create_ItemOrderExternal(const char *type, int itemno, const } else if (!strcmp(type, "xml") || !strcmp(type, "3")) { - printf("xml found \n"); - - if( !document_name ) - { - printf("no ducoument added \n"); - r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0; - return r; - }; + printf("using XML ILL-request\n"); - char *xml_buf = NULL; - int xml_len = 0; - - printf("reading from -%s-\n", document_name ); - if (parse_cmd_doc(&document_name, out, &xml_buf, &xml_len) == 0 ) + if (!xml_buf) { - printf("Unable to read document\n"); + printf("no docoument added\n"); r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0; - return r; - }; - - r->u.itemOrder->u.esRequest->notToKeep->itemRequest = - z_ext_record_oid(out, yaz_oid_recsyn_xml, xml_buf, xml_len); - + } + else + { + r->u.itemOrder->u.esRequest->notToKeep->itemRequest = + z_ext_record_oid(out, yaz_oid_recsyn_xml, xml_buf, xml_len); + } } else r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0; @@ -2136,7 +2127,8 @@ static Z_External *create_ItemOrderExternal(const char *type, int itemno, const return r; } -static int send_itemorder(const char *type, int itemno, const char* document_name) +static int send_itemorder(const char *type, int itemno, + const char *xml_buf, int xml_len) { Z_APDU *apdu = zget_APDU(out, Z_APDU_extendedServicesRequest); Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest; @@ -2146,8 +2138,8 @@ static int send_itemorder(const char *type, int itemno, const char* document_nam req->packageType = odr_oiddup(out, yaz_oid_extserv_item_order); req->packageName = esPackageName; - req->taskSpecificParameters = create_ItemOrderExternal(type, itemno, document_name); - + req->taskSpecificParameters = create_ItemOrderExternal(type, itemno, + xml_buf, xml_len); send_apdu(apdu); return 0; } @@ -2472,20 +2464,19 @@ static int cmd_itemorder(const char *arg) { char type[12]; int itemno; - const char* filename = arg; + char *xml_buf = 0; + int xml_len = 0; + int no_read = 0; if (only_z3950()) return 1; - if (sscanf (arg, "%10s %d", type, &itemno) != 2) + if (sscanf(arg, "%10s %d%n", type, &itemno, &no_read) < 2) return 0; + arg += no_read; + parse_cmd_doc(&arg, out, &xml_buf, &xml_len); - - filename+=strlen(type) + 1; - while( *filename && *filename !=' ' ) filename++; - - printf("Item order request\n"); fflush(stdout); - send_itemorder(type, itemno, filename); + send_itemorder(type, itemno, xml_buf, xml_len); return 2; } -- 1.7.10.4