--- XXXXX XXXX/XX/XX
+Added Espec-1 format.
+
Added VisibleString field body type to GRS-1. It is illegal acc. to my copy
of the protocol and it cannot be selected when encoding (maps into 'string'
when decoding). Needed to talk to some servers.
# Copyright (C) 1994, Index Data I/S
# All rights reserved.
# Sebastian Hammer, Adam Dickmeiss
-# $Id: Makefile,v 1.20 1995-08-29 11:17:14 quinn Exp $
+# $Id: Makefile,v 1.21 1995-10-12 10:34:36 quinn Exp $
SHELL=/bin/sh
INCLUDE=-I../include -I.
LIB=$(LIBDIR)/libasn.a
LIBS=-lodr -lasn
PO = proto.o diagbib1.o zget.o prt-rsc.o prt-acc.o prt-exp.o prt-ext.o \
- prt-grs.o prt-exd.o prt-dia.o
+ prt-grs.o prt-exd.o prt-dia.o prt-esp.o
CPP=$(CC) -E
RANLIB=ranlib
--- /dev/null
+/*
+ * Copyright (c) 1995, Index Data.
+ * See the file LICENSE for details.
+ * Sebastian Hammer, Adam Dickmeiss
+ *
+ * $Log: prt-esp.c,v $
+ * Revision 1.1 1995-10-12 10:34:37 quinn
+ * Added Espec-1.
+ *
+ *
+ */
+
+#include <proto.h>
+
+int z_OccurValues(ODR o, Z_OccurValues **p, int opt)
+{
+ if (!odr_sequence_begin(o, p, sizeof(**p)))
+ return opt && odr_ok(o);
+ return
+ odr_implicit(o, odr_integer, &(*p)->start, ODR_CONTEXT, 1, 0) &&
+ odr_implicit(o, odr_integer, &(*p)->howMany, ODR_CONTEXT, 2, 1) &&
+ odr_sequence_end(o);
+}
+
+int z_Occurrences(ODR o, Z_Occurrences **p, int opt)
+{
+ static Odr_arm arm[] =
+ {
+ {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Occurrences_all, odr_null},
+ {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Occurrences_last, odr_null},
+ {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Occurrences_values, z_OccurValues},
+ {-1, -1, -1, -1, 0}
+ };
+
+ if (o->direction == ODR_DECODE)
+ *p = odr_malloc(o, sizeof(**p));
+ else if (!*p)
+ return opt;
+ if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
+ return 1;
+ *p = 0;
+ return opt && odr_ok(o);
+}
+
+int z_SpecificTag(ODR o, Z_SpecificTag **p, int opt)
+{
+ if (!odr_sequence_begin(o, p, sizeof(**p)))
+ return opt && odr_ok(o);
+ return
+ odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 1) &&
+ odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
+ 2, 0) &&
+ odr_explicit(o, z_Occurrences, &(*p)->occurrences, ODR_CONTEXT, 3, 1) &&
+ odr_sequence_end(o);
+}
+
+int z_ETagUnit(ODR o, Z_ETagUnit **p, int opt)
+{
+ static Odr_arm arm[] =
+ {
+ {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ETagUnit_specificTag, z_SpecificTag},
+ {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_ETagUnit_wildThing, z_Occurrences},
+ {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_ETagUnit_wildPath, odr_null},
+ {-1, -1, -1 -1, 0}
+ };
+
+ if (o->direction == ODR_DECODE)
+ *p = odr_malloc(o, sizeof(**p));
+ else if (!*p)
+ return opt;
+ if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
+ return 1;
+ *p = 0;
+ return opt && odr_ok(o);
+}
+
+int z_ETagPath(ODR o, Z_ETagPath **p, int opt)
+{
+ if (o->direction == ODR_DECODE)
+ *p = odr_malloc(o, sizeof(**p));
+ else if (!*p)
+ return opt;
+ if (odr_sequence_of(o, z_ETagUnit, &(*p)->tags, &(*p)->num_tags))
+ return 1;
+ *p = 0;
+ return opt && odr_ok(o);
+}
+
+int z_SimpleElement(ODR o, Z_SimpleElement **p, int opt)
+{
+ if (!odr_sequence_begin(o, p, sizeof(**p)))
+ return opt && odr_ok(o);
+ return
+ odr_implicit(o, z_ETagPath, &(*p)->path, ODR_CONTEXT, 1, 0) &&
+ odr_implicit(o, z_Variant, &(*p)->variantRequest, ODR_CONTEXT,
+ 2, 1) &&
+ odr_sequence_end(o);
+}
+
+int z_CompoPrimitives(ODR o, Z_CompoPrimitives **p, int opt)
+{
+ if (o->direction == ODR_DECODE)
+ *p = odr_malloc(o, sizeof(**p));
+ else if (!*p)
+ return opt;
+ if (odr_sequence_of(o, z_InternationalString, &(*p)->primitives,
+ &(*p)->num_primitives))
+ return 1;
+ *p = 0;
+ return opt && odr_ok(o);
+}
+
+int z_CompoSpecs(ODR o, Z_CompoSpecs **p, int opt)
+{
+ if (o->direction == ODR_DECODE)
+ *p = odr_malloc(o, sizeof(**p));
+ else if (!*p)
+ return opt;
+ if (odr_sequence_of(o, z_SimpleElement, &(*p)->specs, &(*p)->num_specs))
+ return 1;
+ *p = 0;
+ return opt && odr_ok(o);
+}
+
+int z_CompositeElement(ODR o, Z_CompositeElement **p, int opt)
+{
+ static Odr_arm arm[] =
+ {
+ {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_CompoElement_primitives,
+ z_CompoPrimitives},
+ {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_CompoElement_specs,
+ z_CompoSpecs},
+ {-1, -1, -1, -1, 0}
+ };
+
+ if (!odr_sequence_begin(o, p, sizeof(**p)))
+ return opt && odr_ok(o);
+ return
+ odr_constructed_begin(o, &(*p)->elementList, ODR_CONTEXT, 1) &&
+ odr_choice(o, arm, &(*p)->elementList, &(*p)->which) &&
+ odr_constructed_end(o) &&
+ odr_implicit(o, z_ETagPath, &(*p)->deliveryTag, ODR_CONTEXT, 2, 0) &&
+ odr_implicit(o, z_Variant, &(*p)->variantRequest, ODR_CONTEXT, 3, 1) &&
+ odr_sequence_end(o);
+}
+
+int z_ElementRequest(ODR o, Z_ElementRequest **p, int opt)
+{
+ static Odr_arm arm[] =
+ {
+ {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ERequest_simpleElement,
+ z_SimpleElement},
+ {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ERequest_compositeElement,
+ z_CompositeElement},
+ {-1, -1, -1 -1, 0}
+ };
+
+ if (o->direction == ODR_DECODE)
+ *p = odr_malloc(o, sizeof(**p));
+ else if (!*p)
+ return opt;
+ if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
+ return 1;
+ *p = 0;
+ return opt && odr_ok(o);
+}
+
+int z_Espec1(ODR o, Z_Espec1 **p, int opt)
+{
+ if (!odr_sequence_begin(o, p, sizeof(**p)))
+ return opt && odr_ok(o);
+ return
+ odr_implicit_settag(o, ODR_CONTEXT, 1) &&
+ (odr_sequence_of(o, z_InternationalString, &(*p)->elementSetNames,
+ &(*p)->num_elementSetNames) || odr_ok(o)) &&
+ odr_implicit(o, odr_oid, &(*p)->defaultVariantSetId, ODR_CONTEXT,
+ 2, 1) &&
+ odr_implicit(o, z_Variant, &(*p)->defaultVariantRequest, ODR_CONTEXT,
+ 3, 1) &&
+ odr_implicit(o, odr_integer, &(*p)->defaultTagType, ODR_CONTEXT,
+ 4, 1) &&
+ odr_implicit_settag(o, ODR_CONTEXT, 5) &&
+ (odr_sequence_of(o, z_ElementRequest, &(*p)->elements,
+ &(*p)->num_elements) || odr_ok(o)) &&
+ odr_sequence_end(o);
+}
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: prt-ext.c,v $
- * Revision 1.6 1995-09-29 17:11:55 quinn
+ * Revision 1.7 1995-10-12 10:34:38 quinn
+ * Added Espec-1.
+ *
+ * Revision 1.6 1995/09/29 17:11:55 quinn
* Smallish
*
* Revision 1.5 1995/09/27 15:02:42 quinn
z_TaskPackage},
{ODR_EXPLICIT, ODR_CONTEXT, 0, Z_External_itemOrder, z_ItemOrder},
{ODR_EXPLICIT, ODR_CONTEXT, 0, Z_External_diag1, z_DiagnosticFormat},
+ {ODR_EXPLICIT, ODR_CONTEXT, 0, Z_External_espec1, z_Espec1},
{-1, -1, -1, -1, 0}
};
/*
{VAL_EXTENDED, Z_External_extendedService},
{VAL_ITEMORDER, Z_External_itemOrder},
{VAL_DIAG1, Z_External_diag1},
+ {VAL_ESPEC1, Z_External_espec1},
{VAL_NONE, 0}
};
* OF THIS SOFTWARE.
*
* $Log: oid.h,v $
- * Revision 1.8 1995-10-10 16:27:08 quinn
+ * Revision 1.9 1995-10-12 10:34:45 quinn
+ * Added Espec-1.
+ *
+ * Revision 1.8 1995/10/10 16:27:08 quinn
* *** empty log message ***
*
* Revision 1.7 1995/09/29 17:12:05 quinn
VAL_NONE,
VAL_SETM,
VAL_SETG,
- VAL_VAR1
+ VAL_VAR1,
+ VAL_ESPEC1
} value;
int oidsuffix[20];
char *desc;
* OF THIS SOFTWARE.
*
* $Log: proto.h,v $
- * Revision 1.26 1995-09-29 17:12:08 quinn
+ * Revision 1.27 1995-10-12 10:34:46 quinn
+ * Added Espec-1.
+ *
+ * Revision 1.26 1995/09/29 17:12:08 quinn
* Smallish
*
* Revision 1.25 1995/09/27 15:02:49 quinn
#include <prt-grs.h>
#include <prt-exd.h>
#include <prt-dia.h>
+#include <prt-esp.h>
#include <prt-ext.h>
--- /dev/null
+/*
+ * Copyright (c) 1995, Index Data.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation, in whole or in part, for any purpose, is hereby granted,
+ * provided that:
+ *
+ * 1. This copyright and permission notice appear in all copies of the
+ * software and its documentation. Notices of copyright or attribution
+ * which appear at the beginning of any file must remain unchanged.
+ *
+ * 2. The names of Index Data or the individual authors may not be used to
+ * endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
+ * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ *
+ */
+
+#ifndef PRT_ESP_H
+#define PRT_ESP_H
+
+#include <yconfig.h>
+
+typedef struct Z_OccurValues
+{
+ int *start;
+ int *howMany; /* OPTIONAL */
+} Z_OccurValues;
+
+typedef struct Z_Occurrences
+{
+ enum
+ {
+ Z_Occurrences_all,
+ Z_Occurrences_last,
+ Z_Occurrences_values
+ } which;
+ union
+ {
+ Odr_null *all;
+ Odr_null *last;
+ Z_OccurValues *values;
+ } u;
+} Z_Occurrences;
+
+typedef struct Z_SpecificTag
+{
+ int *tagType; /* OPTIONAL */
+ Z_StringOrNumeric *tagValue;
+ Z_Occurrences *occurrences; /* OPTIONAL */
+} Z_SpecificTag;
+
+typedef struct Z_ETagUnit
+{
+ enum
+ {
+ Z_ETagUnit_specificTag,
+ Z_ETagUnit_wildThing,
+ Z_ETagUnit_wildPath
+ } which;
+ union
+ {
+ Z_SpecificTag *specificTag;
+ Z_Occurrences *wildThing;
+ Odr_null *wildPath;
+ } u;
+} Z_ETagUnit;
+
+typedef struct Z_ETagPath
+{
+ int num_tags;
+ Z_ETagUnit **tags;
+} Z_ETagPath;
+
+typedef struct Z_SimpleElement
+{
+ Z_ETagPath *path;
+ Z_Variant *variantRequest; /* OPTIONAL */
+} Z_SimpleElement;
+
+typedef struct Z_CompoPrimitives
+{
+ int num_primitives;
+ char **primitives;
+} Z_CompoPrimitives;
+
+typedef struct Z_CompoSpecs
+{
+ int num_specs;
+ Z_SimpleElement **specs;
+} Z_CompoSpecs;
+
+typedef struct Z_CompositeElement
+{
+ enum
+ {
+ Z_CompoElement_primitives,
+ Z_CompoElement_specs
+ } which;
+ union
+ {
+ Z_CompoPrimitives *primitives;
+ Z_CompoSpecs *specs;
+ } elementList;
+ Z_ETagPath *deliveryTag;
+ Z_Variant *variantRequest;
+} Z_CompositeElement;
+
+typedef struct Z_ElementRequest
+{
+ enum
+ {
+ Z_ERequest_simpleElement,
+ Z_ERequest_compositeElement
+ } which;
+ union
+ {
+ Z_SimpleElement *simpleElement;
+ Z_CompositeElement *compositeElement;
+ } u;
+} Z_ElementRequest;
+
+typedef struct Z_Espec1
+{
+ int num_elementSetNames;
+ char **elementSetNames; /* OPTIONAL */
+ Odr_oid *defaultVariantSetId; /* OPTIONAL */
+ Z_Variant *defaultVariantRequest; /* OPTIONAL */
+ int *defaultTagType; /* OPTIONAL */
+ int num_elements;
+ Z_ElementRequest *elements; /* OPTIONAL */
+} Z_Espec1;
+
+int z_Espec1(ODR o, Z_Espec1 **p, int opt);
+
+#endif
Z_External_grs1,
Z_External_extendedService,
Z_External_itemOrder,
- Z_External_diag1
+ Z_External_diag1,
+ Z_External_espec1
} which;
union
{
Z_TaskPackage *extendedService;
Z_ItemOrder *itemOrder;
Z_DiagnosticFormat *diag1;
+ Z_Espec1 *espec1;
} u;
};
};
int z_GenericRecord(ODR o, Z_GenericRecord **p, int opt);
+int z_Variant(ODR o, Z_Variant **p, int opt);
#endif
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: oid.c,v $
- * Revision 1.7 1995-10-10 16:27:12 quinn
+ * Revision 1.8 1995-10-12 10:34:56 quinn
+ * Added Espec-1.
+ *
+ * Revision 1.7 1995/10/10 16:27:12 quinn
* *** empty log message ***
*
* Revision 1.6 1995/09/29 17:12:35 quinn
{PROTO_Z3950, CLASS_EXTSERV, VAL_DBUPDATE, {9,5,-1}, "DB. Update" },
{PROTO_Z3950, CLASS_EXTSERV, VAL_EXPORTSPEC,{9,6,-1}, "exp. spec." },
{PROTO_Z3950, CLASS_EXTSERV, VAL_EXPORTINV, {9,7,-1}, "exp. inv." },
+ {PROTO_Z3950, CLASS_ELEMSPEC,VAL_ESPEC1, {11,1,-1}, "Espec-1" },
{PROTO_Z3950, CLASS_VARSET, VAL_VAR1, {12,1,-1}, "Variant-1" },
{PROTO_Z3950, CLASS_TAGSET, VAL_SETM, {14,1,-1}, "TagsetM" },
{PROTO_SR, CLASS_EXTSERV, VAL_DBUPDATE, {9,5,-1}, "DB. Update" },
{PROTO_SR, CLASS_EXTSERV, VAL_EXPORTSPEC,{9,6,-1}, "exp. spec." },
{PROTO_SR, CLASS_EXTSERV, VAL_EXPORTINV, {9,7,-1}, "exp. inv." },
+ {PROTO_SR, CLASS_ELEMSPEC,VAL_ESPEC1, {11,1,-1}, "Espec-1" },
{PROTO_SR, CLASS_VARSET, VAL_VAR1, {12,1,-1}, "Variant-1" },
{PROTO_SR, CLASS_TAGSET, VAL_SETM, {14,1,-1}, "TagsetM" },