|  | 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 a
    Length: 2245 (0x8c5)
    Types: TextFile
    Names: »asx.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
    └─⟦697af93db⟧ »EurOpenD3/network/snmp/mit-snmp.tar.Z« 
        └─⟦57bbcbe75⟧ 
            └─⟦this⟧ »./snmp/asx.c« 
/*
 *	$Header: asx.c,v 1.1 89/01/11 22:09:11 jrd Exp $
 *	Author: J. Davin
 *	Copyright 1988, 1989, Massachusetts Institute of Technology
 *	See permission and disclaimer notice in file "notice.h"
 */
#include	<notice.h>
#include	<ctypes.h>
#include	<debug.h>
#include	<asn.h>
#include	<asx.h>
#define			asxBufSize		(512)
CVoidType		asxInit ()
{
}
static	CUnsfType	asxTab (level)
CUnsfType		level;
{
	while (level-- != 0) {
		printf ("\t");
	}
	return (level);
}
CBytePtrType		asxTypeToLabel (type)
AsnTypeType		type;
{
	char		*result;
	switch (type) {
	
	case asnTypeInteger:
		result = "INTEGER";
		break;
	case asnTypeOctetString:
		result = "OCTETSTRING";
		break;
	case asnTypeObjectId:
		result = "OBJECTIDENTIFIER";
		break;
	case asnTypeNull:
		result = "NULL";
		break;
	case asnTypeSequence:
		result = "SEQUENCE";
		break;
	case asnTypeSequenceOf:
		result = "SEQUENCE OF";
		break;
	default:
		result = "??";
		break;
	}
	return ((CBytePtrType) result);
}
AsxStatusType		asxPrint (asn, level)
AsnIdType		asn;
CUnsfType		level;
{
	if (asn == (AsnIdType) 0) {
		return (errOk);
	}
	(void) asxTab (level);
	printf ("[ ");
	switch (asnClass (asn)) {
	
	case asnClassUniversal:
		printf ("U");
		break;
	case asnClassContext:
		printf ("C");
		break;
	case asnClassApplication:
		printf ("A");
		break;
	case asnClassPrivate:
		printf ("P");
		break;
	default:
		printf ("?");
		break;
	}
	printf (" %d ] %s {\n", asnTag (asn),
		asxTypeToLabel (asnType (asn)));
	switch (asnType (asn)) {
	case asnTypeInteger:
	case asnTypeOctetString:
	case asnTypeObjectId:
		{
			CByteType		buf [ asxBufSize ];
			CBytePtrType		cp;
			AsnLengthType		n;
			cp = buf;
			(void) asxTab (level + 1);
			for (n = asnContents (asn, buf, asxBufSize); n > 0;
				n--) {
				printf (" %02.02X", *cp++);
			}
			printf ("\n");
		}
		break;
	case asnTypeSequence:
	case asnTypeSequenceOf:
		{
			AsnIndexType		i;
			AsnIdType		item;
			item = (AsnIdType) 0;
			for (i =  1;  i <= asnSons (asn);
				i += (asnSons (item) + 1)) {
				item = asnFree (item);
				item = asnComponent (asn, i);
				(void) asxPrint (item, level + 1);
			}
		}
		break;
	default:
		break;
	}
	(void) asxTab (level);
	printf ("}\n");
	return (errOk);
}