DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T s

⟦e06a1f445⟧ TextFile

    Length: 9073 (0x2371)
    Types: TextFile
    Names: »sa-dec.py«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« 
        └─⟦de7628f85⟧ 
            └─⟦this⟧ »isode-6.0/dsap/x500as/sa-dec.py« 

TextFile

-- sa-dec.py - Seleted Attributes 

-- $Header: /f/osi/dsap/x500as/RCS/sa-dec.py,v 7.0 89/11/23 21:50:49 mrose Rel $
--
--
-- $Log:	sa-dec.py,v $
-- Revision 7.0  89/11/23  21:50:49  mrose
-- Release 6.0
-- 

--
--				  NOTICE
--
--    Acquisition, use, and distribution of this module and related
--    materials are subject to the restrictions of a license agreement.
--    Consult the Preface in the User's Manual for the full terms of
--    this agreement.
--
--


SA
	{
	joint-iso-ccitt
	ds(5)
	modules(1)
	selectedAttributeTypes(5)
	}

DEFINITIONS ::=

%{
#include <stdio.h>
#include "quipu/util.h"
#include "quipu/entry.h"

extern  LLog    * log_dsap;

#define decode_UNIV_PrintableString parse_UNIV_PrintableString
#define decode_UNIV_TeletexString   parse_UNIV_TeletexString
#define decode_UNIV_OctetString     parse_UNIV_OctetString
#define decode_UNIV_IA5String 	    parse_UNIV_IA5String
#define decode_UNIV_T61String 	    parse_UNIV_T61String

%}

PREFIXES encode decode print

BEGIN

IMPORTS
	AttributeType
		FROM IF
			{
			joint-iso-ccitt
			ds(5)
			modules(1)
			informationFramework(1)
			};

DECODER decode

FacsimileTelephoneNumber [[P struct fax *]]
        ::=
        %{
                DLOG(log_dsap, LLOG_PDUS, ("About to decode FacsimileTelephoneNumber"));
		parm -> bits = NULLPE;
        %}
        SEQUENCE
        {
	telephoneNumber
		PrintableString [[s  parm->number]]
		%{
			if ( strlen (parm->number) > UB_TELEPHONE_NUMBER) {
				advise (NULLCP, "fax/phone number too long");
				return NOTOK;
			}
		%},
	parameters
		BIT STRING
		%{
		    if ((parm -> bits = pe_cpy ($$)) == NULLPE) {
			advise (NULLCP, "out of memory");
			return NOTOK;
		    }
		%}
		OPTIONAL
        }
        %{
                DLOG(log_dsap, LLOG_PDUS, ("Done decode FacsimileTelephoneNumber"));
        %}

PostalAddress [[P struct postaddr **]]
%{
struct postaddr ** tmp;
int pa_count;
%}
	::=
        %{
                DLOG(log_dsap, LLOG_PDUS, ("About to decode PostalAddress"));
		(*parm) = (struct postaddr *) NULL;
		tmp = parm;
        %}
	SEQUENCE OF 
		%{
		(*tmp) = (struct postaddr *) smalloc (sizeof (struct postaddr));
		pa_count = 0;
		%}
	CHOICE 
		{
		T61String [[s (*tmp)->addrcomp]]
			%{ 
			pa_count++;
			(*tmp)->addrtype = 1;
			if ( strlen ((*tmp)->addrcomp) > UB_POSTAL_STRING) {
				advise (NULLCP, "postal string too long");
				return NOTOK;
			}
			%} ,
		PrintableString [[s (*tmp)->addrcomp]]
			%{ 
			pa_count++;
			(*tmp)->addrtype = 2;
			if ( strlen ((*tmp)->addrcomp) > UB_POSTAL_STRING) {
				advise (NULLCP, "postal string too long");
				return NOTOK;
			}
			%}
		}
		%{	
			tmp = & ((*tmp)->pa_next);
		%}

        %{
		if (pa_count > UB_POSTAL_LINE) {
			advise (NULLCP, "too many addr components");
			return NOTOK;
		}
		(*tmp) = (struct postaddr *) NULL;
                DLOG(log_dsap, LLOG_PDUS, ("Done decode PostalAddress"));
        %}

TelexNumber [[P struct telex *]]
	::=
        %{
                DLOG(log_dsap, LLOG_PDUS, ("About to decode TeletexTerminalIdentifier"));
        %}
	SEQUENCE
	{
		telexNumber	PrintableString [[s parm->telexnumber]]
		%{
			if ( strlen (parm->telexnumber) > UB_TELEX_NUMBER) {
				advise (NULLCP, "telex number too long");
				return NOTOK;
			}
		%},
		countryCode	PrintableString [[s parm->countrycode]]
		%{
			if ( strlen (parm->countrycode) > UB_COUNTRY_CODE) {
				advise (NULLCP, "countrycode too long");
				return NOTOK;
			}
		%},
		answerback	PrintableString [[s parm->answerback]]
		%{
			if ( strlen (parm->answerback) > UB_ANSWERBACK) {
				advise (NULLCP, "answerback number too long");
				return NOTOK;
			}
		%}
	}
        %{
                DLOG(log_dsap, LLOG_PDUS, ("Done decode FacsimileTelephoneNumber"));
        %}

