Fixed bug #212: make distcheck uses global yaz, not a local one
[ir-tcl-moved-to-github.git] / ir-tcl.c
index a94656b..0a2bf49 100644 (file)
--- a/ir-tcl.c
+++ b/ir-tcl.c
@@ -4,7 +4,13 @@
  * See the file LICENSE for details.
  *
  * $Log: ir-tcl.c,v $
- * Revision 1.125  2003-04-29 10:51:23  adam
+ * Revision 1.127  2004-05-10 08:38:45  adam
+ * Do not use obsolete YAZ defines
+ *
+ * Revision 1.126  2003/11/29 17:24:09  adam
+ * Added getXml method (Franck Falcoz)
+ *
+ * Revision 1.125  2003/04/29 10:51:23  adam
  * Null terminate octet aligned records
  *
  * Revision 1.124  2003/03/05 22:02:47  adam
@@ -1579,7 +1585,7 @@ static int do_triggerResourceControl (void *obj, Tcl_Interp *interp,
     }
     apdu = zget_APDU (p->odr_out, Z_APDU_triggerResourceControlRequest);
     req = apdu->u.triggerResourceControlRequest;
-    *req->requestedAction = Z_TriggerResourceCtrl_cancel;
+    *req->requestedAction = Z_TriggerResourceControlRequest_cancel;
     req->resultSetWanted = &is_false; 
     
     return ir_tcl_send_APDU (interp, p, apdu, "triggerResourceControl",
@@ -2433,16 +2439,16 @@ static int do_sortStatus (void *o, Tcl_Interp *interp,
 
     if (argc <= 0)
     {
-       obj->sortStatus = Z_SortStatus_failure;
+       obj->sortStatus = Z_SortResponse_failure;
         return TCL_OK;
     }
     switch (obj->sortStatus)
     {
-    case Z_SortStatus_success:
+    case Z_SortResponse_success:
         res = "success"; break;
-    case Z_SortStatus_partial_1:
+    case Z_SortResponse_partial_1:
         res = "partial"; break;
-    case Z_SortStatus_failure:
+    case Z_SortResponse_failure:
         res = "failure"; break;
     default:
        res = "unknown"; break;
@@ -2756,6 +2762,41 @@ static int do_getSutrs (void *o, Tcl_Interp *interp, int argc, char **argv)
     return TCL_OK;
 }
 
+/*
+ * do_getXml: Get XML Record
+ */
+static int do_getXml (void *o, Tcl_Interp *interp, int argc, char **argv)
+{
+    IrTcl_SetObj *obj = o;
+    int offset;
+    IrTcl_RecordList *rl;
+
+    if (argc <= 0)
+        return TCL_OK;
+    if (argc != 3)
+    {
+        Tcl_AppendResult (interp, wrongArgs, *argv, " ", argv[1],
+                          " position\"", NULL);
+        return TCL_ERROR;
+    }
+    if (Tcl_GetInt (interp, argv[2], &offset)==TCL_ERROR)
+        return TCL_ERROR;
+    rl = find_IR_record (obj, offset);
+    if (!rl)
+    {
+        Tcl_AppendResult (interp, "No record at #", argv[2], NULL);
+        return TCL_ERROR;
+    }
+    if (rl->which != Z_NamePlusRecord_databaseRecord)
+    {
+        Tcl_AppendResult (interp, "No DB record at #", argv[2], NULL);
+        return TCL_ERROR;
+    }
+    if (!rl->u.dbrec.buf || rl->u.dbrec.type != VAL_TEXT_XML)
+        return TCL_OK;
+    Tcl_AppendElement (interp, rl->u.dbrec.buf);
+    return TCL_OK;
+}
 
 /*
  * do_getGrs: Get a GRS-1 Record
@@ -3244,10 +3285,10 @@ static int do_sort (void *o, Tcl_Interp *interp, int argc, char **argv)
         }
         sks->sortRelation = (int *)
            odr_malloc (p->odr_out, sizeof(*sks->sortRelation));
-        *sks->sortRelation = Z_SortRelation_ascending;
+        *sks->sortRelation = Z_SortKeySpec_ascending;
         sks->caseSensitivity = (int *)
            odr_malloc (p->odr_out, sizeof(*sks->caseSensitivity));
-        *sks->caseSensitivity = Z_SortCase_caseSensitive;
+        *sks->caseSensitivity = Z_SortKeySpec_caseSensitive;
        
 #ifdef ASN_COMPILED
         sks->which = Z_SortKeySpec_null;
@@ -3263,20 +3304,20 @@ static int do_sort (void *o, Tcl_Interp *interp, int argc, char **argv)
             case 'a':
             case 'A':
             case '>':
-                *sks->sortRelation = Z_SortRelation_descending;
+                *sks->sortRelation = Z_SortKeySpec_descending;
                 break;
             case 'd':
             case 'D':
             case '<':
-                *sks->sortRelation = Z_SortRelation_ascending;
+                *sks->sortRelation = Z_SortKeySpec_ascending;
                 break;
             case 'i':
             case 'I':
-                *sks->caseSensitivity = Z_SortCase_caseInsensitive;
+                *sks->caseSensitivity = Z_SortKeySpec_caseInsensitive;
                 break;
             case 'S':
             case 's':
-                *sks->caseSensitivity = Z_SortCase_caseSensitive;
+                *sks->caseSensitivity = Z_SortKeySpec_caseSensitive;
                 break;
             }
         }
@@ -3303,6 +3344,7 @@ static IrTcl_Method ir_set_method_tab[] = {
     { "type",                    do_type, NULL},
     { "getMarc",                 do_getMarc, NULL},
     { "getSutrs",                do_getSutrs, NULL},
+    { "getXml",                  do_getXml, NULL},
     { "getGrs",                  do_getGrs, NULL},
     { "getExplain",              do_getExplain, NULL},
     { "recordType",              do_recordType, NULL},
@@ -4260,7 +4302,7 @@ static void ir_searchResponse (void *o, Z_SearchResponse *searchrs,
     if (searchrs->presentStatus)
         setobj->presentStatus = *searchrs->presentStatus;
     else
-        setobj->presentStatus = Z_RES_NONE;
+        setobj->presentStatus = Z_SearchResponse_none;
     if (searchrs->nextResultSetPosition)
         setobj->nextResultSetPosition = *searchrs->nextResultSetPosition;