Optional CCL module. Moved atoi_n to marcdisp.h from yaz-util.h.
[yaz-moved-to-github.git] / ztest / ztest.c
index f6c6372..bb816bb 100644 (file)
@@ -6,7 +6,19 @@
  *    Chas Woodfield, Fretwell Downing Datasystems.
  *
  * $Log: ztest.c,v $
- * Revision 1.38  2001-02-21 13:46:54  adam
+ * Revision 1.42  2001-04-06 12:26:46  adam
+ * Optional CCL module. Moved atoi_n to marcdisp.h from yaz-util.h.
+ *
+ * Revision 1.41  2001/04/05 13:08:48  adam
+ * New configure options: --enable-module.
+ *
+ * Revision 1.40  2001/03/25 21:55:13  adam
+ * Added odr_intdup. Ztest server returns TaskPackage for ItemUpdate.
+ *
+ * Revision 1.39  2001/03/12 14:40:57  adam
+ * Minor change of print of item update info.
+ *
+ * Revision 1.38  2001/02/21 13:46:54  adam
  * C++ fixes.
  *
  * Revision 1.37  2001/02/20 11:25:32  adam
 #include <yaz/backend.h>
 #include <yaz/log.h>
 
-#ifdef ASN_COMPILED
+#if YAZ_MODULE_ill
 #include <yaz/ill.h>
 #endif
 
@@ -206,7 +218,7 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
                yaz_log(LOG_LOG, "setId: %s", n->resultSetItem->resultSetId);
                yaz_log(LOG_LOG, "item: %d", *n->resultSetItem->item);
            }
-#ifdef ASN_COMPILED
+#if YAZ_MODULE_ill
            if (n->itemRequest)
            {
                Z_External *r = (Z_External*) n->itemRequest;
@@ -217,6 +229,13 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
                    oident *ent = oid_getentbyoid(r->direct_reference);
                    if (ent)
                        yaz_log(LOG_LOG, "OID %s", ent->desc);
+                    if (ent && ent->value == VAL_TEXT_XML)
+                    {
+                       yaz_log (LOG_LOG, "ILL XML request");
+                        if (r->which == Z_External_octet)
+                            yaz_log (LOG_LOG, "%.*s", r->u.octet_aligned->len,
+                                     r->u.octet_aligned->buf); 
+                    }
                    if (ent && ent->value == VAL_ISO_ILL_1)
                    {
                        yaz_log (LOG_LOG, "Decode ItemRequest begin");
@@ -307,7 +326,7 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
                    yaz_log (LOG_LOG, " recordInsert");
                    break;
                case Z_IUOriginPartToKeep_recordReplace:
-                   yaz_log (LOG_LOG, " recordUpdate");
+                   yaz_log (LOG_LOG, " recordReplace");
                    break;
                case Z_IUOriginPartToKeep_recordDelete:
                    yaz_log (LOG_LOG, " recordDelete");
@@ -333,6 +352,60 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
                if (!strcmp(toKeep->databaseName, "accept"))
                    rr->errcode = -1;
            }
+           if (toKeep)
+           {
+               Z_External *ext = odr_malloc (rr->stream, sizeof(*ext));
+               Z_IUOriginPartToKeep *keep =
+                   odr_malloc (rr->stream, sizeof(*keep));
+               Z_IUTargetPart *targetPart =
+                   odr_malloc (rr->stream, sizeof(*targetPart));
+               rr->taskPackage = odr_malloc (rr->stream, sizeof(*rr->taskPackage));
+               rr->taskPackage->packageType =
+                   odr_oiddup (rr->stream, rr->esr->packageType);
+               rr->taskPackage->packageName = 0;
+               rr->taskPackage->userId = 0;
+               rr->taskPackage->retentionTime = 0;
+               rr->taskPackage->permissions = 0;
+               rr->taskPackage->description = 0;
+               rr->taskPackage->targetReference = (Odr_oct *)
+                   odr_malloc (rr->stream, sizeof(Odr_oct));
+               rr->taskPackage->targetReference->buf =
+                   odr_strdup (rr->stream, "123");
+               rr->taskPackage->targetReference->len =
+                   rr->taskPackage->targetReference->size =
+                   strlen(rr->taskPackage->targetReference->buf);
+               rr->taskPackage->creationDateTime = 0;
+               rr->taskPackage->taskStatus = odr_intdup(rr->stream, 0);
+               rr->taskPackage->packageDiagnostics = 0;
+               rr->taskPackage->taskSpecificParameters = ext;
+
+               ext->direct_reference =
+                   odr_oiddup (rr->stream, rr->esr->packageType);
+               ext->indirect_reference = 0;
+               ext->descriptor = 0;
+               ext->which = Z_External_update;
+               ext->u.update = (Z_IUUpdate *)
+                   odr_malloc (rr->stream, sizeof(*ext->u.update));
+               ext->u.update->which = Z_IUUpdate_taskPackage;
+               ext->u.update->u.taskPackage =  (Z_IUUpdateTaskPackage *)
+                   odr_malloc (rr->stream, sizeof(Z_IUUpdateTaskPackage));
+               ext->u.update->u.taskPackage->originPart = keep;
+               ext->u.update->u.taskPackage->targetPart = targetPart;
+
+               keep->action = odr_malloc (rr->stream, sizeof(int));
+               *keep->action = *toKeep->action;
+               keep->databaseName =
+                   odr_strdup (rr->stream, toKeep->databaseName);
+               keep->schema = 0;
+               keep->elementSetName = 0;
+               keep->actionQualifier = 0;
+
+               targetPart->updateStatus = odr_intdup (rr->stream, 1);
+               targetPart->num_globalDiagnostics = 0;
+               targetPart->globalDiagnostics = odr_nullval();
+               targetPart->num_taskPackageRecords = 0;
+               targetPart->taskPackageRecords = odr_nullval();
+           }
            if (notToKeep)
            {
                int i;