TeletexTerminalIdentifier [[P struct teletex *]]
	::=
        %{
                DLOG(log_dsap, LLOG_PDUS, ("About to decode TeletexTerminalIdentifier"));
        %}
	SEQUENCE
	{
	teletexTerminal
		PrintableString [[s  parm->terminal]]
		%{
			if ( strlen (parm->terminal) > UB_TELETEX_TERMINAL_ID) {
				advise (NULLCP, "teletex string too long");
				return NOTOK;
			}
		%},
	parameters
		SET {
	        graphic-character-sets [0] TeletexString
			[[s parm->graphic]]  OPTIONAL ,
	        control-character-sets [1] TeletexString
			[[s parm->control]]  OPTIONAL,
	        page-formats [2] OCTET STRING 
			[[s parm->page]] OPTIONAL,
	        miscellaneous-terminal-capabilities [3] TeletexString 
			[[s parm->misc]] OPTIONAL,
	        private-use [4] OCTET STRING 
			[[s parm->t_private]] OPTIONAL
		} 
		OPTIONAL
	}
        %{
                DLOG(log_dsap, LLOG_PDUS, ("Done decode TeletexTerminalIdentifier"));
        %}

PreferredDeliveryMethod [[P struct pref_deliv **]]
%{
struct pref_deliv ** tmp;
%}
	::=
        %{
                DLOG(log_dsap, LLOG_PDUS, ("About to decode PreferredDeliveryMethod"));
		(*parm) = (struct pref_deliv *) NULL;
		tmp = parm;
        %}
	SEQUENCE OF 
		%{
		(*tmp) = (struct pref_deliv *) smalloc (sizeof (struct pref_deliv));
		%}
	INTEGER [[i (*tmp)->deliv ]]
	{
	any-delivery-method	(0),
	mhs-delivery		(1),
	physical-delivery	(2),
	telex-delivery		(3),
	teletex-delivery	(4),
	g3-facsimilie-delivery	(5),
	g4-facsimilie-delivery	(6),
	ia5-terminal-delivery	(7),
	videotex-delivery	(8),
	telephone-delivery	(9)
	}
	%{
		tmp = & ((*tmp)->pd_next);
	%}

        %{
                DLOG(log_dsap, LLOG_PDUS, ("Done decode PreferredDeliveryMethod"));
		(*tmp) = (struct pref_deliv *) NULL;
        %}
	

CriteriaItem [[P struct CriteriaItem **]]
    ::=
    %{
        if ((*(parm) = (struct CriteriaItem *)
                calloc (1, sizeof **(parm))) == ((struct CriteriaItem *) 0)) {
            advise (NULLCP, "out of memory");
            return NOTOK;
        }
	(*parm)->attrib = AttrT_alloc();
    %}
          CHOICE
                {
                    equality[0]
                        AttributeType
                        [[p (*parm) -> attrib]]
                        %{ (*parm) -> offset = choice_equality; %},

                    substrings[1]
                        AttributeType
                        [[p (*parm) -> attrib]]
                        %{ (*parm) -> offset = choice_substrings; %},

                    greaterOrEqual[2]
                        AttributeType
                        [[p (*parm) -> attrib]]
                        %{ (*parm) -> offset = choice_greaterOrEqual; %},

                    lessOrEqual[3]
                        AttributeType
                        [[p (*parm) -> attrib]]
                        %{ (*parm) -> offset = choice_lessOrEqual; %},

                    approximateMatch[4]
                        AttributeType
                        [[p (*parm) -> attrib]]
                        %{ (*parm) -> offset = choice_approximateMatch; %}
        }


Criteria [[P struct Criteria **]]
    %{
	struct and_or_set **and_or_set;
    %}
    ::=
    %{
        if ((*parm = (struct Criteria *)
                calloc (1, sizeof **parm)) == ((struct Criteria *) 0)) {
            advise (NULLCP, "out of memory");
            return NOTOK;
        }
        and_or_set = &((*parm) -> un.and_or);
    %}
        CHOICE
            %{
                and_or_set = &((*parm) -> un.and_or);
            %}
        {
            type[0]
                CriteriaItem
                [[p &((*parm) -> un.type)]]
                %{ (*parm) -> offset = Criteria_type; %},

            and[1]
                SET OF
                    %{
                        if ((*(and_or_set) = (struct and_or_set *)
                                calloc (1, sizeof **(and_or_set))) == ((struct and_or_set *) 0)) {
                            advise (NULLCP, "out of memory");
                            return NOTOK;
                        }
                    %}
                    Criteria
                    [[p &((*and_or_set) -> and_or_comp)]]
                    %{ and_or_set = &((*and_or_set) -> and_or_next); (*parm) -> offset = Criteria_and; %},

            or[2]
                SET OF
                    %{
                        if ((*(and_or_set) = (struct and_or_set *)
                                calloc (1, sizeof **(and_or_set))) == ((struct and_or_set *) 0)) {
                            advise (NULLCP, "out of memory");
                            return NOTOK;
                        }
                    %}
                    Criteria
                    [[p &((*and_or_set) -> and_or_comp)]]
                    %{ and_or_set = &((*and_or_set) -> and_or_next); (*parm) -> offset = Criteria_or; %},

            not[3]
                Criteria
                [[p &((*parm) -> un.not)]]
                %{ (*parm) -> offset = Criteria_not; %}
        }


Guide [[ P struct Guide **]]
    ::=
    %{ 
	*parm = (struct Guide *) smalloc (sizeof (struct Guide )); 
	(*parm)->objectClass = NULLOID;
    %}

    SET {
        objectClass [0]
            OBJECT IDENTIFIER
            [[O ((*parm) -> objectClass)]]
            OPTIONAL,
	criteria [1]
		Criteria [[p &((*parm) -> criteria)]]
    }


END