X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=asn%2Fproto.c;h=b7454799aacea9d96ca3d129ae700133e8872b81;hb=44c069f9cae451dae880e8d576387f6a46ce588d;hp=2cd5d94c14c2905509a003548cc703aebc6cb5dc;hpb=1110373102ed65ffcaa5384aa0514516b162c543;p=yaz-moved-to-github.git diff --git a/asn/proto.c b/asn/proto.c index 2cd5d94..b745479 100644 --- a/asn/proto.c +++ b/asn/proto.c @@ -4,7 +4,16 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: proto.c,v $ - * Revision 1.31 1995-06-16 13:15:56 quinn + * Revision 1.34 1995-06-19 17:01:48 quinn + * This should bring us in sync with the version distributed as 1.0b + * + * Revision 1.33 1995/06/19 13:39:56 quinn + * *** empty log message *** + * + * Revision 1.32 1995/06/19 12:37:28 quinn + * Fixed a bug in the compspec. + * + * Revision 1.31 1995/06/16 13:15:56 quinn * Fixed Defaultdiagformat. * * Revision 1.30 1995/06/15 15:42:01 quinn @@ -105,6 +114,16 @@ /* ---------------------- GLOBAL DEFS ------------------- */ +/* + * We'll use a general octetstring here, since string operations are + * clumsy on long strings. + */ +int z_SUTRS(ODR o, Odr_oct **p, int opt) +{ + return odr_implicit(o, odr_octetstring, p, ODR_UNIVERSAL, + ODR_GENERALSTRING, opt); +} + int z_ReferenceId(ODR o, Z_ReferenceId **p, int opt) { return odr_implicit(o, odr_octetstring, (Odr_oct**) p, ODR_CONTEXT, 2, opt); @@ -443,14 +462,12 @@ int z_ElementSetNames(ODR o, Z_ElementSetNames **p, int opt) {-1, -1, -1, -1, 0} }; - if (!odr_constructed_begin(o, p, ODR_CONTEXT, 19)) - return opt && odr_ok(o); - if (o->direction == ODR_DECODE) *p = odr_malloc(o, sizeof(**p)); + else if (!*p) + return opt && odr_ok(o); - if (odr_choice(o, arm, &(*p)->u, &(*p)->which) && - odr_constructed_end(o)) + if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) return 1; *p = 0; return 0; @@ -737,7 +754,7 @@ int z_DefaultDiagFormat(ODR o, Z_DefaultDiagFormat **p, int opt) {-1, -1, -1, Z_DiagForm_v2AddInfo, odr_visiblestring}, {-1, -1, -1, Z_DiagForm_v3AddInfo, z_InternationalString}, {ODR_IMPLICIT, ODR_CONTEXT, ODR_VISIBLESTRING, Z_DiagForm_v2AddInfo, - odr_visiblestring}, /* to match some weird server.. */ + odr_visiblestring}, /* To cater to a bug in the CNIDR servers */ {-1, -1, -1, -1, 0} }; if (!odr_sequence_begin(o, p, sizeof(**p))) @@ -1212,7 +1229,7 @@ int z_RecordComposition(ODR o, Z_RecordComposition **p, int opt) { static Odr_arm arm[] = { - {ODR_EXPLICIT, ODR_CONTEXT, 1, Z_RecordComp_simple, + {ODR_EXPLICIT, ODR_CONTEXT, 19, Z_RecordComp_simple, z_ElementSetNames}, {ODR_IMPLICIT, ODR_CONTEXT, 209, Z_RecordComp_complex, z_CompSpec}, @@ -1262,7 +1279,8 @@ int z_PresentRequest(ODR o, Z_PresentRequest **p, int opt) &(*p)->num_ranges) || odr_ok(o)) && z_RecordComposition(o, &(*p)->recordComposition, 1) && #else - z_ElementSetNames(o, &pp->elementSetNames, 1) && + odr_explicit(o, z_ElementSetNames, &pp->elementSetNames, ODR_CONTEXT, + 19, 1) && #endif odr_implicit(o, odr_oid, &(*p)->preferredRecordSyntax, ODR_CONTEXT, 104, 1) &&