+ if (toKeep)
+ {
+ Z_External *ext = (Z_External *)
+ odr_malloc (rr->stream, sizeof(*ext));
+ Z_IUOriginPartToKeep *keep = (Z_IUOriginPartToKeep *)
+ odr_malloc (rr->stream, sizeof(*keep));
+ Z_IUTargetPart *targetPart = (Z_IUTargetPart *)
+ odr_malloc (rr->stream, sizeof(*targetPart));
+
+ rr->taskPackage = (Z_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 =
+ (unsigned char *) odr_strdup (rr->stream, "123");
+ rr->taskPackage->targetReference->len =
+ rr->taskPackage->targetReference->size =
+ strlen((char *) (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 = (int *) 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 = (Z_DiagRec **) odr_nullval();
+ targetPart->num_taskPackageRecords = 1;
+ targetPart->taskPackageRecords =
+ (Z_IUTaskPackageRecordStructure **)
+ odr_malloc (rr->stream,
+ sizeof(Z_IUTaskPackageRecordStructure *));
+ targetPart->taskPackageRecords[0] =
+ (Z_IUTaskPackageRecordStructure *)
+ odr_malloc (rr->stream,
+ sizeof(Z_IUTaskPackageRecordStructure));
+
+ targetPart->taskPackageRecords[0]->which =
+ Z_IUTaskPackageRecordStructure_record;
+ targetPart->taskPackageRecords[0]->u.record =
+ z_ext_record (rr->stream, VAL_SUTRS, "test", 4);
+ targetPart->taskPackageRecords[0]->correlationInfo = 0;
+ targetPart->taskPackageRecords[0]->recordStatus =
+ odr_intdup (rr->stream,
+ Z_IUTaskPackageRecordStructure_success);
+ targetPart->taskPackageRecords[0]->num_supplementalDiagnostics
+ = 0;
+
+ targetPart->taskPackageRecords[0]->supplementalDiagnostics = 0;
+ }