Optional CCL module. Moved atoi_n to marcdisp.h from yaz-util.h.
[yaz-moved-to-github.git] / client / client.c
index 25a299c..7fe8df2 100644 (file)
@@ -3,7 +3,16 @@
  * See the file LICENSE for details.
  *
  * $Log: client.c,v $
- * Revision 1.117  2001-03-25 21:55:12  adam
+ * 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
 
 #include <yaz/pquery.h>
 
-#ifdef ASN_COMPILED
+#if YAZ_MODULE_ill
 #include <yaz/ill.h>
 #endif
 
-#if CCL2RPN
+#if YAZ_MODULE_ccl
 #include <yaz/yaz-ccl.h>
 #endif
 
@@ -439,7 +448,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;
@@ -453,7 +462,7 @@ typedef enum {
 
 static QueryType queryType = QueryType_Prefix;
 
-#if CCL2RPN
+#if YAZ_MODULE_ccl
 static CCL_bibset bibset;               /* CCL bibset handle */
 #endif
 
@@ -1016,7 +1025,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
@@ -1024,7 +1033,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);
@@ -1092,7 +1101,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);
@@ -1311,7 +1320,7 @@ void process_ESResponse(Z_ExtendedServicesResponse *res)
     }
 }
 
-#ifdef ASN_COMPILED
+#if YAZ_MODULE_ill
 
 const char *get_ill_element (void *clientData, const char *element)
 {
@@ -1375,14 +1384,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;
@@ -1438,11 +1442,6 @@ static Z_External *create_external_ILL_APDU(int which)
     }
     return r;
 }
-#else
-static Z_External *create_external_ILLRequest()
-{
-    return 0;
-}
 #endif
 
 
@@ -1493,7 +1492,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");
@@ -1506,6 +1505,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 =
+               "<itemorder>\n"
+               "  <type>request</type>\n"
+               "  <libraryNo>000200</libraryNo>\n"
+               "  <borrowerTicketNo> 1212 </borrowerTicketNo>\n"
+               "</itemorder>";
+        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;
 
@@ -1868,9 +1878,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;
@@ -1881,7 +1891,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;
@@ -1891,7 +1901,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);
     }
@@ -2292,7 +2302,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
@@ -2301,7 +2311,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;
@@ -2350,7 +2360,7 @@ int cmd_packagename(char* arg) {
 
 static void initialize(void)
 {
-#if CCL2RPN
+#if YAZ_MODULE_ccl
     FILE *inf;
 #endif
     nmem_init();
@@ -2365,7 +2375,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)