|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 5579 (0x15cb) Types: TextFile Names: »pe2or.py«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Lib/or/pe2or.py«
-- pe2or: P1 O/R to OR_ptr conversion routines -- @(#) $Header: /cs/research/pp/hubris/pp-beta/Lib/or/RCS/pe2or.py,v 5.0 90/09/20 16:08:59 pp Exp Locker: pp $ -- -- $Log: pe2or.py,v $ -- Revision 5.0 90/09/20 16:08:59 pp -- rcsforce : 5.0 public release -- -- -- SEK add application 1 tag back into PE OR DEFINITIONS ::= %{ #ifndef lint static char Rcsid[] = "@(#)$Header"; #endif lint #include "util.h" #include "or.h" static void or_concat (); #define PEPYPARM OR_ptr * OR_ptr pe2or (pe) PE pe; { OR_ptr or = NULLOR; PE tpe; /* SEK put in an extra tage */ tpe = pe_alloc (PE_CLASS_APPL, PE_FORM_CONS, 0); tpe -> pe_cons = pe; if (decode_OR_ORName (tpe, 1, NULLIP, NULLVP, &or) == NOTOK) { if (or) or_free (or); or = NULLOR; } tpe -> pe_cons = NULLPE; pe_free (tpe); return or; } #undef DEBUG %} BEGIN DECODER decode -- O/R name ORName ::= [APPLICATION 0] IMPLICIT SEQUENCE { standard StandardAttributeList [[p parm]], domaindefined DomainDefinedAttributeList [[p parm]] OPTIONAL } StandardAttributeList %{ char *str; %} ::= SEQUENCE { CountryName [[p parm]] OPTIONAL, AdministrationDomainName [[p parm]] OPTIONAL, [0] IMPLICIT X121Address [[s str]] %{ or_concat (parm, OR_X121, NULLCP, str); %} OPTIONAL, [1] IMPLICIT TerminalID [[s str]] %{ or_concat (parm, OR_TID, NULLCP, str); %} OPTIONAL, [2] PrivateDomainName [[p parm]] OPTIONAL, [3] IMPLICIT OrganizationName [[s str]] %{ or_concat (parm, OR_O, NULLCP, str); %} OPTIONAL, [4] IMPLICIT UniqueUAIdentifier [[s str]] %{ or_concat (parm, OR_UAID, NULLCP, str); %} OPTIONAL, [5] IMPLICIT PersonalName [[p parm]] OPTIONAL, [6] IMPLICIT SEQUENCE OF OrganizationalUnit [[s str]] %{ or_concat (parm, OR_OU, NULLCP, str); %} OPTIONAL } DomainDefinedAttributeList ::= SEQUENCE OF DomainDefinedAttribute [[p parm]] DomainDefinedAttribute %{ char *dd_type, *dd_val; %} ::= SEQUENCE { type PrintableString [[s dd_type]], value PrintableString [[s dd_val]] } %{ or_concat (parm, OR_DD, dd_type, dd_val); %} CountryName %{ char *country; %} ::= [APPLICATION 1] CHOICE { NumericString [[s country]], PrintableString [[s country]] } %{ or_concat (parm, OR_C, NULLCP, country); %} AdministrationDomainName %{ char *admd; %} ::= [APPLICATION 2] CHOICE { NumericString [[s admd]], PrintableString [[s admd]] } %{ or_concat (parm, OR_ADMD, NULLCP, admd); %} PrivateDomainIdentifier %{ char *prmd; %} ::= CHOICE { NumericString [[s prmd]], PrintableString [[s prmd]] } %{ or_concat (parm, OR_PRMD, NULLCP, prmd); %} X121Address ::= NumericString TerminalID ::= PrintableString OrganizationName ::= PrintableString UniqueUAIdentifier ::= NumericString PersonalName %{ char *str; %} ::= SET { surName[0] IMPLICIT PrintableString [[s str]] %{ or_concat (parm, OR_S, NULLCP, str); %}, givenName[1] IMPLICIT PrintableString [[s str]] %{ or_concat (parm, OR_G, NULLCP, str); %} OPTIONAL, initials[2] IMPLICIT PrintableString [[s str]] %{ or_concat (parm, OR_I, NULLCP, str); %} OPTIONAL, generalQualifier[3] IMPLICIT PrintableString [[s str]] %{ or_concat (parm, OR_GQ, NULLCP, str); %} OPTIONAL } OrganizationalUnit ::= PrintableString PrivateDomainName %{ char *prmd; %} ::= CHOICE { NumericString [[s prmd]], PrintableString [[s prmd]] } %{ or_concat (parm, OR_PRMD, NULLCP, prmd); %} END %{ static void or_concat (orp, type, str1, str2) OR_ptr *orp; int type; char *str1, *str2; { OR_ptr or1, or2; if (*orp == NULLOR) *orp = or_new (type, str1, str2); else { or1 = or_new (type, str1, str2); if (type == OR_OU) or2 = or_add (*orp, or1, FALSE); else or2 = or_add (*orp, or1, TRUE); if (or2 != NULLOR) *orp = or2; else PP_LOG (LLOG_EXCEPTIONS, ("or_add failed on %s %s", str1 ? str1 : "", str2 ? str2 : "" )); } } %}